Una guida completa ai test fuzz

Pubblicato: 2021-05-17

I test di sicurezza sono uno dei passaggi più importanti per garantire che il software sia pronto per il rilascio ufficiale, sia per scopi aziendali che per uso commerciale. Ti consente di rilevare eventuali vulnerabilità che il tuo software potrebbe avere e di sviluppare una contromisura per loro se un hacker si avvantaggia di tale difetto.

Se sei interessato ai test di sicurezza, puoi conoscere i fatti qui ora, ma una cosa che devi sapere è che ci sono tutti i modi per condurre test di sicurezza, come valutazione del rischio, test di penetrazione e scansione delle vulnerabilità. E se hai già una certa familiarità con i test di sicurezza, probabilmente hai sentito parlare del termine "test fuzz".

Il test fuzz è una tecnica di test relativamente comune nel settore al giorno d'oggi, soprattutto da quando giganti aziendali come Microsoft e Google lo utilizzano da oltre un decennio. Ma ciò che sorprende è che, nonostante sia una tecnica standard, non molte persone la conoscono. Detto questo, questa guida si propone di spiegare cos'è il fuzz testing, a partire dalla sua definizione.

Che cos'è il test Fuzz?

Il test fuzz, o ciò che altri chiamano "fuzzing", implica l'inserimento di dati non validi o casuali in un programma per rilevare eventuali vulnerabilità che possono portare a errori sfruttabili. Questo input può essere sotto forma di un file o un input diretto dall'utente. Quindi, ad esempio, se stai costruendo una sorta di programma di calcolo, di solito devi inserire numeri o operazioni matematiche. Ma se stai conducendo un test fuzz, dovresti inserire un input non valido come lettere o persino caratteri speciali.

Se così facendo si arresta in modo anomalo il programma o si causa qualsiasi altro tipo di errore, il programmatore presume che ci sia una vulnerabilità e quindi può lavorare per modificare la codifica nella speranza di risolvere il problema. A prima vista, potresti pensare che il test fuzz sia lo stesso di altre tecniche come la scansione della vulnerabilità o il test di penetrazione, ma c'è una ragione per la sua popolarità.

Perché le aziende utilizzano i test Fuzz?

Non esiste una soluzione valida per tutti quando si tratta di test di sicurezza. Ogni metodo può rilevare problemi che altri non possono; alcuni richiedono costi operativi inferiori, mentre altri sono più facili da eseguire. Proprio come ogni tecnica di test di sicurezza, il test fuzz è unico a modo suo. Di seguito sono riportati alcuni vantaggi che spingono le aziende a utilizzare i test fuzz.

  • Semplicità: sai già come funziona il test fuzz: si tratta di inserire input non validi in un programma. La semplicità del processo in generale rappresenta un grande vantaggio per individui o organizzazioni prive di competenze ed esperienza in termini di test di sicurezza.
  • Automazione: i test di sicurezza potrebbero essere un passaggio cruciale nello sviluppo di software e applicazioni, ma spesso ci sono altre cose da fare oltre a testare costantemente il programma. Tuttavia, è una storia diversa con i test fuzz poiché puoi automatizzare l'intero processo usando i fuzzer.

I fuzzer sono strumenti responsabili dell'immissione automatica dei dati nel programma se vengono forniti i comandi e le condizioni necessari. Il fatto che il test fuzz consenta l'automazione aziendale lo rende una tecnica di test ideale per le aziende.

  • Comodo: di solito, durante il test, è necessario utilizzare quanti più strumenti possibili per ridurre la probabilità di bug e massimizzare la sicurezza del programma. Poiché il test fuzz è automatizzabile e semplice, è un modo conveniente per migliorare la sicurezza del software.

Il fuzzing, in generale, è semplice e facile da implementare, ma vale la pena notare che esistono tutti i tipi di approcci al test fuzz. A seconda del tipo utilizzato, la difficoltà e la complessità del processo di test possono variare. A tale proposito, questo potrebbe essere un buon momento per parlare dei diversi tipi di test fuzz.

Approcci diversi ai test Fuzz

Sebbene esistano diversi tipi di test fuzz, sono per lo più simili tra loro, tranne per il fatto che generano input in modo diverso. Indipendentemente da ciò, ci sono quattro approcci per il test fuzz:

  • Dumb Fuzzing: quando si desidera generare input in modo completamente casuale, in genere si utilizza un dumb fuzzer. Un dumb fuzzer è uno strumento che produce input senza una conoscenza preliminare o intelligenza del programma, da cui il nome.

Ad esempio, se stai creando un programma di controllo grammaticale, uno stupido fuzzer potrebbe finire per generare un'immagine, che è ben lontana da ciò che il programma si aspetta. Il fuzzing muto è l'approccio più semplice al test del fuzz.

  • Smart Fuzzing: Dall'altra parte della medaglia c'è il fuzzing intelligente. A differenza del dumb fuzzing, il fuzzing intelligente genera input sapendo cosa il programma si aspetta di ricevere. Inoltre, un fuzzer intelligente non genererà input che inevitabilmente andranno in crash il programma. Invece, verrà fornito un input che può causare comportamenti imprevisti.

Quindi nell'esempio precedente, un fuzzer intelligente potrebbe generare caratteri speciali ma mai un'immagine o qualsiasi altro input non adatto. Sebbene i fuzzer intelligenti siano più difficili da implementare rispetto ai fuzzer stupidi, sono più accurati per la maggior parte del tempo.

  • Fuzzing mutazionale: il fuzzing mutazionale implica la generazione di input modificando o, più specificamente, "mutando" un input valido esistente. Nel nostro esempio con il programma calcolatrice, un fuzzer mutazionale può scegliere un input valido esistente.

Supponiamo che l'input selezionato sia '10+9.' Un fuzzer mutazionale proverà a modificare questo input aggiungendo, rimuovendo o alterando una parte di questo input, ad esempio aumentando il valore e trasformandolo in "180+129" o modificando l'operazione per ottenere "10/9".

  • Fuzzing generazionale: Infine, il fuzzing generazionale genera input da zero, che è l'opposto del fuzzing mutazionale che genera input da quelli esistenti. Poiché non ci sono riferimenti, i fuzzer generazionali sono molto più difficili da implementare rispetto ai fuzzer mutazionali, ma possono portare a più dati per il tester.

Ciò che rende il test fuzz un po' più interessante rispetto ad altre tecniche è che puoi combinare diversi tipi per migliorare lo strumento di test. Ad esempio, puoi creare un fuzzer mutazionale intelligente o un fuzzer generazionale stupido, a seconda di ciò di cui ha bisogno il tuo programma. Forse le innumerevoli combinazioni che puoi eseguire con i test fuzz sono un altro motivo per cui le aziende preferiscono i test fuzz rispetto ad altri metodi.

Avvolgendo

Dopo aver appreso di più sui test fuzz, è facile capire perché è diventato così popolare come lo è ora. Tuttavia, vale anche la pena notare che, proprio come qualsiasi altra tecnica, il test fuzz presenta alcuni svantaggi. Pertanto, è essenziale determinare se il test fuzz può fare più bene che danneggiare la tua applicazione o il tuo software. Come detto in precedenza, non esiste una soluzione valida per tutti i test di sicurezza del software e il test fuzz non sarà sicuramente quella soluzione.

Hai qualche idea su questo? Fatecelo sapere in basso nei commenti o trasferite la discussione sul nostro Twitter o Facebook.

Raccomandazioni della redazione: