Vodič za testiranje fuzza (Fuzzing).
Što je Fuzz testiranje?
Fuzz testiranje ili Fuzzing je tehnika testiranja softvera stavljanjem nevažećih ili nasumičnih podataka pod nazivom FUZZ u softverski sustav radi otkrivanja pogrešaka kodiranja i sigurnosnih rupa. Svrha fuzz testiranja je umetanje podataka korištenjem automatiziranih ili poluautomatiziranih tehnika i testiranje sustava na različite iznimke poput rušenja 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 testiranja softvera i vrsta je Ispitivanje sigurnosti.
Zašto raditi Fuzz testiranje?
- Obično Fuzzy testiranje pronađe najozbiljniju sigurnosnu grešku ili nedostatak.
- Fuzz testiranje daje učinkovitije rezultate kada se koristi s Crna Box Ispitivanje, beta testiranje i druge metode otklanjanja pogrešaka.
- Fuzz testiranje koristi se za provjeru ranjivosti softvera. To je vrlo isplativa tehnika testiranja.
- Fuzz testiranje jedna je od tehnika testiranja crne kutije. Fuzzing je jedna od najčešćih metoda koju hakeri koriste za pronalaženje ranjivosti sustava.
Kako napraviti Fuzz testiranje
Koraci za neizrazito testiranje uključuju osnovne korake testiranja-
Korak 1) Identificirajte ciljni sustav
Korak 2) Identificirajte ulaze
Korak 3) Generiraj Fuzzed podatke
Korak 4) Izvršite test koristeći neizrazite podatke
Korak 5) Pratite ponašanje sustava
Korak 6) Defekti trupaca
Primjeri Fuzzera
- Fuzzeri temeljeni na mutaciji mijenjati postojeće uzorke podataka za stvaranje novih testnih podataka. Ovo je vrlo jednostavan i neposredan pristup, počinje s važećim uzorcima protokola i nastavlja kvariti svaki bajt ili datoteku.
- Fuzzeri temeljeni na generaciji definirati nove podatke na temelju ulaza modela. Počinje generirati unos od nule na temelju specifikacije.
- fuzzer UTEMELJEN NA PROTOKOLU, najuspješniji fuzzer je imati detaljno znanje o formatu protokola koji se testira. Razumijevanje ovisi o specifikaciji. Uključuje pisanje niza specifikacije u alat, a zatim korištenjem tehnike generiranja testa temeljene na modelu prolazi kroz specifikaciju i dodaje nepravilnosti u sadržaju podataka, slijedu itd. Ovo je također poznato kao testiranje sintakse, testiranje gramatike, testiranje robusnosti, itd. Fuzzer može generirati testne slučajeve iz postojećeg ili može koristiti važeće ili nevažeće ulaze.
Postoje dva ograničenja fuzzinga temeljenog na protokolu:
- Testiranje se ne može nastaviti dok specifikacija ne bude zrela.
- Mnogi korisni protokoli su proširenje objavljenih protokola. Ako se fuzz testiranje temelji na objavljenim specifikacijama, Pokrivenost testom za nove protokole bit će ograničeni.
Najjednostavniji oblik tehnike fuzzinga je slanje nasumičnog unosa softveru ili kao paketi protokola ili kao događaj. Ova tehnika prosljeđivanja nasumičnog unosa vrlo je moćna za pronalaženje grešaka u mnogim aplikacijama i uslugama. Dostupne su i druge tehnike, a vrlo ih je jednostavno implementirati. Za implementaciju ovih tehnika samo trebamo promijeniti postojeće ulaze. Ulaz možemo promijeniti samo izmjenom bitova ulaza.
Vrste grešaka koje je otkrilo Fuzz testiranje
- Greške u tvrdnjama i curenje memorije ova se metodologija naširoko koristi za velike aplikacije u kojima greške utječu na sigurnost memorije, što je ozbiljna ranjivost.
- Pogrešan unos U fuzz testiranju, fuzzeri se koriste za generiranje nevažećeg unosa koji se koristi za testiranje rutina za obradu grešaka, a to je važno za softver koji ne kontrolira svoj unos. Jednostavan fuzzing je poznat kao način automatizacije negativnog testiranja.
- Greške u ispravnosti Fuzzing se također može koristiti za otkrivanje nekih vrsta grešaka "ispravnosti". Kao što je oštećena baza podataka, loši rezultati pretraživanja itd.
Alati za testiranje fuzza
Alati koji se koriste u web sigurnosti mogu se široko koristiti u fuzz testiranju kao što je Burp Suite, Peach Fuzzer, itd.
- Peach Fuzzer: Peach Fuzzer pruža robusniju i sigurnosnu pokrivenost 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 alat profesionalne razine koji traži ranjivosti na razini aplikacije u web aplikacijama. SPIKE Proxy pokriva osnove, kao što su SQL Injection i cross-site-scripting, ali je potpuno otvoren Python infrastruktura. SPIKE Proxy dostupan je za Linux i Windows.
- Webskarabej: Webscarab je napisan u Java stoga prenosiv na mnoge platforme. Za analizu aplikacije koristi se Webscarab framework koji komunicira putem HTTP i HTTPS protokola.ex: Webscarab radi kao posrednik za presretanje, omogućuje operateru pregled i izmjenu zahtjeva koje je kreirao preglednik prije nego što ih primi poslužitelj. I dopustite pregled i ažuriranje odgovora koji generira poslužitelj prije nego što ga primi preglednik. Na taj način, ako web skarabej pronađe bilo kakvu rupu u zakonu, naći će se na popisu prijavljenih problema.
- OWASP WSFuzzer: WSFuzzer je GPL-ov program koji je napisan u Python. GPL-om je program trenutno usmjeren na web usluge. U trenutnoj verziji OWASPWSFuzzer temelji se na HTTP-u SOAP usluge glavna su meta.
Prednosti Fuzz testiranja
- Fuzz testiranje poboljšava softver Ispitivanje sigurnosti.
- Greške pronađene u fuzzingu ponekad su ozbiljne i većinu vremena koriste ih hakeri, uključujući padove, curenje memorije, neobrađene iznimke itd.
- Ako testeri ne uspiju primijetiti neku od grešaka zbog ograničenog vremena i resursa, te se greške također pronađu u Fuzz testiranju.
Nedostaci fuzz testiranja
- Fuzz testiranje samo po sebi ne može dati potpunu sliku ukupne sigurnosne prijetnje ili grešaka.
- Fuzz testiranje manje je učinkovito za rješavanje sigurnosnih prijetnji koje ne uzrokuju rušenje programa, kao što su neki virusi, crvi, trojanci itd.
- Fuzz testiranje može otkriti samo jednostavne greške ili prijetnje.
- Za učinkovito izvođenje bit će potrebno dosta vremena.
- Postavljanje uvjeta granične vrijednosti s nasumičnim unosom vrlo je problematično, no sada korištenje determinističkih algoritama temeljenih na unosu korisnika većina testera rješava ovaj problem.
rezime
U softverskom inženjerstvu, Fuzz testiranje pokazuje prisutnost grešaka u aplikaciji. Fuzzing ne može jamčiti potpuno otkrivanje grešaka u aplikaciji. Ali korištenjem Fuzz tehnike osigurava da je aplikacija robusna i sigurna jer ova tehnika pomaže u otkrivanju većine uobičajenih ranjivosti.