Gli hacker usano spesso i fuzzer per cercare vulnerabilità nel software, esaminandone i punti deboli che possono sfruttare. Gli sviluppatori di software possono utilizzare un fuzzer per anticipare e difendersi da questi tipi di attacchi.
Origine
Il primo fuzzer fu scritto all'inizio degli anni '80 dallo sviluppatore Steve Capps per testare la debolezza dei programmi per il computer Macintosh. Chiamò il suo programma "The Monkey", riferendosi al classico adagio di una scimmia che premeva tasti a caso su una macchina da scrivere per una quantità infinita di tempo. La teoria è che dato abbastanza tempo, la scimmia alla fine scriverà le opere complete di Shakespeare. Sebbene questo approccio al testing del software venga in genere definito "fuzzing", viene anche chiamato "test della scimmia" a causa del programma di Capps.
Elenco dei fuzzer
Le tecniche di fuzzing possono essere utilizzate per testare il software e esistono molti fuzzer per scopi specifici.
Quello che segue è un elenco di fuzzers, molti dei quali sono open-source e molti ancora in sviluppo attivo.
Nome fuzzer / URL | Descrizione |
---|---|
Google Sanitizers | Un gruppo di quattro disinfettanti di dati sviluppati da Google, che utilizza la fuzzing per rilevare errori del programma:
|
AFL-fuzz | American Fuzzy Lop, uno strumento che utilizza algoritmi genetici per testare la sicurezza dei programmi compilati. |
Backfuzz | Un toolkit di fuzzing del protocollo. |
BrundleFuzz | Un fuzzer distribuito per Windows e Linux. |
CERT FOE | Failure Observation Engine, uno strumento sviluppato da CERT che utilizza la mutazione mutazionale per rilevare vulnerabilità nei programmi Windows. |
CERTfuzz | Il codice sorgente di CERT FOE. |
Choronzon | Un fuzzer evolutivo basato sulla conoscenza. |
Diffy | Uno strumento sviluppato da Twitter per scoprire le vulnerabilità nei servizi web. |
vertiginoso | Una libreria fuzzing per Python |
dfuzzer | Uno strumento fuzzing per testare processi che comunicano attraverso il meccanismo D-Bus IPC e RPC. |
dotdotpwn | Uno strumento per testare le applicazioni Web per le vulnerabilità del percorso trasversale. |
Dranzer | Un tester fuzz per i controlli ActiveX. |
EMFFuzzer | Un tester fuzz Enhanced Metafile. |
sfruttabile | Un'estensione per GDB (il debugger GNU) che analizza gli eseguibili di Linux e classifica i loro bug in base agli exploit noti. Originariamente sviluppato al CERT. |
Go-fuzz | Un fuzz tester per i programmi Go che popola i loro oggetti con valori casuali. |
GRR | Converte i file binari a 32 bit in 64 bit e li confonde come parte del processo. |
honggfuzz | Fuzzer evolutivo e feedback-driven per hardware e software. |
HTTP / 2 Fuzzer | Un fuzzer per applicazioni HTTP / 2, ancora disponibile per il download ma non più sviluppato attivamente. |
Hodor | Un fuzzer "leggermente più che totalmente stupido" (forza bruta). |
iFuzzer | Un fuzzer scritto in Python che usa Mercurial e Valgrind. |
KEMUfuzzer | Un fuzzer per macchine virtuali in esecuzione su piattaforme di emulazione QEMU, VMware, VirtualBox o BHOCS. |
KernelFuzzer | Una fuzzer per chiamate di sistema del kernel |
LibFuzzer | Una libreria per test fuzz in-process, evolutivo, guidato dalla copertura. |
Netzob | Un fuzzer per i protocolli di comunicazione di reverse engineering. |
Neural fuzzer | Un fuzzer che utilizza l'apprendimento automatico (reti neurali) per eseguire i test. |
Incubo | Un fuzzer distribuito con strumenti di amministrazione basati sul web. |
Pathgrind | Analisi dinamica basata su percorso per applicazioni a 32 bit. |
Perf-fuzzer | Un fuzzer progettato specificamente per testare la chiamata di sistema perf_event_open () nel kernel di Linux. |
Pulsar | Un fuzzer che "impara" i protocolli. |
PyJFuzz | Un fuzzer JSON Python. |
QuickFuzz | Un fuzzer di grammatica sperimentale scritto in Haskell. |
Radamsa | Un fuzzer per tutti gli usi. |
lascivo | Un semplice fuzzer Python che genera un input casuale per il programma testato. |
sfuzz | Fuzz semplice. "Esattamente quello che sembra - un semplice fuzzer." Incluso come parte del set di strumenti Kali Linux. |
Skipfish | Uno scanner di sicurezza per applicazioni Web sviluppato su Google. |
syntribios | Un tester fuzz automatico per le API Web, scritto in Python e gestito da OpenStack Security Group. |
TriforceAFL | Un fuzzer a sistema completo che utilizza QEMU. |
Wapiti | Uno scanner di vulnerabilità delle applicazioni Web. |
Wfuzz | Un fuzzer a forza bruta per applicazioni web. |
zzuf | Un fuzzer di input dell'applicazione deterministico e trasparente che modifica casualmente i bit nelle operazioni di input di un file. |
Quelle che seguono sono imbragature, o framework, che possono aiutarti a gestire il tuo test fuzz.
Fuzzing Framework | Descrizione |
---|---|
CERT BFF | Il BFF (Basic Fuzzing Framework), sviluppato da CERT, progettato per trovare vulnerabilità in applicazioni Windows, macOS e Linux. |
FuzzFlow | Un framework fuzzing in AngularJS. |
Fuzzinator | Un quadro per test fuzz casuali. |
FuzzLabs | Un framework per test fuzz generico. |
Macinino | Un automatismo / framework di test fuzz per testare i browser web. |
Gattino | Un framework di test fuzz scritto in Python. |
ofuzz | Un framework fuzzing scritto in OCaml. |
Nodefuzz | Un framework di test fuzz per browser Web, scritto in nodejs. |
PassiveFuzzFrameworkOSX | Un fuzzer per testare le vulnerabilità nel kernel macOS. |
Peach Fuzzer | Una piattaforma per test fuzz che può "testare praticamente qualsiasi sistema per vulnerabilità sconosciute". |
RamFuzz | Un fuzzer per testare i singoli parametri dei metodi dell'oggetto. |
Sulley | Un framework "completamente automatizzato e non assistito, in puro Python". |
FunFuzzer | Imbracatura Python per motori JavaScript e renderer DOM, di Mozilla. |
Bug, termini di programmazione, termini di sicurezza, test del software