Co je to Fuzz Testing?

Fuzz testování, také známý jako fuzzing nebo opičí testování, je technika používaná k testování softwaru pro neznámé chyby. Fuzz testovací proces je automatizován programem známým jako fuzzer, který přichází s velkým množstvím dat pro odeslání do cílového programu jako vstupu. Pokud cílový program havaruje nebo se chová nežádoucím způsobem, fuzzer vytvoří záznam vstupu, který chybu způsobil.

Hackeři často používají fuzzers, aby hledali slabé stránky v softwaru a zkoumali je pro slabé stránky, které mohou zneužít. Vývojáři softwaru mohou použít fuzzer k předvídání a obraně proti těmto typům útoků.

Původ

První fuzzer byl napsán na počátku 80. let vývojářem Steve Capps, aby otestoval slabost v programech pro počítač Macintosh. On volal jeho program “opice, ” odkazovat se na klasický porekadlo opice stisknout náhodné klíče na psacím stroji pro nekonečné množství času. Teorie je, že pokud dostaneme dostatek času, opice nakonec napíše kompletní díla Shakespeara. Ačkoli tento přístup k testování softwaru je typicky nazvaný “fuzzing, ” to je také nazvané “testování opice” protože Capps programu.

Seznam fuzzers

Fuzzing techniky mohou být použity k testování softwaru, a mnoho fuzzers existují pro specifické účely.

Níže je seznam fuzzers, většina z nich je open-source a mnoho stále v aktivním vývoji.

Fuzzer Jméno / URLPopis
Google SanitizersSkupina čtyř datových dezinfekčních prostředků vyvinutých v Googlu, které používají fuzzing k detekci chyb programu:
  • AddressSanitizer, který detekuje chyby adresy paměti v programech C a C ++.
  • LeakSanitizer, který detekuje nevracení paměti.
  • ThreadSanitizer, který detekuje podmínky závodů v C ++ a Go.
  • Memory Sanitizer, který detekuje neinicializovanou paměť.
afl-fuzzAmerican Fuzzy Lop, nástroj, který využívá genetické algoritmy k testování bezpečnosti kompilovaných programů.
BackfuzzProtokol fuzzing toolkit.
BrundleFuzzDistribuovaný fuzzer pro Windows a Linux.
CERT FOEFailure Observation Engine, nástroj vyvinutý CERT, který používá mutační fuzzing k detekci zranitelností v programech Windows.
CERTfuzzZdrojový kód CERT FOE.
ChoronzonEvoluční fuzzer založený na znalostech.
DiffyNástroj vyvinutý společností Twitter k odhalení chyb ve webových službách.
DizzyFuzzing knihovna pro Python
dfuzzerFuzzing nástroj pro testování procesů, které komunikují přes D-Bus IPC a RPC mechanismus.
dotdotpwnNástroj pro testování webových aplikací pro chyby průchodnosti cesty.
DranzerFuzz tester pro ovládací prvky ActiveX.
EMFFuzzerEnhanced metafile fuzz tester.
VyužitelnýRozšíření pro GDB (debugger GNU), který analyzuje spustitelné soubory Linuxu a klasifikuje jejich chyby podle závažnosti podle známých zneužití. Původně vyvinut v CERT.
Go-fuzzFuzz tester pro Go programy, které naplňují své objekty náhodnými hodnotami.
grrPřekládá 32-bitové binární soubory na 64-bit, což je fuzzing jako součást procesu.
honggfuzzEvoluční, zpětnovazební fuzzer pro hardware a software.
Fuzzer HTTP / 2Fuzzer pro HTTP / 2 aplikace, stále k dispozici ke stažení, ale již není aktivně vyvíjen.
HodoreFuzzer "o něco více než naprosto hloupý".
iFuzzerFuzzer napsaný v Pythonu, který používá Mercurial a Valgrind.
KEMUfuzzerFuzzer pro virtuální počítače běžící na emulačních platformách QEMU, VMware, VirtualBox nebo BHOCS.
KernelFuzzerFuzzer pro systémová volání jádra
LibFuzzerKnihovna pro in-process, evoluční, pokrytí-řízené fuzz testování.
NetzobFuzzer pro komunikační protokoly s reverzním inženýrstvím.
Neurální fuzzerFuzzer, který používá strojové učení (neuronové sítě) k provádění jeho testování.
Noční můraDistribuovaný fuzzer s webovými administračními nástroji.
PathgrindDynamická analýza založená na cestě pro 32bitové aplikace.
Perf-fuzzerFuzzer speciálně navržený tak, aby otestoval systémové volání perf_event_open () v jádře Linuxu.
PulsarFuzzer, který "učí" protokoly.
PyJFuzzFuzzer Python JSON.
QuickFuzzExperimentální gruzzer gramatiky napsaný v Haskellu.
RadamseUniverzální fuzzer.
ChlípnýJednoduchý Python fuzzer, který generuje náhodný vstup pro testovaný program.
sfuzzJednoduché fuzz. "Přesně to, co to zní - jednoduchý fuzzer." Zahrnut jako součást sady nástrojů Kali Linux.
skipfishWebový bezpečnostní skener vyvinutý na Googlu.
syntribiosAutomatizovaný tester fuzz pro webové API, psaný v Pythonu a udržovaný OpenStack Security Group.
TriforceAFLFuzzer s plným systémem, který používá QEMU.
WapitiSnímač zranitelnosti webových aplikací.
WfuzzFuzzer pro hrubou sílu pro webové aplikace.
zzufDeterministický, transparentní vstupní vstupní fuzzer aplikace, který náhodně mění bity ve vstupních operacích souboru.

Následují fuzzing postroje, nebo rámce, které vám mohou pomoci spravovat vaše fuzz testování.

Fuzzing FrameworkPopis
CERT BFFBFF (Basic Fuzzing Framework), vyvinutý CERTem, určený k nalezení zranitelností v aplikacích Windows, MacOS a Linux.
FuzzFlowFuzzing framework v AngularJS.
FuzzinatorRámec pro náhodné fuzz testování.
FuzzLabsUniverzální fuzz testovací rámec.
BruskaFuzz testovací automat / framework pro testování webových prohlížečů.
KoťátkoFuzz testovací rámec napsaný v Pythonu.
ofuzzFuzzing framework napsaný v OCaml.
NodefuzzFuzz testovací rámec pro webové prohlížeče, napsaný v nodejs.
PasivníFuzzFrameworkOSXFuzzer pro testování zranitelností v jádře macOS.
Peach FuzzerPlatforma pro fuzz testování, která může "otestovat prakticky jakýkoliv systém pro neznámé chyby".
RamFuzzFuzzer pro testování jednotlivých parametrů objektových metod.
Sulley"Plně automatizovaný a bezobslužný, čistý Python" fuzzing framework.
FunFuzzerPython fuzzing postroj pro JavaScript motory a DOM renderery, Mozilla.

Chyby, programovací termíny, bezpečnostní termíny, testování softwaru