Kaj je testiranje fuzije?

Fuzz testiranje, znano tudi kot preizkušanje fuzzing ali opic, je tehnika, ki se uporablja za testiranje programske opreme za neznane ranljivosti. Postopek testiranja fuzije je avtomatiziran s programom, imenovanim fuzzer, ki vsebuje veliko količino podatkov za pošiljanje v ciljni program kot vhod. Če se ciljni program sesuje ali se obnaša na nezaželen način, fuzzer izvede dnevnik vnosa, ki je povzročil napako.

Hekerji pogosto uporabljajo fuzerje, da iščejo ranljivosti v programski opremi in jo preizkušajo za slabosti, ki jih lahko izkoristijo. Razvijalci programske opreme lahko uporabijo fuzzer za predvidevanje in zaščito pred temi vrstami napadov.

Izvor

Prvi fuzer je napisal razvijalec Steve Capps v začetku 80-ih let prejšnjega stoletja, da bi preizkusil slabosti v programih za računalnik Macintosh. Program je imenoval "Opica", ki se je nanašal na klasično besedo opice, ki je na neskončno veliko časa pritisnila na tipke na pisalnem stroju. Teorija je, da bo, ko bo dovolj časa, opica sčasoma napisala celotna dela Shakespeara. Čeprav se ta pristop k testiranju programske opreme običajno imenuje "fuzzing", se imenuje tudi "testiranje opic" zaradi programa Capps.

Seznam fuzerjev

Fuzzing tehnike se lahko uporabljajo za testiranje programske opreme in veliko fuzerjev obstaja za posebne namene.

Sledi seznam fuzerjev, ki so večinoma odprti vir, mnogi pa še vedno delujejo.

Fuzzer Name / URLOpis
Google SanitizersSkupina štirih podatkovnih sanitarjev, razvitih v Googlu, ki uporabljajo fuzzing za zaznavanje programskih napak:
  • AddressSanitizer, ki zazna napake v naslovu pomnilnika v programih C in C ++.
  • LeakSanitizer, ki zazna uhajanje pomnilnika.
  • ThreadSanitizer, ki zazna razmere v C ++ in Go.
  • Memory Sanitizer, ki zazna neinicializiran pomnilnik.
afl-fuzzAmerican Fuzzy Lop, orodje, ki uporablja genetske algoritme za testiranje varnosti zbranih programov.
BackfuzzZbirka orodij za fuzzing protokola.
BrundleFuzzPorazdeljena fuzer za Windows in Linux.
CERT FOEFailure Observation Engine, orodje, ki ga je razvil CERT in uporablja mutational fuzzing za zaznavanje ranljivosti v programih Windows.
CERTfuzzIzvorna koda CERT FOE.
ChoronzonEvolucijski fuzer, ki temelji na znanju.
DiffyOrodje, ki ga je Twitter razvil za odkrivanje ranljivosti spletnih storitev.
DizzyFuzzing knjižnica za Python
dfuzzerFuzzing orodje za testiranje procesov, ki komunicirajo prek D-Bus IPC in mehanizma RPC.
dotdotpwnOrodje za preizkušanje spletnih aplikacij za ranljivosti poti za potovanje poti.
DranzerPreizkuševalnik fuzz za kontrolnike ActiveX.
EMFFzzerIzboljšan Metafile tester za fuzz.
IzkoriščenoRazširitev za GDB (razhroščevalnik GNU), ki analizira izvršljive datoteke Linuxa in razvrsti njihove napake po resnosti glede na znane napade. Prvotno razvit pri CERT.
Go-fuzzPreizkuševalnik fuzz za programe Go, ki njihove objekte napolni z naključnimi vrednostmi.
grrPrenese 32-bitne binarne datoteke na 64-bitne, ki jih delijo kot del procesa.
honggfuzzEvolucijski fuzer za strojno in programsko opremo.
HTTP / 2 FuzzerFuzzer za aplikacije HTTP / 2, ki so še vedno na voljo za prenos, vendar ni več aktivno razvita.
HodorFuzzer "rahlo več kot popolnoma neumen" (brutalna sila).
iFuzzerFuzer napisana v Pythonu, ki uporablja Mercurial in Valgrind.
KEMUfuzzerFuzzer za virtualne stroje, ki se izvajajo na emulacijskih platformah QEMU, VMware, VirtualBox ali BHOCS.
KernelFuzzerFuzzer za sistemske klice jedra
LibFuzzerKnjižnica za procesno, evolucijsko, vodeno testiranje fuzije.
NetzobFuzzer za komunikacijske protokole obratnega inženiringa.
Nevronska fuzerFuzzer, ki uporablja strojno učenje (nevronske mreže) za izvajanje testiranja.
Nočna moraPorazdeljena fuzer s spletnimi orodji za upravljanje.
PathgrindDinamična analiza na podlagi poti za 32-bitne aplikacije.
Perf-fuzzerFuzzer, posebej zasnovan za testiranje sistemskega klica perf_event_open () v jedru Linuxa.
PulsarFuzer, ki se "uči" protokolov.
PyJFuzzPython JSON fuzzer.
QuickFuzzEksmerator za eksperimentalno slovnico, napisan v Haskellu.
RadamsaFuzer za splošno uporabo.
RandyPreprost Python fuzzer, ki generira naključni vhod za testiran program.
sfuzzEnostavno fuzz. "Točno to sliši - preprosto fuzer." Vključen kot del orodja Kali Linux.
skipfishVarnostni skener za spletne aplikacije, razvit pri Googlu.
syntribiosAvtomatiziran tester za spletne API-je, napisan v Pythonu, ki ga vzdržuje OpenStack Security Group.
TriforceAFLFuzzer s polnim sistemom, ki uporablja QEMU.
WapitiPregledovalnik ranljivosti spletne aplikacije.
WfuzzFuzzer za spletne aplikacije.
zzufDeterministični, pregledni vhodni fuzzer, ki naključno spremeni bitove v vhodnih operacijah datoteke.

V nadaljevanju so opisani fuzzing varnostni pasovi ali okviri, ki vam lahko pomagajo pri upravljanju s testiranjem z oblačili.

Fuzzing FrameworkOpis
CERT BFFBFF (Basic Fuzzing Framework), ki ga je razvil CERT, namenjen iskanju ranljivosti v aplikacijah Windows, MacOS in Linux.
FuzzFlowFuzzing okvir v AngularJS.
FuzzinatorOkvir za naključno testiranje.
FuzzLabsOkvir za splošne namene testiranja.
MlinčekAvtomat za testiranje fuzz / okvir za testiranje spletnih brskalnikov.
KittyOkvir za testiranje fuzzov, napisan v Pythonu.
ofuzzFuzzing okvir, napisan v OCaml.
NodefuzzOkvir za testiranje fuzz za spletne brskalnike, napisan v nodejs.
PassiveFuzzFrameworkOSXFuzzer za testiranje ranljivosti v jedru macOS.
Fužer za breskvePlatforma za testiranje fuzz, ki lahko »preizkusi skoraj vsak sistem za neznane ranljivosti«.
RamFuzzFuzzer za testiranje posameznih parametrov objektnih metod.
Sulley"Popolnoma avtomatiziran in nenadzorovan, čist Python" fuzzing okvir.
FunFuzzerPython fuzzing snop za motorje JavaScript in DOM renderere, ki jih uporablja Mozilla.

Bug, pogoji programiranja, varnostni pogoji, testiranje programske opreme