TTY / Tietoturvallisuuden jatkokurssi / Harjoitustyö 2012

Anna-Kaisa Seppälä

Ohjelmien turvallinen testaus - Codenomicon

Johdanto

Ohjelmien turvallisuuden testaaminen on oma testauksen lajinsa. Codenomicon on Oulusta lähtöisin oleva yritys, joka tekee testausohjelmistoja, joilla pyritään hallitsemaan ja löytämään testattavien systeemien haavoittuvuuksia. Codenomiconin Defensics-tuotteet perustuvat turvallisuustestausautomaation menetelmään ’fuzzing’, jossa testattavalle systeemille annetaan syötteenä viallisia tai odottamattomia syötteitä. Tässä työssä selvitetään ohjelmien turvallisuuden testausta ja erityisesti Codenomiconin kehittelemiä testausohjelmistoja. Työssä esitellään myös joitakin Codenomiconin tuotteilla löytyneitä haavoittuvuuksia ja miten näiden kanssa on toimittu.

Turvallisuustestaus

Monen tyyppisissä kyberhyökkäyksissä ohjelmiston haavoittuvuus mahdollistaa ensimmäisen pääsyn hyökkäyksen kohteeseen. Tuntemattomat haavoittuvuudet ovat suurin uhka IT-turvallisuudelle, koska näille uhille ei ole puolustusta. [12]

Ohjelmistopohjaisten systeemien turvallisuustestaukseen voidaan käyttää fuzz-testausta. Sillä tarkoitetaan testausta, jossa testattavalle systeemille annetaan syötteenä viallisia, odottamattomia tai satunnaisia syötteitä. Tarkoituksena on paljastaa systeemin haavoittuvuuksia saattamalla systeemi virhetilaan. Voidaan esimerkiksi muuttaa sisällöltään oikeaa viestiä niin, että viestin osia järjestellään uudelleen, toistetaan niitä, pudotetaan osia pois tai muutetaan viestin tyyppiä. [1]

On olemassa kahden tyyppisiä haavoittuvuuksia: tunnettuja ja tuntemattomia. Tunnetut haavoittuvuudet on jo löydetty ja raportoitu. Tuntemattomat zero-day-haavoittuvuudet ovat suuri uhka yritysten verkoille. Zero-day-haavoittuvuudella tarkoitetaan odottamattomia, tuntemattomia uhkia, joihin valmistaja ei osaa varautua, kun ei tiedä tällaisen haavoittuvuuden olemassaolosta. Valmistajan ohjelmistossa on aukko, josta valmistaja ei tiedä. Tätä aukkoa hakkerit voivat käyttää toimissaan, koska valmistaja ei ole tästä aukosta tietoinen. Zero-day-hyökkäys voi olla tunkeutuva haittaohjelma, urkintaohjelma tai se voi sallia hakkerille pääsyn käyttäjän tietoihin. Zero-day-termi tulee uhan luonteesta, se on muille paitsi hakkereille tuntematon. [7; 8]

Erityisesti uusissa teknologioissa ja koodilaajennuksissa vilisee tunnistamattomia haavoittuvuuksia. Paras tapa tuntemattomien haavoittuvuuksien löytämiseen on ’fuzzing’. Kun työkaluilla – jotka perustuvat fuzzing-menetelmään – löydetään haavoittuvuuksia ennakoivasti, tämä jättää enemmän aikaa korjauksille ennen kuin testattava tuote on julkisesti saatavilla. Ennakoiva testaus on tehokkainta tuntemattomien haavoittuvuuksien hallintaa, koska mitä aiemmin haavoittuvuudet löydetään, sitä helpompaa ja halvempaa niiden korjaus on. Tuntemattomien haavoittuvuuksien hallinta ei rajoitu ainoastaan kehityksen aikaiseen testaukseen. Tähän hallintaan kuuluu myös turvallisuuspäivitykset, korjauspäivitykset ja järjestelmäintegrointi. Haavoittuvuuksien korjaus lisää turvallisuuden lisäksi myös systeemin laatua. [6]

