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.

Test fuzz

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 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 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:

  1. Il test non può procedere finché la specifica non sarà matura.
  2. 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 a 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.

Sommario

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.