Što je Fuzz testiranje?

Fuzz testiranje, poznato i kao testiranje fuzzinga ili majmuna, tehnika je koja se koristi za testiranje softvera za nepoznate ranjivosti. Proces testiranja je automatiziran programom poznatim kao fuzzer, koji sadrži veliku količinu podataka za slanje ciljnom programu kao ulazu. Ako se ciljni program ruši ili se ponaša na nepoželjan način, fuzzer kreira dnevnik unosa koji je uzrokovao pogrešku.

Hakeri često koriste fuzzere za traženje ranjivosti u softveru, istražujući ga za slabosti koje mogu iskoristiti. Programeri mogu koristiti fuzzer za predviđanje i obranu od tih vrsta napada.

Podrijetlo

Prvi fuzzer napisao je početkom osamdesetih godina developer Steve Capps kako bi testirao slabosti u programima za Macintosh računalo. Svoj program nazvao je "Majmun", koji se odnosio na klasičnu izreku majmuna koji je slučajno pritiskao tipke na pisaćem stroju kroz beskonačnu količinu vremena. Teorija je da će, s obzirom na dovoljno vremena, majmun napokon napisati cjelokupno Shakespeareovo djelo. Iako se ovaj pristup testiranju softvera obično naziva "fuzzing", to se također naziva "testiranje majmuna" zbog Capps programa.

Popis fuzzera

Fuzzing tehnike mogu se koristiti za testiranje softvera, a mnoge fuzije postoje za specifične svrhe.

Slijedi popis fuzera, od kojih je većina otvorena i još uvijek aktivna.

Naziv fuzera / URLOpis
Google SanitizersGrupa od četiri dezinfekcijska uređaja koja je razvijena u Googleu i koji koriste fuzzing za otkrivanje programskih pogrešaka:
  • AddressSanitizer, koji otkriva greške adrese memorije u C i C ++ programima.
  • LeakSanitizer, koji otkriva curenje memorije.
  • ThreadSanitizer, koji otkriva uvjete utrke u C ++ i Go.
  • Memory Sanitizer, koji otkriva neinicijaliziranu memoriju.
AFL dlačicaAmerican Fuzzy Lop, alat koji koristi genetske algoritme za testiranje sigurnosti kompiliranih programa.
BackfuzzSkup alata za fuzzing protokola.
BrundleFuzzDistribuirani fuzzer za Windows i Linux.
CERT FOENeuspjelo motrenje motrenja, alat razvijen od strane CERT-a koji koristi mutacijsko fuzziranje za otkrivanje ranjivosti u Windows programima.
CERTfuzzIzvorni kod CERT FOE.
ChoronzonEvolucijski fuzer utemeljen na znanju.
DiffyAlat razvijen u Twitteru za otkrivanje ranjivosti u web-uslugama.
ošamućenFuzzing knjižnica za Python
dfuzzerFuzzing alat za testiranje procesa koji komuniciraju putem D-Bus IPC i RPC mehanizma.
dotdotpwnAlat za testiranje web aplikacija za propuste u putovanju.
DranzerFuzz tester za ActiveX kontrole.
EMFFuzzerPoboljšani Metafile tester.
iskoristiveProširenje za GDB (GNU debugger) koji analizira izvršne datoteke Linuxa i klasificira njihove bugove prema ozbiljnosti prema poznatim eksploatacijama. Izvorno razvijen u CERT-u.
Go-fuzzFuzz tester za Go programe koji popunjavaju njihove objekte slučajnim vrijednostima.
GRrkaoPrevodi 32-bitne binarne datoteke na 64-bitne, fuzirajući ih kao dio procesa.
honggfuzzEvolucijski fuzzer s hardverom i softverom s povratnom vezom.
HTTP / 2 FuzzerFuzzer za HTTP / 2 aplikacije, još uvijek dostupan za preuzimanje, ali više nije aktivno razvijen.
Hodor"Malo više nego totalno glupi" fuzer (brutalna sila).
iFuzzerFuzzer napisan u Pythonu koji koristi Mercurial i Valgrind.
KEMUfuzzerFuzzer za virtualne strojeve koji se izvode na QEMU, VMware, VirtualBox ili BHOCS emulacijskim platformama.
KernelFuzzerFuzzer za pozive u sustavu kernela
LibFuzzerKnjižnica za procesno, evolucijsko, pokriveno testiranje.
NetzobFuzzer za obrnuto inženjerske komunikacijske protokole.
Neural FuzzerFuzzer koji koristi strojno učenje (neuronske mreže) za obavljanje testiranja.
Noćna moraDistribuirani fuzzer s alatima za administraciju na webu.
PathgrindDinamička analiza temeljena na putanji za 32-bitne aplikacije.
Za izvedbu-fuzzerFuzzer posebno dizajniran za testiranje perf_event_open () sistemskog poziva u Linux kernelu.
pulzarFuzzer koji "uči" protokole.
PyJFuzzPython JSON fuzzer.
QuickFuzzEksperimentalni flamer za gramatiku pisan u Haskellu.
RadamsaFuzzer za opće namjene.
pohotljivJednostavan Python fuzzer koji generira slučajni ulaz za testirani program.
sfuzzJednostavno fuzz. "Upravo ono što zvuči - jednostavan fuzer." Uključeno kao dio Kali Linux alata.
SkipfishNa Googleu je razvijen sigurnosni skener za web-aplikacije.
syntribiosAutomatizirani tester za fuzz za web API, pisan u Pythonu i održavan od OpenStack Security Group.
TriforceAFLFuzzer cijelog sustava koji koristi QEMU.
Sjevernoamerički jelenSkener ranjivosti web aplikacije.
WfuzzFuzzer za web aplikacije.
zzufDeterministički, transparentni ulazni fuzzer koji slučajno mijenja bitove u ulaznim operacijama datoteke.

U nastavku se nalaze fuzzing pojasevi ili okviri koji vam mogu pomoći u upravljanju testiranjem na fuzzu.

Fuzzing FrameworkOpis
CERT BFFBFF (Basic Fuzzing Framework), razvijen od strane CERT-a, dizajniran za pronalaženje ranjivosti u Windows, MacOS i Linux aplikacijama.
FuzzFlowFuzzing okvir u AngularJS-u.
FuzzinatorOkvir za slučajno testiranje.
FuzzLabsOkvir opće namjene za opće namjene.
brusAutomat za testiranje fuzz / okvir za testiranje web-preglednika.
MačeOkvir za testiranje fuzza pisan u Pythonu.
ofuzzFuzzing okvir pisan u OCaml.
NodefuzzOkvir za provjeru fuzija za web preglednike, napisan u nodejs.
PassiveFuzzFrameworkOSXFuzzer za testiranje ranjivosti u MacOS kernelu.
Fuzzer breskvePlatforma za testiranje na fuzzu koji može "testirati gotovo svaki sustav za nepoznate ranjivosti".
RamFuzzFuzzer za testiranje pojedinih parametara objektnih metoda.
Sulley"Potpuno automatizirani i bez nadzora, čisti Python" fuzzing okvir.
FunFuzzerPython fuzzing pojas za JavaScript motore i DOM renderere, Mozilla.

Bug, Uvjeti programiranja, Sigurnosni pojmovi, Testiranje softvera