Ohjelmiston haavoittuvuudet ovat merkittävä kyberturvallisuuden ongelma. Niiden avulla voidaan hyökätä ohjelmistotuotteisiin, ja kun tuotteet on kytketty muuten suojattuun verkkoon, ne voivat tarjota sisääntulopisteen hakkereille.
Kaikki ammattimaiset ohjelmistotuotteet testataan perusteellisesti ennen julkaisua. Valitettavasti haavoittuvuudet ovat edelleen yleisiä. Yksi tapa löytää lisää haavoittuvuuksia on käyttää ohjelmistojen testaustekniikkaa, joka tunnetaan nimellä fuzzing.
Mitä fuzzing sitten on ja miten se toimii?
Mikä on Fuzzing?
Fuzzing on automatisoitu ohjelmistotestaustekniikka, joka yrittää löytää haavoittuvuuksia satunnaisten syötteiden avulla.
Ohjelmisto käyttäytyy usein arvaamattomasti, kun käyttäjä syöttää muun kuin pyydetyn syötteen. Fuzzing on käytäntö syöttää suuria määriä odottamattomia syötteitä ja tallentaa tapahtumia. Ajatuksena on, että käyttäjä voi sitten valvoa ohjelmistoa ja määrittää, onko haavoittuvuuksia olemassa.
Fuzzingia käytetään ohjelmistotuotteiden testaamiseen ja tietoturva-ammattilaiset määrittämään, onko verkko suojattu. Sitä käyttävät myös hakkerit, jotka harjoittelevat fuzzingia löytääkseen haavoittuvuuksia, joita he voivat itse käyttää.
Fuzzingin avulla löydetyt haavoittuvuudet vaihtelevat suuresti. Odottamaton syöttö voi saada ohjelmiston yksinkertaisesti kaatumaan. Mutta se voi myös palauttaa yksityisiä tietoja tai antaa käyttäjän käyttää ohjelmiston osia, jotka muuten olisivat kiellettyjä.
Mitkä ovat fuzzingin edut?
Fuzzing on vain yksi monista tavoista, joilla ohjelmistotuotteita voidaan testata haavoittuvuuksien varalta. Se on suosittu, koska:
- Fuzzing on täysin automatisoitu. Kun sumea ohjelma on määritetty, se voi jatkaa haavoittuvuuksien etsimistä ilman ihmisen panosta.
- Fuzzing voi löytää haavoittuvuuksia, joita muut ohjelmistojen testaustekniikat eivät löydä. Tästä syystä sitä käytetään usein manuaalisten tekniikoiden lisäksi.
- Hakkerit käyttävät usein sumennusta löytää nollapäivän haavoittuvuuksia. Käyttämällä samoja tekniikoita kuin hakkerit, kehittäjät voivat löytää nollapäivän haavoittuvuuksia ennen kuin he tekevät.
Kuinka Fuzzing toimii?
Sukattamiseen käytettävässä työkalussa on tyypillisesti kolme osaa. Heitä kutsutaan usein runoilijaksi, kuriiriksi ja oraakkeliksi.
Runoilija
Runoilija aloittaa prosessin ja on vastuussa testitapauksen luomisesta. Testitapaus on pitkä luettelo mahdollisista syötteistä.
Kuriiri
Kuriiri lisää kaikki satunnaiset syötteet kohdeohjelmistoon. Fuzzers on suunniteltu tekemään tämä automaattisesti, jolloin suuria määriä syötteitä voidaan testata massana.
Oraakkeli
Oraakkeli tarkistaa, saako jokin syötteistä ohjelmiston tekemään jotain muuta kuin sen on suunniteltu tekemään. Jos fuzzing suoritetaan laillisissa tarkoituksissa, käyttäytyminen voidaan sitten kopioida ja korjata. Tai jos hakkeri suorittaa fuzzingin ja odottamaton toiminta on hyödyllistä, sitä voidaan käyttää haitallisiin tarkoituksiin.
Kuinka hyökkääjät käyttävät fuzzia?
Fuzzing on suosittu tekniikka hakkereiden keskuudessa, koska sen avulla he voivat löytää ohjelmiston haavoittuvuuksia ilman pääsyä lähdekoodiin. Koska fuzzing on automatisoitu, se on myös helppo suorittaa. Jos hakkeri löytää haavoittuvuuden, hän saattaa pystyä suorittamaan seuraavat hyökkäykset.
DDoS-hyökkäykset
Jos fuzzing havaitsee, että tiettyjen syötteiden käsittely vaatii pitkän ajan, näitä tietoja voidaan käyttää DDoS-hyökkäyksen käynnistämiseen. DDoS-hyökkäys järjestelmään lähetetään niin monta pyyntöä, että se lakkaa toimimasta. Fuzzing mahdollistaa pyyntöjen räätälöinnin niin, että niihin vastaaminen vaatii eniten järjestelmäresursseja.
SQL-injektio
SQL-injektiohyökkäys kun haitalliset SQL-käskyt lähetetään sovellukseen. Jos näitä lausuntoja ei ole puhdistettu kunnolla, ne voivat antaa hyökkääjän olla vuorovaikutuksessa tietokannan kanssa. Tämä saattaa antaa heille mahdollisuuden varastaa tietoja tai muokata niitä. Fuzzing on tehokas työkalu suurten SQL-käskymäärien yrittämiseen ja sen määrittämiseen, tuottaako jokin myönteistä vastausta.
Puskurin ylivuoto
Puskurin ylivuotohyökkäys on, kun ohjelman puskuriin lisätään enemmän dataa kuin se pystyy käsittelemään. Tässä tilanteessa hakkeri voi saada ohjelman suorittamaan haitallista koodia. Tätä voidaan käyttää tietojen varastamiseen tai luvaton pääsyyn. Fuzzingia käytetään etsimään tuloja, jotka voivat aiheuttaa puskurin ylivuodon.
Fuzzingin tyypit
Fuzzing-työkalut voidaan luokitella sen perusteella, kuinka testitapaukset luodaan ja kuinka paljon järjestelmästä tiedetään.
Tyhmä vs. Fiksu
Tyhmä fuzzing yksinkertaisesti lisää suuria määriä satunnaisia syötteitä. Se ei valitse syötteitä, jotka sovellus todennäköisimmin hyväksyy. Tämä helpottaa käyttöönottoa tietämättä mitään ohjelmistosta; Se on kuitenkin myös erittäin tehoton, koska useimmat syötteet hylätään.
Älykäs fuzzing luo syötteitä, jotka sovellus todennäköisesti hyväksyy. Se edellyttää, että käyttäjä ymmärtää, mikä syöttömuoto on hyväksyttävä, ja luo sitten suuria määriä syötteitä kyseisessä muodossa. Älykäs fuzzing vaatii enemmän vaivaa ja tuotetietoa toteuttaakseen, mutta se on huomattavasti tehokkaampi.
Mutaatio vs. Sukupolvi
Mutaatiofuzzerit ottavat syötteen, joka on aiemmin hyväksytty, ja tekevät siihen pieniä muutoksia. Tämä mahdollistaa syötteiden generoinnin, jotka todennäköisesti hyväksytään ilman hyväksytyn muodon tuntemista.
Sukupolvien fuzzerit luovat täysin uusia syötteitä sen perusteella, mitä hyväksytystä formaatista tiedetään.
Valkoinen laatikko vs. Musta laatikko
Black box fuzzingia käytetään ilman testattavan sovelluksen tietoja. Se on vähemmän tehokas kuin valkoisen laatikon fuzzing, mutta sitä voidaan soveltaa mihin tahansa sovellukseen ilman pääsyä lähdekoodiin. Tämä tekee siitä suositun hakkereiden keskuudessa.
White box fuzzing käyttää testattavan sovelluksen tietoja luodakseen syötteitä, jotka todennäköisimmin hyväksytään ja jotka aiheuttavat haavoittuvuuksia. Sitä käyttävät ensisijaisesti ohjelmistokehittäjät, koska se on tehokkaampaa kuin mustan laatikon fuzzing.
Fuzzing on tehokas ohjelmistojen testausmenetelmä, jota ohjelmistokehittäjät, tietoturva-ammattilaiset ja hakkerit käyttävät. Sen käyttöönotto vaatii vain vähän vaivaa, ja se pystyy löytämään haavoittuvuuksia, joita muut ohjelmistojen testaustekniikat eivät löydä.
Se on erityisen tärkeä tietoturvan kannalta, koska sitä käytetään usein nollapäivän haavoittuvuuksien löytämiseen. Tietoturva-ammattilaiset voivat löytää ja korjata nämä haavoittuvuudet tai hakkerit voivat löytää ja hyödyntää niitä.