Fuzzing-testaus ei vaadi pääsyä lähdekoodiin. Testattava systeemi voidaan nähdä mustana laatikkona, jossa on yksi tai useampia ulkoisia rajapintoja, joiden kautta voidaan testausta tehdä, mutta ilman mitään muuta tietoa systeemin sisällöstä. Fuzzing-testausta ovat alun perin käyttäneet krakkerit, jotka ovat etsineet haavoittuvuuksia, joita voisivat hyödyntää. Käytännöllinen esimerkki fuzzing-testauksesta on lähettää epämuodostunut HTTP-pyyntö internetpalvelimelle. [9; 10]

Codenomiconin tuntemattomien haavoittuvuuksien hallinnan prosessi

Codenomiconin tuntemattomien haavoittuvuuksien hallinnan elinkaari on turvallisuuden ja laadun varmistuksen prosessi. Prosessin tarkoitus on varmistaa turvallisuus ja vakaus yrityksen sisällä tehdyissä sekä kolmansien osapuolten tekemissä ohjelmistoissa löytämällä ja korjaamalla tuntemattomat haavoittuvuudet. [6]

Tässä prosessissa on neljä vaihetta: analysointi, testaus, raportointi sekä haavoittuvuuden pienentäminen, lieventäminen. Analysointivaiheessa Codenomiconin verkkoanalysaattori tallentaa liikennettä useista tarkasteltavan verkon kohdista. Sitten analysaattori luo automaattisesti talletetusta datasta havainnekuvia eri näkökulmista. Näin voidaan määritellä mitä tarvitsee testata kyseisessä verkossa. Toisessa vaiheessa testataan analysoidut kohdat. Testit sisältävät kaikki mahdolliset protokollaviestit, joten ne voivat kommunikoida testattavan kohteen kanssa. Prosessin kolmannessa vaiheessa työkalu tuottaa erilaiset raportit eri kohderyhmille: johto saa korkean tason yleisraportin testien suorituksesta. Työkalu tuottaa lokitiedostoja, taulukkoja sekä kattavan testitapausdokumentaation, jossa on myös PCAP-liikenneraportit. Yksityiskohtaisten tulosten avulla testaajan on helppo päättää, mitkä haavoittuvuudet pitää korjata ensimmäisenä. Lievennysvaiheessa työkalu tarjoaa nopeasti ja helposti mahdollisuuden toistaa haavoittuvuudet, suorittaa regressiotestauksen sekä verifioi korjaukset. [6]

Työkalussa on yhteistyöalusta, jonka avulla käyttäjät voivat ottaa etäyhteyden siihen. Näin käyttäjät organisaation maantieteellisesti eri osissa voivat käyttää samaa systeemiä, suorittaa testejä, jakaa tuloksia ja muuta dokumentaatiota sekä toistaa haavoittuvuuksia. Codenomicon tarjoaa myös testaus-, koulutus- ja auditointipalveluita tuotteisiinsa liittyen. [6]

Codenomiconin tuotteita

Defensics

Codenomiconin Defensics-tuote on kehitelty tuntemattomien haavoittuvuuksien hallintaan. Tätä tuotetta käyttävät verkkolaitteiden valmistajat, operaattorit, yritykset, kulutuselektroniikkaa valmistavat yritykset sekä hallinnolliset (julkiset) organisaatiot korkean laatutason ennalta ehkäisevään testaukseen. Yritykset ovat hankkineet Defensics:n ratkaisun vähentääkseen uhkia heidän liiketoiminnan mainetta ja myyntiä kohtaan. Defensics perustuu fuzzing-menetelmään. Defensics lähettää järjestelmällisesti viallisia tai odottamattomia syötteitä testattavalle systeemille, jotta paljastuisi ohjelmistovirheitä ja –haavoittuvuuksia tehokkaammin. Koska hakkerointi on nykyisin entistä organisoidumpaa ja aivan oma liiketoimintansa (eli hakkerit saavat kunnon palkkion työstään), on entistä tärkeämpää hallita uhkille altistuminen ja käyttää kehittynyttä teknologiaa uhkien havaitsemiseen ja torjumiseen. [13]

