Skip to main content

Cos'è il test fuzz?

Test fuzz, o fuzzing, è un metodo per verificare come un programma o un sistema per computer risponderà a vari input e informazioni a volte casuali.Il processo prevede la generazione di un qualche tipo di dati, completamente casuale o casuale all'interno di determinati vincoli, e quindi alimentare tali dati nel programma per testare come gestisce le informazioni impreviste.La forma più elementare di test fuzz prevede l'invio di una sequenza casuale di pressioni o caratteri del tasto al programma e controllando che li elabora correttamente.Una versione più complessa di Fuzz Testing utilizza dati strutturati che vengono quindi manipolati in modo casuale e inviato al programma.I dati possono raggiungere il programma come eventi di sistema, input della tastiera, segnali di rete deridi o anche come file che devono essere caricati.

Ci sono varie parti di un programma per computer che possono essere testati con un generatore fuzz.L'interfaccia utente grafica (GUI) può essere testata creando una sequenza di eventi casuali di mouse e tastiera e verificando che la GUI è in grado di gestire l'input senza arrestare, congelare o eseguire un'attività imprevisto.I protocolli di rete possono essere testati consentendo al generatore fuzz di modificare casualmente parti di un pacchetto di dati valido e quindi garantendo che il protocollo possa continuare a funzionare dopo aver ricevuto dati malformati.Gli elementi di input di base di quasi tutti i programmi possono essere verificati per la loro capacità di resistere agli errori, come l'input che è troppo lungo per il tipo di archiviazione, input che è di un tipo diverso da quello previsto e input che è in qualche modo incompleto o errato.

Il settore della sicurezza informatica può utilizzare i test fuzz per garantire che non esistano fori di sicurezza evidenti in alcuni sistemi.Questo può essere fatto utilizzando un generatore fuzz progettato per testare la sicurezza del computer.Questi programmi tenteranno di utilizzare le parole chiave del sistema, le password dell'amministratore predefinito note, le funzioni all'interno delle librerie utilizzate dal programma e le chiamate casuali alle funzioni di sistema per vedere come reagiranno il programma.

I diversi tipi di test fuzz possono essere personalizzati all'internoAlcuni intervalli o anche per testare solo tipi specifici di input.Ciò significa che un programma potrebbe avere solo comandi validi inviati ad esso, ma potrebbero essere in un ordine senza senso.Esistono programmi di test fuzz più complessi che possono prendere elementi del programma target e manipolarli per produrre situazioni che potrebbero essere sfruttate maliziosamente.Ciò può includere la modifica dell'ordine dei processi generati, le modifiche delle autorizzazioni o la modifica dei dati di base e dei file di libreria.

Il risultato finale dei test fuzz è vedere se un programma è sicuro e si comporta come dovrebbe essere affrontato con unsituazione inaspettata.Se utilizzato in tandem con software di profilazione e analisi, può anche rilevare perdite di memoria nelle aree del programma come la gestione degli errori o le bottiglia delle prestazioni.In caso di sicurezza informatica, problemi pericolosi come gli overflow che possono compromettere un sistema possono essere catturati con la configurazione corretta.I test fuzz, tuttavia, non possono essere utilizzati come unico metodo di test del software e devono far parte di un più ampio processo di garanzia della qualità e ispezione del software.