Ranljivosti programske opreme so pomemben problem v kibernetski varnosti. Omogočajo napad na programske izdelke in ko so ti izdelki povezani s sicer varnimi omrežji, lahko zagotovijo vstopno točko za hekerje.
Vsi profesionalni programski izdelki so pred izdajo temeljito testirani. Žal so ranljivosti še vedno pogost pojav. Eden od načinov za iskanje dodatnih ranljivosti je uporaba tehnike testiranja programske opreme, znane kot fuzzing.
Kaj je torej fuzzing in kako deluje?
Kaj je Fuzzing?
Fuzzing je avtomatizirana tehnika testiranja programske opreme, ki poskuša najti ranljivosti z naključnimi vhodi.
Programska oprema se pogosto obnaša nepredvidljivo, ko uporabnik vnese vnos, ki ni zahtevan. Fuzzing je praksa vnosa velikih količin nepričakovanih vnosov in snemanja dogajanja. Ideja je, da lahko uporabnik nato spremlja programsko opremo in ugotovi, ali so prisotne kakšne ranljivosti ali ne.
Fuzzing se uporablja za testiranje programskih izdelkov in varnostni strokovnjaki za ugotavljanje, ali je omrežje varno. Uporabljajo ga tudi hekerji, ki vadijo fuzzing, da bi našli ranljivosti, ki jih lahko uporabijo sami.
Ranljivosti, ki jih odkrije fuzzing, se zelo razlikujejo. Nepričakovan vnos lahko povzroči, da se programska oprema preprosto zruši. Lahko pa vrne tudi zasebne podatke ali uporabniku omogoči dostop do delov programske opreme, ki bi sicer bili prepovedani.
Kakšne so prednosti Fuzzinga?
Fuzzing je le eden od mnogih načinov, kako lahko programske izdelke testiramo glede ranljivosti. Priljubljena je, ker:
- Fuzzing je popolnoma avtomatiziran. Ko je fuzzing program nastavljen, lahko še naprej išče ranljivosti brez človeškega vnosa.
- Fuzzing lahko najde ranljivosti, ki jih druge tehnike testiranja programske opreme ne najdejo. Zaradi tega se pogosto uporablja poleg ročnih tehnik.
- Hekerji pogosto uporabljajo Fuzzing za poiščite ranljivosti ničelnega dne. Uporaba istih tehnik kot hekerji omogoča razvijalcem, da poiščejo ranljivosti nič, preden to storijo.
Kako deluje fuzzing?
Orodje, ki se uporablja za fuzziranje, ima običajno tri komponente. Pogosto jih imenujejo pesnik, kurir in orakel.
Pesnik
Pesnik začne postopek in je odgovoren za ustvarjanje testnega primera. Testni primer je dolg seznam možnih vhodov.
Kurir
Kurir vstavi vse naključne vnose v ciljno programsko opremo. Fuzzers so zasnovani tako, da to storijo samodejno, kar omogoča testiranje velikih količin vhodov v razsutem stanju.
Oracle
Oracle preveri, ali kateri od vhodov povzroči, da programska oprema naredi nekaj drugega, kot je bila zasnovana. Če se fuzzing izvaja za zakonite namene, je vedenje mogoče ponoviti in popraviti. Ali pa če fuzzing izvaja heker in je nepričakovano vedenje koristno, se lahko uporabi za zlonamerne namene.
Kako napadalci uporabljajo Fuzzing?
Fuzzing je priljubljena tehnika med hekerji, saj jim omogoča, da najdejo ranljivosti v programski opremi brez dostopa do izvorne kode. Ker je fuzziranje avtomatizirano, ga je tudi enostavno izvesti. Če heker odkrije ranljivost, bo morda lahko izvedel naslednje napade.
DDoS napadi
Če fuzzing odkrije, da določeni vhodi zahtevajo dolgo časa za obdelavo, se lahko te informacije uporabijo za sprožitev DDoS napada. DDoS napad vključuje pošiljanje toliko zahtev v sistem, da preneha delovati. Fuzzing omogoča, da se zahteve prilagodijo tako, da zahtevajo največ sistemskih virov za odgovor.
Injekcija SQL
Napad z injekcijo SQL je, ko so zlonamerni stavki SQL poslani v aplikacijo. Če ti stavki niso ustrezno sanirani, lahko napadalcu omogočijo interakcijo z bazo podatkov. To jim lahko omogoči krajo podatkov ali njihovo spreminjanje. Fuzzing je učinkovito orodje za poskus velike količine stavkov SQL in ugotavljanje, ali kateri dajo ugoden odziv.
Prelivanje medpomnilnika
Napad prekoračitve medpomnilnika je, ko je v medpomnilnik programa dodanih več podatkov, kot jih lahko prenese. V tem scenariju je možno, da heker povzroči, da ta program izvede zlonamerno kodo. To se lahko uporabi za krajo podatkov ali pridobitev nepooblaščenega dostopa. Fuzzing se uporablja za iskanje vhodov, ki lahko povzročijo prelivanje medpomnilnika.
Vrste Fuzzinga
Fuzing orodja lahko razvrstimo glede na to, kako so ustvarjeni testni primeri in koliko je znanega o sistemu.
Dumb vs. Pametno
Dumb fuzzing preprosto doda velike količine naključnih vnosov. Ne izbere vnosov, za katere je najverjetneje, da jih bo aplikacija sprejela. To olajša izvajanje, ne da bi vedeli ničesar o programski opremi; vendar je tudi zelo neučinkovita, saj bo večina vložkov zavrnjenih.
Pametno fuzziranje generira vnose, ki jih bo aplikacija verjetno sprejela. Zahteva, da uporabnik razume, kateri format vnosa je sprejemljiv, in nato ustvari velike količine vhodov v tej obliki. Pametno fuzziranje zahteva več truda in znanja o izdelkih za izvedbo, vendar je bistveno bolj učinkovito.
Mutacijski vs. Generacijski
Mutacijski fuzzerji sprejmejo vhod, ki je bil prej sprejet, in ga naredijo manjše spremembe. To omogoča ustvarjanje vnosov, ki bodo verjetno sprejeti brez poznavanja sprejete oblike.
Generacijski fuzzerji ustvarjajo popolnoma nove vhode na podlagi tega, kar je znano o sprejeti obliki.
Bela škatla vs. Črna škatla
Črno polje fuzzing se uporablja brez kakršnih koli informacij o aplikaciji, ki se testira. Je manj učinkovit kot fuzzing v belih škatlah, vendar ga je mogoče uporabiti v kateri koli aplikaciji brez dostopa do izvorne kode. Zaradi tega je priljubljen med hekerji.
Belo polje fuzzing uporablja informacije o aplikaciji, ki se testira, da ustvari vhode, ki bodo najverjetneje sprejeti in povzročijo ranljivosti. Uporabljajo ga predvsem razvijalci programske opreme, ker je bolj učinkovit kot črno skrinjico fuzzing.
Fuzzing je zmogljiva metoda testiranja programske opreme, ki jo uporabljajo razvijalci programske opreme, varnostni strokovnjaki in hekerji. Zahteva minimalen trud za implementacijo in je sposoben najti ranljivosti, ki jih druge tehnike testiranja programske opreme ne.
Z varnostnega vidika je še posebej pomemben, ker se pogosto uporablja za odkrivanje ranljivosti ničelnega dne. Te ranljivosti lahko odkrijejo in odpravijo varnostni strokovnjaki ali pa jih odkrijejo in izkoristijo hekerji.