Test fuzz
Fuzz Testing o Fuzzing è una tecnica di test del software per inserire dati non validi o casuali chiamati FUZZ nel sistema software per scoprire errori di codifica e falle di sicurezza. Lo scopo del fuzz testing è inserire dati utilizzando tecniche automatizzate o semi-automatizzate e testare il sistema per varie eccezioni come il crash del sistema o il fallimento del codice integrato, ecc.
Il fuzz testing è stato originariamente sviluppato da Barton Miller presso l'Università del Wisconsin nel 1989. Fuzz testing o fuzzing è una tecnica di test del software ed è un tipo di test di sicurezza .
Perché eseguire il Fuzz Test?
- 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 Black Box Testing, 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 test fuzz è una delle tecniche di test della scatola nera. Il fuzzing è uno dei metodi più comuni utilizzati dagli hacker per trovare la vulnerabilità del sistema.
Come eseguire il Fuzz Test
I passaggi per il test fuzzy includono i passaggi di test di base:
Passaggio 1) Identificare il sistema di destinazione
Passaggio 2) Identificare gli input
Passaggio 3) Genera dati fuzzati
Passaggio 4) Eseguire il test utilizzando dati fuzzy
Passaggio 5) Monitorare il comportamento del sistema
Passaggio 6) Registrare i difetti
Esempi di Fuzzer
-
I fuzzer basati su mutazione modificano 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.
-
I fuzzer basati sulla generazione definiscono nuovi dati in base all'input del modello. Inizia a generare input da zero in base alle specifiche.
-
Fuzzer BASATO SU PROTOCOLLO , il fuzzer di maggior successo consiste nell'avere una conoscenza dettagliata del formato del protocollo da testare. La comprensione dipende dalle specifiche. Implica la scrittura di un array della specifica nello strumento, quindi, utilizzando la tecnica di generazione di test basata sul modello, passa attraverso la specifica e aggiunge irregolarità nel contenuto dei dati, sequenza, ecc. Questo è anche noto come test di sintassi, test grammaticale, test di robustezza, ecc. Fuzzer può generare casi di test da uno esistente, oppure possono utilizzare input validi o non validi.
Esistono due limitazioni del fuzzing basato su protocollo:
- Il test non può procedere fino a quando la specifica non è matura.
- Molti protocolli utili sono un'estensione dei protocolli pubblicati. Se il test fuzz si basa su specifiche pubblicate, la copertura del test per i nuovi protocolli sarà limitata.
La forma più semplice di tecnica di fuzzing è l'invio di input casuale 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 abbiamo solo bisogno di cambiare gli input esistenti. Possiamo cambiare input semplicemente scambiando i bit di input.
Tipi di bug rilevati da Fuzz Testing
-
Errori di asserzioni e perdite di memoria questa metodologia è ampiamente utilizzata per applicazioni di grandi dimensioni in cui i bug stanno compromettendo la sicurezza della memoria, che è una grave vulnerabilità.
- Inserimento non valido
Nel test fuzz, i fuzz 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 controlla il suo 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, Peach Fuzzer, ecc.
- Peach Fuzzer
Peach Fuzzer offre una copertura più robusta e sicura rispetto a uno scanner. Altri strumenti di test possono cercare solo thread noti mentre Peach Fuzzer consente agli utenti di trovare thread noti e sconosciuti.
- Spike Proxy
È uno strumento di livello professionale alla ricerca di vulnerabilità a livello di applicazione nelle applicazioni web. SPIKE Proxy copre le basi, come SQL Injection e cross-site-scripting, ma è un'infrastruttura Python completamente aperta. SPIKE Proxy è disponibile per Linux e Windows.
- Webscarab
Webscarab è scritto in Java quindi portabile su molte piattaforme. Per l'analisi dell'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 consentono 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à la lista dei problemi segnalati.
- OWASP WSFuzzer
WSFuzzer è un programma GPL scritto in Python. Un programma con licenza GPL attualmente si rivolge ai servizi Web. Nella versione corrente di OWASPWSFuzzer i servizi SOAP basati su HTTP sono l'obiettivo principale.
Vantaggi del Fuzz Testing
- Il test fuzz migliora i test di sicurezza del software.
- I bug trovati nel fuzzing sono a volte 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, questi bug si trovano anche in Fuzz testing.
Svantaggi del Fuzz Testing
- Il test fuzz da solo non può fornire un quadro completo di una minaccia o di bug alla sicurezza complessivi.
- 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 può rilevare solo errori o minacce semplici.
- Per funzionare in modo efficace, richiederà molto tempo.
- L'impostazione di una condizione di valore limite con input casuali è molto problematico, ma ora utilizzando algoritmi deterministici basati sugli input degli utenti la maggior parte dei tester risolve questo problema.
Sommario:
In 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, garantisce che l'applicazione sia robusta e sicura, poiché questa tecnica aiuta a esporre la maggior parte delle vulnerabilità comuni.
Questo articolo è fornito da Priyanka Kothe