You are here: TUTWiki>Tietoturva/Tutkielmat>Tutkielmat?>TestausCodenomicon (revision 3)

TTY / Tietoturvallisuuden jatkokurssi / Harjoitustyö 2012 / Luonnosvaihe

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

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ä. Käytännöllinen esimerkki fuzzing-testauksesta on lähettää epämuodostunut HTTP-pyyntö internetpalvelimelle. [9]

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. Tässä prosessissa on neljä vaihetta: analysointi, testaus, raportointi sekä haavoittuvuuden pienentäminen, lieventäminen. Analysointivaiheessa Codenomiconin verkkoanalysaattorilla kartoitetaan todellisen verkon liikennettä ja määritellään mitä tarvitsee testata kyseisessä verkossa. Toisessa vaiheessa testataan analysoidut kohdat. Prosessin kolmannessa vaiheessa työkalu tuottaa erilaiset raportit eri kohderyhmille. Lievennysvaiheessa työkalu tarjoaa nopeasti ja helposti mahdollisuuden toistaa haavoittuvuudet, esittää regressiotestauksen sekä verifioi korjaukset. [6]

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). Haavoittuvuutta 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]

Lähteet

* [1] Ina Schieferdecker, 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] [WWW] [Viitattu 31.10.2012] Saatavissa: http://www.codenomicon.com/solutions/unknown-vulnerability-management/

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

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

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

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 | r4 < r3 < r2 < r1 | 
Topic revision: r3 - 01 Nov 2012 - 20:57:55 - 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