Fuzz testiranje
Fuzz testiranje ili zamagljivanje je tehnika softverskog testiranja stavljanja nevaljanih ili slučajnih podataka koji se nazivaju FUZZ u softverski sustav radi otkrivanja pogrešaka u kodiranju i sigurnosnih rupa. Svrha fuzz testiranja je umetanje podataka pomoću automatiziranih ili poluautomatiziranih tehnika i testiranje sustava na razne iznimke poput pada sustava ili kvara ugrađenog koda itd.
Fuzz testiranje izvorno je razvio Barton Miller na Sveučilištu Wisconsin 1989. Fuzz testiranje ili fuzzing tehnika je softverske tehnike ispitivanja i vrsta je sigurnosnog testiranja .
Zašto raditi Fuzz testiranje?
- Fuzzy testiranje obično pronalazi najozbiljniju sigurnosnu grešku ili kvar.
- Fuzz testiranje daje učinkovitiji rezultat kada se koristi s testiranjem crne kutije, beta testiranjem i drugim metodama otklanjanja pogrešaka.
- Fuzz testiranje koristi se za provjeru ranjivosti softvera. To su vrlo isplative tehnike ispitivanja.
- Fuzz testiranje jedna je od tehnika testiranja crne kutije. Fuzzing je jedna od najčešćih metoda hakera koja se koristi za pronalaženje ranjivosti sustava.
Kako napraviti Fuzz testiranje
Koraci za neizrazito testiranje uključuju osnovne korake ispitivanja -
Korak 1) Identificirajte ciljni sustav
Korak 2) Prepoznajte ulaze
Korak 3) Generiranje nejasnih podataka
Korak 4) Izvršite test koristeći nejasne podatke
Korak 5) Nadgledajte ponašanje sustava
Korak 6) Defekti dnevnika
Primjeri Fuzzera
-
Fuzzeri zasnovani na mutacijama mijenjaju postojeće uzorke podataka kako bi stvorili nove testne podatke. Ovo je vrlo jednostavan i izravan pristup, koji započinje s važećim uzorcima protokola i zadržava mangiranje svakog bajta ili datoteke.
-
Fuzzeri zasnovani na generaciji definiraju nove podatke na temelju unosa modela. Počinje generirati ulazne podatke od nule na temelju specifikacije.
-
Fuzzer na bazi protokola, najuspješniji fuzzer je imati detaljno znanje o formatu protokola koji se ispituje. Razumijevanje ovisi o specifikaciji. Uključuje unos niza specifikacija u alat, a zatim tehnikom generiranja testa temeljenom na modelu prođite kroz specifikaciju i dodajte nepravilnosti u sadržaju podataka, slijedu itd. To je također poznato kao sintaksno testiranje, gramatičko testiranje, ispitivanje robusnosti, itd. Fuzzer može generirati test slučajeve iz postojećeg ili može koristiti valjane ili nevaljane ulaze.
Postoje dva ograničenja rasturanja zasnovanog na protokolu:
- Testiranje se ne može nastaviti dok specifikacija ne sazri.
- Mnogi korisni protokoli produžetak su objavljenih protokola. Ako se ispitivanje fuzz-a temelji na objavljenim specifikacijama, pokrivenost testom za nove protokole bit će ograničena.
Najjednostavniji oblik fuzzing tehnike je slanje slučajnog unosa u softver bilo kao protokolarni paket ili kao događaj. Ova tehnika prosljeđivanja slučajnih unosa vrlo je moćna za pronalaženje bugova u mnogim aplikacijama i uslugama. Dostupne su i druge tehnike, a vrlo je jednostavno implementirati. Da bismo primijenili ove tehnike, samo moramo promijeniti postojeće ulaze. Ulaz možemo promijeniti samo izmjenom bitova unosa.
Vrste bugova otkrivenih Fuzz testiranjem
-
Kvarovi u tvrdnjama i curenje memorije, ova se metodologija široko koristi za velike aplikacije gdje bugovi utječu na sigurnost memorije, što je ozbiljna ranjivost.
- Pogrešan unos
U fuzz testiranju, fuzzeri se koriste za generiranje nevaljanog unosa koji se koristi za testiranje rutina za rukovanje pogreškama, a to je važno za softver koji ne kontrolira svoj unos. Jednostavno miješanje može biti poznato kao način automatizacije negativnog testiranja.
- Greške u ispravnosti
Fuzzing se također može koristiti za otkrivanje nekih vrsta bugova "ispravnosti". Kao što je oštećena baza podataka, loši rezultati pretraživanja itd.
Alati za ispitivanje Fuzz-a
Alati koji se koriste u web sigurnosti mogu se široko koristiti u fuzz testiranju kao što su Burp Suite, Peach Fuzzer itd.
- Peach Fuzzer
Peach Fuzzer pruža robusnije i sigurnije pokrivanje od skenera. Ostali alati za testiranje mogu pretraživati samo poznate niti, dok Peach Fuzzer omogućuje korisnicima pronalaženje poznatih i nepoznatih niti.
- Spike Proxy
To je profesionalni alat koji traži ranjivosti na razini aplikacija u web aplikacijama. SPIKE Proxy pokriva osnove, kao što su SQL Injection i cross-site skriptiranje, ali to je potpuno otvorena Python infrastruktura. SPIKE Proxy dostupan je za Linux i Windows.
- Webscarab
Webscarab je napisan na Javi, što je prenosivo na mnoge platforme. Za analizu aplikacije koristi se Webscarab framework koji komunicira pomoću HTTP i HTTPS protokola.
Primjer: Webscarab radi kao presretački proxy, omogućava operatoru da pregleda i izmijeni zahtjev stvoren od strane preglednika prije nego što ih poslužitelj primi. I omogućiti pregled i ažuriranje odgovora koji je generirao poslužitelj prije nego što ih primi preglednik. Na taj će način, ako web skarabej pronađe bilo kakvu rupu, sastaviti popis prijavljenih problema.
- OWASP WSFuzzer
WSFuzzer je GPL-ov program koji je napisan na Pythonu. GPL'd program trenutno cilja web usluge. U trenutnoj verziji OWASPWSFuzzer SOAP usluge temeljene na HTTP-u glavni su cilj.
Prednosti Fuzz ispitivanja
- Fuzz testiranje poboljšava testiranje sigurnosti softvera.
- Greške pronađene u fuzingu ponekad su ozbiljne i većinu vremena koriste hakeri, uključujući padove, curenje memorije, neobrađenu iznimku itd.
- Ako testeri ne uspiju primijetiti bilo koju programsku pogrešku zbog ograničenja vremena i resursa, one će se također naći u Fuzz testiranju.
Mane Fuzz ispitivanja
- Fuzz testiranje samo po sebi ne može pružiti cjelovitu sliku ukupne sigurnosne prijetnje ili grešaka.
- Fuzz testiranje je manje učinkovito za rješavanje sigurnosnih prijetnji koje ne uzrokuju pad programa, poput nekih virusa, crva, trojanaca itd.
- Fuzz testiranje može otkriti samo jednostavne greške ili prijetnje.
- Za učinkovito obavljanje trebat će vam značajno vrijeme.
- Postavljanje graničnog uvjeta sa slučajnim ulazima vrlo je problematično, ali sada upotreba determinističkih algoritama temeljenih na korisničkim ulazima većina testera rješava ovaj problem.
Sažetak:
U softverskom inženjerstvu, Fuzz testiranje pokazuje prisutnost bugova u aplikaciji. Fuzzing ne može jamčiti otkrivanje pogrešaka u potpunosti u aplikaciji. Ali upotrebom Fuzz tehnike osigurava da je aplikacija robusna i sigurna, jer ova tehnika pomaže u otkrivanju većine uobičajenih ranjivosti.
Ovaj članak je napisala Priyanka Kothe