Softverske ranjivosti značajan su problem u kibernetičkoj sigurnosti. Dopuštaju napad na softverske proizvode i kada su ti proizvodi povezani s inače sigurnim mrežama, mogu biti ulazna točka za hakere.

Svi profesionalni softverski proizvodi temeljito su testirani prije objavljivanja. Nažalost, ranjivosti su još uvijek česta pojava. Jedan od načina za pronalaženje dodatnih ranjivosti je korištenje tehnike testiranja softvera poznate kao fuzzing.

Dakle, što je fuzzing i kako funkcionira?

Što je fuzzing?

Fuzzing je automatizirana tehnika testiranja softvera koja pokušava pronaći ranjivosti koristeći nasumične ulaze.

Softver se često ponaša nepredvidivo kada korisnik unese unos koji nije zatražen. Fuzzing je praksa unosa velike količine neočekivanih ulaza i bilježenja onoga što se događa. Ideja je da korisnik tada može nadzirati softver i odrediti jesu li prisutne ranjivosti ili ne.

Fuzzing se koristi za testiranje softverskih proizvoda i od strane sigurnosnih stručnjaka za utvrđivanje je li mreža sigurna. Također ga koriste hakeri koji prakticiraju fuzzing kako bi pronašli ranjivosti koje i sami mogu koristiti.

instagram viewer

Ranjivosti otkrivene fuzziranjem uvelike variraju. Neočekivani unos može uzrokovati jednostavno rušenje softvera. Ali također može vratiti privatne podatke ili omogućiti korisniku pristup dijelovima softvera koji bi inače bili izvan ograničenja.

Koje su prednosti fuzzinga?

Fuzzing je samo jedan od mnogih načina na koje se softverski proizvodi mogu testirati na ranjivosti. Popularno je jer:

  • Fuzzing je potpuno automatiziran. Nakon što je fuzzing program postavljen, može nastaviti tražiti ranjivosti bez ljudskog unosa.
  • Fuzzing može pronaći ranjivosti koje druge tehnike testiranja softvera nemaju. Zbog toga se često koristi uz ručne tehnike.
  • Hakeri često koriste fuzzing za pronaći ranjivosti nultog dana. Korištenje istih tehnika kao i hakeri omogućuje programerima da pronađu ranjivosti nultog dana prije nego to učine.

Kako Fuzing funkcionira?

Alat koji se koristi za fuzzing obično ima tri komponente. Često se nazivaju pjesnikom, kurirom i proročištem.

Pjesnik

Pjesnik pokreće proces i odgovoran je za generiranje testnog slučaja. Testni slučaj je dugačak popis potencijalnih ulaza.

Kurir

Kurir ubacuje sve nasumične unose u ciljani softver. Fuzzeri su dizajnirani da to rade automatski, omogućujući masovno testiranje velikih količina ulaza.

Oracle

Proročanstvo provjerava uzrokuje li neki od ulaza da softver radi nešto drugačije od onoga za što je dizajniran. Ako se fuzzing provodi u legitimne svrhe, ponašanje se tada može replicirati i popraviti. Ili ako fuzzing provodi haker, a neočekivano ponašanje je korisno, može se koristiti u zlonamjerne svrhe.

Kako napadači koriste fuzzing?

Fuzzing je popularna tehnika među hakerima jer im omogućuje da pronađu ranjivosti u softveru bez pristupa izvornom kodu. Budući da je fuzziranje automatizirano, također ga je lako izvesti. Ako haker otkrije ranjivost, možda će moći izvesti sljedeće napade.

DDoS napadi

Ako fuzzing otkrije da određeni ulazi zahtijevaju dugo vremena za obradu, te se informacije mogu koristiti za pokretanje DDoS napada. DDoS napad uključuje slanje tolikog broja zahtjeva sustavu da on prestaje funkcionirati. Fuzzing omogućuje da se zahtjevi prilagode tako da zahtijevaju najviše resursa sustava za odgovor.

SQL injekcija

Napad SQL injekcije je kada se zlonamjerni SQL izrazi šalju aplikaciji. Ako te izjave nisu ispravno sanirane, mogu dopustiti napadaču interakciju s bazom podataka. To im može omogućiti da ukradu podatke ili ih modificiraju. Fuzzing je učinkovit alat za pokušaj velike količine SQL naredbi i određivanje da li neki proizvode povoljan odgovor.

Buffer Overflow

Napad prekoračenja međuspremnika je kada se u međuspremnik programa doda više podataka nego što može podnijeti. U ovom je scenariju moguće da haker izazove taj program da izvrši zlonamjerni kod. To se može koristiti za krađu podataka ili za dobivanje neovlaštenog pristupa. Fuzzing se koristi za pronalaženje ulaza koji mogu uzrokovati prelijevanje međuspremnika.

Vrste fuzzinga

Alati za fuzzing mogu se klasificirati na temelju načina na koji se generiraju testni slučajevi i koliko se zna o sustavu.

Glup vs. Pametan

Glupo fuzziranje jednostavno dodaje velike količine nasumičnih ulaza. Ne bira unose za koje je najvjerojatnije da će ih aplikacija prihvatiti. To olakšava implementaciju bez znanja o softveru; međutim, također je vrlo neučinkovit jer će većina inputa biti odbijena.

Pametno fuzziranje generira ulaze koje će aplikacija vjerojatno prihvatiti. Zahtijeva da korisnik razumije koji je ulazni format prihvatljiv, a zatim generira velike količine ulaza unutar tog formata. Pametno fuzziranje zahtijeva više truda i znanja o proizvodu za implementaciju, ali je znatno učinkovitije.

Mutacijski vs. Generacijski

Mutacijski fuzzeri uzimaju ulaz koji je prethodno bio prihvaćen i unose manje promjene u njega. To omogućuje generiranje unosa koji će vjerojatno biti prihvaćeni bez poznavanja prihvaćenog formata.

Generacijski fuzzeri stvaraju potpuno nove ulazne podatke na temelju onoga što je poznato o prihvaćenom formatu.

Bijela kutija vs. Crna kutija

Black box fuzzing koristi se bez ikakvih informacija o aplikaciji koja se testira. Manje je učinkovit od fuzziranja bijelog okvira, ali se može primijeniti na bilo koju aplikaciju bez pristupa izvornom kodu. To ga čini popularnim među hakerima.

Bijela kutija fuzzing koristi informacije o aplikaciji koja se testira kako bi stvorila ulazne podatke koji će najvjerojatnije biti prihvaćeni i proizvesti ranjivosti. Prvenstveno ga koriste programeri softvera jer je učinkovitiji od fuzziranja crne kutije.

Fuzzing je moćna metoda testiranja softvera koju koriste programeri softvera, sigurnosni stručnjaci i hakeri. Zahtijeva minimalan napor za implementaciju i sposoban je pronaći ranjivosti koje druge tehnike testiranja softvera nemaju.

Posebno je važan sa sigurnosnog stajališta jer se često koristi za otkrivanje ranjivosti nultog dana. Ove ranjivosti mogu otkriti i popraviti stručnjaci za sigurnost ili ih otkriti i iskoristiti hakeri.