Tutorial sul test del fuzz (Fuzzing).
Cos'รจ il Fuzz Test?
Test fuzz o Fuzzing รจ una tecnica di test del software che consiste nell'inserire dati non validi o casuali chiamati FUZZ nel sistema software per scoprire errori di codifica e lacune nella sicurezza. Lo scopo del test fuzz รจ inserire dati utilizzando tecniche automatizzate o semi-automatizzate e testare il sistema per varie eccezioni come crash del sistema o errore del codice integrato, ecc.
Il fuzz testing รจ stato originariamente sviluppato da Barton Miller presso l'Universitร del Wisconsin nel 1989. Il fuzz testing o fuzzing รจ una tecnica di test del software ed รจ un tipo di Test di sicurezza.
Perchรฉ fare il Fuzz Testing?
- Di solito, il test Fuzzy rileva l'errore o il difetto di sicurezza piรน grave.
- Il test Fuzz fornisce risultati piรน efficaci se utilizzato con Nero Box Collaudo, beta testing e altri metodi di debug.
- Il test fuzz viene utilizzato per verificare la vulnerabilitร del software. Si tratta di tecniche di test molto convenienti.
- Il fuzz testing รจ una delle tecniche di black box testing. Il fuzzing รจ uno dei metodi piรน comuni utilizzati dagli hacker per trovare vulnerabilitร del sistema.
Come eseguire il Fuzz Test
I passaggi per il test fuzzy includono i passaggi di test di base:
Passo 1) Identificare il sistema di destinazione
Passo 2) Identificare gli input
Passo 3) Genera dati fuzz
Passo 4) Eseguire il test utilizzando dati fuzzy
Passo 5) Monitorare il comportamento del sistema
Passo 6) Difetti di registro
Esempi di Fuzzer
- Fuzzer basati su mutazioni modificare i campioni di dati esistenti per creare nuovi dati di test. Questo รจ l'approccio molto semplice e diretto, inizia con campioni validi di protocollo e continua a manipolare ogni byte o file.
- Fuzzer basati sulla generazione definire nuovi dati in base all'input del modello. Inizia a generare input da zero in base alle specifiche.
- Fuzzer BASATO SUL PROTOCOLLO, il fuzzer di maggior successo รจ avere una conoscenza dettagliata del formato del protocollo da testare. La comprensione dipende dalle specifiche. Si tratta di scrivere un array di specifiche nello strumento, quindi, utilizzando la tecnica di generazione di test basata su modello, esaminare le specifiche e aggiungere irregolaritร nel contenuto dei dati, nella sequenza, ecc. Questo รจ noto anche come test di sintassi, test grammaticale, test di robustezza, ecc. Fuzzer puรฒ generare casi di test da uno esistente oppure puรฒ utilizzare input validi o non validi.
Esistono due limitazioni del fuzzing basato su protocollo:
- Il test non puรฒ procedere finchรฉ la specifica non sarร matura.
- Molti protocolli utili sono un'estensione dei protocolli pubblicati. Se il test fuzz si basa su specifiche pubblicate, Copertura di prova per i nuovi protocolli sarร limitato.
La forma piรน semplice di tecnica fuzzing consiste nell'invio di input casuali al software come pacchetti di protocollo o come evento. Questa tecnica di passaggio di input casuale รจ molto potente per trovare bug in molte applicazioni e servizi. Sono disponibili anche altre tecniche ed รจ molto facile da implementare. Per implementare queste tecniche dobbiamo solo modificare gli input esistenti. Possiamo cambiare l'input semplicemente scambiando i bit di input.
Tipi di bug rilevati da Fuzz Testing
- Errori di asserzione e perdite di memoria questa metodologia รจ ampiamente utilizzata per applicazioni di grandi dimensioni in cui i bug incidono sulla sicurezza della memoria, che rappresenta una grave vulnerabilitร .
- Inserimento non valido Nel test fuzz, i fuzzer vengono utilizzati per generare un input non valido che viene utilizzato per testare le routine di gestione degli errori e questo รจ importante per il software che non ne controlla l'input. Il semplice fuzzing puรฒ essere conosciuto come un modo per automatizzare i test negativi.
- Bug di correttezza Il fuzzing puรฒ essere utilizzato anche per rilevare alcuni tipi di bug di โcorrettezzaโ. Come un database danneggiato, risultati di ricerca scadenti, ecc.
Strumenti di test fuzz
Gli strumenti utilizzati nella sicurezza web possono essere ampiamente utilizzati nei test fuzz come Burp Suite, Fuzzer alla pesca, ecc.
- Soffice alla pesca: Peach Fuzzer fornisce una copertura piรน solida e sicura rispetto a uno scanner. Altri strumenti di test possono cercare solo thread conosciuti mentre Peach Fuzzer consente agli utenti di trovare thread noti e sconosciuti.
- Proxy Spike: ร uno strumento di livello professionale alla ricerca di vulnerabilitร a livello applicativo nelle applicazioni web. SPIKE Proxy copre le nozioni di base, come ad esempio SQL Iniezione e scripting cross-site, ma รจ completamente aperto Python infrastruttura. SPIKE Proxy รจ disponibile per Linux e Windows.
- Webscarabeo: Webscarab รจ scritto in Java quindi portabile su molte piattaforme. Per analizzare l'applicazione viene utilizzato il framework Webscarab che comunica utilizzando i protocolli HTTP e HTTPS.Es: Webscarab funziona come un proxy di intercettazione, consente all'operatore di rivedere e modificare le richieste create dal browser prima che vengano ricevute dal server. E consente di rivedere e aggiornare la risposta generata dal server prima di essere ricevuta dal browser. In questo modo, se web scarab trova qualche scappatoia, farร l'elenco dei problemi segnalati.
- OWASP WSFuzzer: WSFuzzer รจ un programma GPL scritto in Python. GPL'd un programma che attualmente ha come target i Web Services. Nella versione corrente di OWASPWSFuzzer basata su HTTP Servizi SOAP sono l'obiettivo principale.
Vantaggi del Fuzz Test
- Il test fuzz migliora il software Test di sicurezza.
- I bug riscontrati nel fuzzing sono talvolta gravi e il piรน delle volte utilizzati dagli hacker, inclusi arresti anomali, perdite di memoria, eccezioni non gestite, ecc.
- Se uno qualsiasi dei bug non viene notato dai tester a causa della limitazione di tempo e risorse, tali bug vengono rilevati anche nel test Fuzz.
Svantaggi del Fuzz Test
- Il test fuzz da solo non puรฒ fornire un quadro completo di una minaccia o di un bug complessivo alla sicurezza.
- Il test fuzz รจ meno efficace per affrontare le minacce alla sicurezza che non causano arresti anomali del programma, come alcuni virus, worm, trojan, ecc.
- Il test fuzz รจ in grado di rilevare solo guasti o minacce semplici.
- Per funzionare in modo efficace, richiederร molto tempo.
- L'impostazione di una condizione di valore al contorno con input casuali รจ molto problematica, ma ora utilizzando algoritmi deterministici basati sugli input degli utenti la maggior parte dei tester risolve questo problema.
Sintesi
Nell'ingegneria del software, il test Fuzz mostra la presenza di bug in un'applicazione. Il fuzzing non puรฒ garantire il rilevamento completo dei bug in un'applicazione. Ma utilizzando la tecnica Fuzz, si garantisce che lโapplicazione sia robusta e sicura, poichรฉ questa tecnica aiuta a esporre la maggior parte delle vulnerabilitร comuni.