Defensics:n mallipohjaiset fuzz-testausmodulit ovat saatavilla yli 200 standardiverkkoprotokollaan. Testijoukko pohjautuu protokollamalleihin. Testitapaukset luodaan automaattisesti, joten niitä ei tarvitse tehdä manuaalisesti. Testit pystyvät tunkeutumaan syvälle testattavaan systeemiin. Työkalussa on selkeä ja looginen käyttöliittymä, joka opastaa testausprosessin jokaisessa vaiheessa. Myös komentoriviä on mahdollista käyttää, näin voidaan ottaa kolmansien osapuolien työkalut sekä skriptit käyttöön. Työkalun suorituskyky on hyvä, se voi luoda ja ajaa tuhansia testitapauksia sekunnissa. Täsmälliset raportit, joista on suorat linkit testitapauksiin ja osoitus havaittuihin ongelmiin, tuotetaan työkalusta. Näin yksityiskohtaisten tulosten jakaminen onnistuu organisaation sisällä. Löydetyt virheet ovat toistettavista ja niistä on saatavilla lokitiedot. Välitön virheen toisto helpottaa pikaista reagoimista ja korjauksen todentamista. [13]

Fuzz-o-Matic

Fuzz-o-Matic-työkalun avulla voidaan testata paikasta riippumatta: salattua yhteyttä käyttäen ohjelman voi ladata pilvipalveluun. Toistettavat testitulokset ovat saatavilla, aikaa ja rahaa säästyy. Ajettavalle, mutta testaamattomalle ohjelmistolle työkalu antaa pidemmän ajan korjata virheitä ennen ohjelmiston markkinoille päästämistä. Kun testitapaus ei mene läpi, Fuzz-o-Matic tuottaa ohjelmoijaystävällisen lokitiedoston tapahtuneesta virhetapauksesta sekä tiedot liiallisesta CPU-kuormasta ja muistinkulutuksesta. Kun virhe on korjattu, uusi ohjelmaversio voidaan testata, jotta varmistutaan korjauksen toiminnallisuudesta. [14]

Fuzz-o-Matic täydentää staattisten analyysityökalujen käyttöä sekä löytää virheitä, joita staattisen analysointityökalut jättävät huomaamatta. Lisäksi Fuzz-o-Matic raportoi ainoastaan todellisen maailman toistettavia virhetilanteita, näin siis keskitytään todellisten, merkityksellisten virheiden korjaukseen. [14]

Esimerkkejä Codenomiconin testeillä tehdyistä löydöistä

Tämän vuoden toukokuussa Codenomiconin pilvipohjaisella Fuzz-o-Matic –testialustalla löydettiin haavoittuvuus OpenSSL:stä CBC-moodia (Cipher Block Chaining) käyttävien salausmenetelmien käsittelyssä. Onnistunut hyökkäys olisi voinut johtaa palvelunestotilaan. Haavoittuvuus vaikutti DTLS-protokollaan sekä TLS-protokollien uusimpiin versioihin 1.1 ja 1.2. Codenomiconilta toimitettiin yksityiskohtainen Fuzz-o-Maticin tuottama vikaraportti löydetystä haavoittuvuudesta viranomaisille ja OpenSSL-yhteisölle. OpenSSL-yhteisö julkaisi haavoittuvuuteen korjauksen nopeasti. [2; 3; 4]

Kesällä 2012 Codenomiconin CROSS-projektissa löydettiin kaksi haavoittuvuutta ISC DHCP –palvelusta (Dynamic Host Configuration Protocol, Internet Systems Consortium). Haavoittuvuuksia olisi ollut mahdollista käyttää hyväksi niin, että palvelimelle olisi lähetetty tietyllä tavalla muokattuja DHCP- tai BOOTP-paketteja. Haavoittuvuus liittyi puskurin ylivuotoon DHCPv6-kyselyiden asiakastunnisteiden käsittelyssä, mikä olisi voinut johtaa palvelunestotilaan tai mahdollisesti hyökkääjän ohjelmakoodin suoritukseen. [5]

Keväällä 2012 CROSS-projektin käyttäessä Codenomiconin HTTP-palvelinten testausohjelmistoa, löydettiin haavoittuvuus Apache Traffic Serveristä. Apache Traffic Server on muun muassa kuormantasaukseen sopiva välimuistia käyttävä välityspalvelin. Sitä käytetään korkean tietoliikennekuorman ympäristöissä. Codenomiconin testausohjelmisto löysi Apache Traffic Server –sovelluksen HTTP-protokollan toteutustavasta pinon ylivuotohaavoittuvuuden. Hyökkääjä voi haavoittuvuuden avulla aiheuttaa palvelunestotilan tai mahdollisesti suorittaa omaa ohjelmakoodiaan kohdejärjestelmässä. Codenomicon ja Apache Traffic Server –kehitysyhteisö koordinoivat haavoittuvuuden jatkotoimenpiteet yhteistyössä. [11]

