
Un fuzzer multipiattaforma per testare binari in spazio utente, client e server di rete
Un fuzzer multi-piattaforma per sondare binari userland, client e server.
Ha trovato bug in 50+ app e librerie di grandi aziende e open source.
Configurazione semplice per iniziare il fuzzing su Linux, Mac e Windows.
Litefuzz ha lo scopo di servire uno scopo: fare fuzz e triage su tutte le principali piattaforme, supportare sia app CLI/GUI che client e server di rete, al fine di trovare bug relativi alla sicurezza.
Semplifica il processo e rende facile scoprire bug di sicurezza in molti target diversi, su più piattaforme, facendo solo pochi onesti compromessi.
Non è costruito per velocità, scalabilità o per vincere premi accademici. Applica tecniche semplici da diverse angolazioni per ottenere risultati. Per il fuzzing di file basato su console, probabilmente dovresti usare AFL. Ha prestazioni superiori, capacità di strumentazione (ed esecuzioni non strumentate più veloci), scalabilità e può creare dei dannati jpeg dal nulla. Per il fuzzing di rete, anche il mutiny fuzzer funziona bene se hai PCAP da riprodurre e frizzer sembra promettente. Ma se vuoi provare questo, può fare fuzzing su quei tipi di target su più piattaforme con un solo strumento.
./ e dai al tuo target... un lite fuzz.``` $ sudo apt install -y latex2rtf
$ ./litefuzz.py -l -c "latex2rtf FUZZ" -i input/tex -o crashes/latex2rtf -n 1000 -z --========================-- --======| litefuzz |======-- --========================--
[STATS] run id: 3516 cmdline: latex2rtf FUZZ crash dir: crashes/latex2rtf input dir: input/tex inputs: 1 iterations: 1000 mutator: random(mutators)
@ 1000/1000 (3 crashes, 127 duplicates, ~0:00:00 remaining)
[RESULTS]
completed (1000) iterations with (3) unique crashes and 127 dups
check crashes/latex2rtf for more details
Questo è un semplice target locale che AFL++ è perfettamente in grado di gestire ed è fornito solo come esempio rapido. Litefuzz è stato progettato per fare molto di più in termini di fuzzing di rete e GUI, come vedrai una volta che approfondirai.
## Perché
Sì, un altro fuzzer e uno che non segue perfettamente le tendenze e le convenzioni attuali. Sono stati fatti dei compromessi per soddisfare determinati requisiti. Questi requisiti sono: un fuzzer che funzioni per impostazione predefinita su più piattaforme, che fuzzifichi target sia locali che di rete e che sia molto facile da usare. Non stiamo cercando di convincere nessuno di niente, ma forniamo un po' di contesto. Alcuni target richiedono molto sforzo per integrare fuzzer come AFL nella catena di compilazione. Questo non è un problema perché questo fuzzer non richiede strumentazione, sacrificando la copertura precisa ottenuta dalla strumentazione per facilità d'uso e portabilità. AFL inoltre non supporta il fuzzing di rete nativamente, e sebbene esistano progetti basati su di esso che lo fanno, sono tutt'altro che semplici da usare e di solito richiedono più modifiche al codice e harness per funzionare (storia simile con [Libfuzzer](https://llvm.org/docs/LibFuzzer.html)).
Non esegue fuzzing parallelo, né supporta nulla di simile ai miglioramenti di velocità fulminei che la [modalità persistente](https://lcamtuf.blogspot.com/2015/06/new-in-afl-persistent-mode.html) può offrire, quindi non può scalare nemmeno lontanamente come i fuzzer con tali capacità. Ancora una volta, questo non è un fuzzer all'avanguardia. Ma non richiede codice sorgente, configurare correttamente una build o alcune funzionalità del sistema operativo. Può persino fuzzare alcune GUI di client di rete e app interattive. Vive di risorse locali in molti modi e molte delle funzionalità come i mutatori e la minimizzazione sono state scritte da zero.
È stato progettato per "funzionare e basta" e sono stati dedicati sforzi per automatizzare la configurazione e l'installazione delle poche dipendenze di cui necessita. Questo fuzzer è stato scritto per servire uno scopo, per fornire valore in molti scenari e ambienti target diversi e, cosa più importante e per cui tutti i fuzzer dovrebbero essere giudicati: la capacità di trovare bug. E **trova** [bug](https://github.com/sec-tools/beta/blob/main/README.md#trophies). Non presume che esista il codice sorgente del target, quindi può coprire abbastanza bene il software closed source. Può funzionare come parte di automazione con poche modifiche, ma è orientato ad essere divertente da usare per i ricercatori di vulnerabilità. Tuttavia, è più utile pensarlo come un progetto di R&S piuttosto che un prodotto completo. Inoltre, non c'è una configurazione complicata in cui è leggermente rotto all'inizio o richiede ulteriore lavoro per farlo funzionare su sistemi operativi moderni.