Vad är Fuzz Testing?

Fuzz-test, även känd som fuzzing eller apa-testning, är en teknik som används för att testa programvara för okända sårbarheter. Fuzz-testprocessen automatiseras av ett program som kallas en fuzzer, som kommer upp med en stor mängd data som skickas till målprogrammet som input. Om målprogrammet kraschar eller uppför sig på ett oönskat sätt, skapar fuzzer en logg över ingången som orsakade felet.

Hackers använder ofta fuzzers för att leta efter sårbarheter i programvara, probing det för svagheter de kan utnyttja. Programutvecklare kan använda en fuzzer för att förutse och försvara sig mot dessa typer av attacker.

Ursprung

Den första fuzzer skrevs i början av 1980-talet av utvecklaren Steve Capps för att testa för svaghet i program för Macintosh-datorn. Han kallade sitt program "The Monkey", med hänvisning till det klassiska ordspråket av en apa som tryckte slumpmässiga nycklar på en skrivmaskin för oändlig tid. Teorin är att givet tillräckligt med tid, kommer apan så småningom skriva hela Shakespeare-verk. Även om detta tillvägagångssätt för mjukvarutestning vanligen kallas "fuzzing", kallas det även "monkey-test" på grund av Capps-programmet.

Lista över Fuzzers

Fuzzing tekniker kan användas för att testa programvara, och många fuzzers finns för specifika ändamål.

Nedan följer en lista över fuzzers, de flesta är öppna källor och många är fortfarande aktiva.

Fuzzer namn / URLBeskrivning
Google SanitizersEn grupp av fyra datavätare utvecklade hos Google, som använder fuzzing för att upptäcka programfel:
  • AddressSanitizer, som upptäcker minnesadressfel i C och C ++-program.
  • LeakSanitizer, som upptäcker minnesläckor.
  • ThreadSanitizer, som upptäcker race villkor i C ++ och Go.
  • Memory Sanitizer, som upptäcker oinitierat minne.
afl-fuzzAmerican Fuzzy Lop, ett verktyg som använder genetiska algoritmer för att testa säkerheten för kompilerade program.
BackfuzzEtt protokoll fuzzing verktygslåda.
BrundleFuzzEn distribuerad fuzzer för Windows och Linux.
CERT FOEFailure Observation Engine, ett verktyg utvecklat av CERT som använder mutational fuzzing för att upptäcka sårbarheter i Windows-program.
CERTfuzzKällkoden för CERT FOE.
ChoronzonEn evolutionär kunskapsbaserad fuzzer.
DiffyEtt verktyg som utvecklats av Twitter för att upptäcka sårbarheter i webbtjänster.
YrEtt fuzzing bibliotek för Python
dfuzzerEtt fuzzing-verktyg för testprocesser som kommunicerar via D-Bus IPC och RPC-mekanismen.
dotdotpwnEtt verktyg för att testa webbapplikationer för sårbarheter i vägen.
DranzerEn fuzz-tester för ActiveX-kontroller.
EMFFuzzerEn förbättrad Metafile fuzz tester.
Möjlig att utnyttjaEn förlängning för GDB (GNU-debuggeren) som analyserar Linux-körbara och klassificerar sina fel genom svårighetsgrad enligt kända användningsområden. Ursprungligen utvecklad hos CERT.
Go-fuzzEn fuzz tester för Go-program som fyller sina objekt med slumpmässiga värden.
grrÖversätter 32-bitars binärer till 64-bitars, fuzzing dem som en del av processen.
honggfuzzEvolutionär, återkopplingsdriven fuzzer för hårdvara och mjukvara.
HTTP / 2 FuzzerEn fuzzer för HTTP / 2-applikationer, fortfarande tillgänglig för nedladdning men inte längre aktivt utvecklad.
HodorEn "lite mer än helt dum" (brute force) fuzzer.
iFuzzerEn fuzzer skrivet i Python som använder Mercurial och Valgrind.
KEMUfuzzerEn fuzzer för virtuella maskiner som körs på QEMU, VMware, VirtualBox eller BHOCS emuleringsplattformar.
KernelFuzzerEn fuzzer för kärnsystem samtal
LibFuzzerEtt bibliotek för in-process, evolutionär, täckningsstyrd fuzz-testning.
NetzobEn fuzzer för back-engineering kommunikationsprotokoll.
Neural FuzzerEn fuzzer som använder maskininlärning (neurala nätverk) för att utföra sin testning.
MardrömEn distribuerad fuzzer med webbaserade administrationsverktyg.
PathgrindBanbaserad dynamisk analys för 32-bitars applikationer.
Perf-fuzzerEn fuzzer som är speciellt utformad för att testa systemet perf_event_open () i Linux-kärnan.
PulsarEn fuzzer som "lär" protokoll.
PyJFuzzEn Python JSON fuzzer.
QuickFuzzEn experimentell grammatikfuzzer skrivet i Haskell.
RadamsaEn generell fuzzer.
KåtEn enkel Python-fuzzer som genererar slumpmässig ingång för det testade programmet.
sfuzzEnkel fuzz. "Exakt vad det låter som - en enkel fuzzer." Ingår som en del av Kali Linux verktygsset.
skipfishEn webbsäkerhetsskanner utvecklad hos Google.
syntribiosEn automatiserad fuzz-tester för webb API, skrivet i Python och underhållet av OpenStack Security Group.
TriforceAFLEn full-system fuzzer som använder QEMU.
WapitiEn webbprogram sårbarhetsscanner.
WfuzzEn brute-force fuzzer för webbapplikationer.
zzufEn deterministisk, transparent applikationsinmatningsfuzzer som slumpmässigt ändrar bitar i en fils ingångsoperationer.

Följande är fuzzing sele, eller ramar, som kan hjälpa dig att hantera din fuzz testning.

Fuzzing FrameworkBeskrivning
CERT BFFBFF (Basic Fuzzing Framework), utvecklat av CERT, utformat för att hitta sårbarheter i Windows, MacOS och Linux-applikationer.
FuzzFlowEn fuzzing ram i AngularJS.
FuzzinatorEtt ramverk för slumpmässig fuzz-testning.
FuzzLabsEn generell fuzz-testram.
KvarnEn fuzz test automator / ram för tester webbläsare.
PottEtt fuzzprovningsramverk skrivet i Python.
ofuzzEtt fuzzing ramverk skrivet i OCaml.
NodefuzzEn fuzz-testram för webbläsare, skrivet i nodejs.
PassiveFuzzFrameworkOSXEn fuzzer för att testa sårbarheter i macOS-kärnan.
Peach FuzzerEn plattform för fuzz-testning som kan "testa praktiskt taget vilket som helst system för okända sårbarheter".
RamFuzzEn fuzzer för att testa de enskilda parametrarna för objektmetoder.
SulleyEn "fullautomatiserad och obevakad, ren Python" fuzzing ram.
FunFuzzerEn Python fuzzing sele för JavaScript-motorer och DOM-renderare, av Mozilla.

Fel, Programmeringsvillkor, Säkerhetsvillkor, Programmeringstestning