Yhteenveto

Tuntemattomat haavoittuvuudet ovat suuri uhka yritysten verkoille. Jos nämä haavoittuvuudet havaitaan mahdollisimman aikaisessa vaiheessa ennen tuotteen markkinoille menoa, jää aikaa haavoittuvuuksien korjaukseen ja hakkerin tunkeutuminen tuotteeseen saadaan estettyä. Codenomicon-yritys tekee tällaisia fuzzing-menetelmään perustuvia testaustyökaluja. Näillä työkaluilla on löydetty useita haavoittuvuuksia eri tyyppisistä ohjelmistoista ja näin haavoittuvuudet on saatu korjattua ja tuotteiden laatu on parantunut.

Lähteet

* [1] Schieferdecker, I. 2012. IEEE Fifth International Conference on Software Testing, Verification and Validation. Model-Based Fuzz Testing. [WWW]. [Viitattu 30.10.2012]. Saatavissa: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6200192&tag=1

* [2] Esimerkki Codenomiconin testeillä tehdystä haavoittuvuudesta OpenSSL:ssä. [WWW] [Viitattu 31.10.2012] Saatavissa: http://www.codenomicon.com/news/press-releases/2012-05-11.shtml

* [3] Esimerkki Codenomiconin testeillä tehdystä haavoittuvuudesta OpenSSL:ssä. [WWW] [Viitattu 31.10.2012] Saatavissa: http://www.tietoviikko.fi/artikkelikommentointi/article463678.ece?action=comment&posting=808140

* [4] Esimerkki Codenomiconin testeillä tehdystä haavoittuvuudesta OpenSSL:ssä. [WWW] [Viitattu 31.10.2012] Saatavissa: http://www.cert.fi/haavoittuvuudet/2012/haavoittuvuus-2012-088.html

* [5] Esimerkki Codenomiconin testeillä tehdystä haavoittuvuudesta DHCP:ssä. [WWW] [Viitattu 31.10.2012] Saatavissa: http://www.cert.fi/haavoittuvuudet/2012/haavoittuvuus-2012-120.html

* [6] Codenomiconin tuntemattomien haavoittuvuuksien hallinnan prosessi. [WWW] [Viitattu 31.10.2012] Saatavissa: http://www.codenomicon.com/solutions/unknown-vulnerability-management/

* [7] Symantec: zero-day-haavoittuvuus. [WWW] [Viitattu 1.11.2012] Saatavissa: http://www.symantec.com/threatreport/topic.jsp?id=vulnerability_trends&aid=zero_day_vulnerabilities

* [8] PC-tools: zero-day-haavoittuvuus. [WWW] [Viitattu 1.11.2012] Saatavissa: http://www.pctools.com/security-news/zero-day-vulnerability/

* [9] Codenomicon: fuzzing-testaus. [WWW] [Viitattu 31.10.2012] Saatavissa: http://www.codenomicon.com/products/buzz-on-fuzzing.shtml

* [10] Juuso, A-M, Rontti, T., Takanen, A. 2012. Preventing DoS Attacks in NGN Networks with Proactive Specification-Based Fuzzing. IEEE Communications Magazine. September 2012. [WWW] [Viitattu 28.11.2012] Saatavissa: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6295728

* [11] Esimerkki Codenomiconin testeillä tehdystä haavoittuvuudesta Apache Traffic Serverissä. [WWW] [Viitattu 28.11.2012] Saatavissa: http://www.cert.fi/haavoittuvuudet/2012/haavoittuvuus-2012-054.html

* [12] [WWW] [Viitattu 29.11.2012] Saatavissa: http://www.codenomicon.com/resources/whitepapers/Codenomicon_Corporate_Backgrounder.pdf

* [13] Codenomiconin tuote Defensics. [WWW] [Viitattu 29.11.2012] Saatavissa: http://www.codenomicon.com/defensics/

* [14] Codenomiconin tuote Fuzz-o-Matic. [WWW] [Viitattu 29.11.2012] Saatavissa: http://www.codenomicon.com/fuzzomatic/

SivuTiedotLaajennettu edit

Vaativuus Jatko
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Titu-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r6 < r5 < r4 < r3 | 
Topic revision: r6 - 07 Dec 2012 - 21:06:54 - AKaisaSeppala?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback