Che cos'è il test Fuzz?
Il test del fuzz o fuzzing è un metodo per verificare come un programma per computer o un sistema risponderà a vari input e informazioni, a volte casuali. Il processo prevede la generazione di alcuni tipi di dati, completamente casuali o casuali entro determinati vincoli, e quindi l'inserimento di tali dati nel programma per testare come gestisce le informazioni impreviste. La forma più semplice di test fuzz prevede l'invio di una sequenza casuale di tasti premuti o caratteri al programma e la verifica che li elabori correttamente. Una versione più complessa del test fuzz utilizza dati strutturati che vengono quindi manipolati casualmente e inviati al programma. I dati possono raggiungere il programma come eventi di sistema, input da tastiera, segnali di rete falsi o persino come file da caricare.
Esistono varie parti di un programma per computer che possono essere testate con un generatore di fuzz. L'interfaccia utente grafica (GUI) può essere testata creando una sequenza di eventi casuali di mouse e tastiera e controllando che la GUI sia in grado di gestire l'input senza arresti anomali, blocco o esecuzione di un'attività imprevista. I protocolli di rete possono essere testati consentendo al generatore di fuzz di cambiare casualmente parti di un pacchetto di dati valido e quindi garantire che il protocollo possa continuare a funzionare dopo aver ricevuto dati non validi. Gli elementi di input di base di quasi tutti i programmi possono essere verificati per la loro capacità di resistere agli errori, come input troppo lunghi per il tipo di archiviazione, input di tipo diverso da quello previsto e input in qualche modo incompleti o errati.
L'industria della sicurezza informatica può utilizzare i test fuzz per garantire che non esistano evidenti buchi di sicurezza in alcuni sistemi. Questo può essere fatto utilizzando un generatore di fuzz progettato per testare la sicurezza del computer. Questi programmi tenteranno di utilizzare parole chiave di sistema, password di amministratore predefinite note, funzioni all'interno delle librerie utilizzate dal programma e chiamate casuali a funzioni di sistema per vedere come reagirà il programma.
I diversi tipi di test fuzz possono essere personalizzati per rientrare in determinati intervalli o anche per testare solo tipi specifici di input. Ciò significa che un programma può 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 in modo dannoso. Ciò può includere la modifica dell'ordine dei processi generati, le modifiche delle autorizzazioni o la modifica dei dati principali e dei file di libreria.
Il risultato finale del test fuzz è vedere se un programma è sicuro e si comporta come dovrebbe quando si trova di fronte a una situazione inaspettata. Se utilizzato in combinazione con software di profilazione e analisi, può anche rilevare perdite di memoria in aree del programma come la gestione degli errori o colli di bottiglia delle prestazioni. In caso di sicurezza del computer, problemi pericolosi come overflow che possono compromettere un sistema possono essere individuati 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 processo più ampio di garanzia della qualità e ispezione del software.