Le vulnerabilità del software sono un problema significativo nella sicurezza informatica. Consentono di attaccare i prodotti software e quando tali prodotti sono collegati a reti altrimenti sicure, possono fornire un punto di ingresso per gli hacker.

Tutti i prodotti software professionali vengono accuratamente testati prima del rilascio. Sfortunatamente, le vulnerabilità sono ancora un evento comune. Un modo per trovare ulteriori vulnerabilità consiste nell'utilizzare una tecnica di test del software nota come fuzzing.

Allora, cos'è il fuzzing e come funziona?

Cos'è il fuzz?

Il fuzzing è una tecnica di test software automatizzata che tenta di trovare le vulnerabilità utilizzando input casuali.

Il software spesso si comporta in modo imprevedibile quando l'utente immette un input diverso da quello richiesto. Il fuzzing è la pratica di inserire grandi quantità di input imprevisti e registrare ciò che accade. L'idea è che l'utente possa quindi monitorare il software e determinare se sono presenti o meno vulnerabilità.

instagram viewer

Il fuzzing viene utilizzato per testare i prodotti software e dai professionisti della sicurezza per determinare se una rete è sicura. Viene anche utilizzato dagli hacker che si esercitano nel fuzzing per trovare vulnerabilità che loro stessi possono utilizzare.

Le vulnerabilità scoperte dal fuzzing variano ampiamente. Un input imprevisto potrebbe causare il semplice arresto anomalo del software. Ma può anche restituire informazioni private o consentire all'utente di accedere a parti del software che altrimenti sarebbero off limits.

Quali sono i vantaggi del fuzzing?

Il fuzzing è solo uno dei tanti modi in cui è possibile testare le vulnerabilità dei prodotti software. È popolare perché:

  • Il fuzzing è completamente automatizzato. Una volta che un programma fuzz è impostato, può continuare a cercare vulnerabilità senza l'input umano.
  • Fuzzing può trovare vulnerabilità che altre tecniche di test del software non trovano. Per questo motivo viene spesso utilizzato in aggiunta alle tecniche manuali.
  • Il fuzzing è spesso usato dagli hacker per trovare vulnerabilità zero-day. L'utilizzo delle stesse tecniche degli hacker consente agli sviluppatori di trovare vulnerabilità zero-day prima di loro.

Come funziona il fuzzing?

Uno strumento utilizzato per il fuzzing ha in genere tre componenti. Sono spesso indicati come un poeta, un corriere e un oracolo.

Il poeta

Il poeta avvia il processo ed è responsabile della generazione di un banco di prova. Un test case è un lungo elenco di potenziali input.

Il Corriere

Il corriere inserisce tutti gli input casuali nel software mirato. I fuzzer sono progettati per farlo automaticamente, consentendo di testare grandi quantità di input in blocco.

L'oracolo

L'oracolo controlla se uno qualsiasi degli input fa sì che il software faccia qualcosa di diverso da quello per cui è stato progettato. Se il fuzzing viene eseguito per scopi legittimi, il comportamento può essere replicato e corretto. Oppure, se il fuzzing viene eseguito da un hacker e il comportamento imprevisto è utile, potrebbe essere utilizzato per scopi dannosi.

In che modo gli aggressori usano il fuzzing?

Il fuzzing è una tecnica popolare tra gli hacker perché consente loro di trovare vulnerabilità nel software senza accedere al codice sorgente. Poiché il fuzzing è automatizzato, è anche facile da eseguire. Se un hacker scopre una vulnerabilità, potrebbe essere in grado di eseguire i seguenti attacchi.

Attacchi DDoS

Se fuzzing scopre che alcuni input richiedono molto tempo per essere elaborati, queste informazioni possono essere utilizzate per lanciare un attacco DDoS. Un attacco DDoS implica l'invio di così tante richieste a un sistema che smette di funzionare. Il fuzzing consente di personalizzare le richieste in modo che richiedano la maggior parte delle risorse di sistema a cui rispondere.

SQL Injection

Un attacco SQL injection è quando le istruzioni SQL dannose vengono inviate a un'applicazione. Se queste istruzioni non vengono disinfettate correttamente, possono consentire a un utente malintenzionato di interagire con il database. Ciò potrebbe consentire loro di rubare dati o modificarli. Il fuzzing è uno strumento efficace per tentare grandi quantità di istruzioni SQL e determinare se alcune producono una risposta favorevole.

Overflow del buffer

Un attacco di overflow del buffer è quando vengono aggiunti più dati al buffer di un programma di quanti ne possa gestire. In questo scenario, è possibile che un hacker faccia in modo che quel programma esegua codice dannoso. Questo può essere utilizzato per rubare dati o per ottenere accessi non autorizzati. Il fuzzing viene utilizzato per trovare input che possono causare un overflow del buffer.

Tipi di fuzz

Gli strumenti fuzzing possono essere classificati in base sia a come vengono generati i casi di test sia a quanto si sa sul sistema.

Muto vs. Inteligente

Il fuzzing stupido aggiunge semplicemente grandi quantità di input casuali. Non sceglie gli input che molto probabilmente saranno accettati dall'applicazione. Ciò semplifica l'implementazione senza sapere nulla del software; tuttavia, è anche altamente inefficiente poiché la maggior parte degli input verrà rifiutata.

Il fuzzing intelligente genera input che è probabile che l'applicazione accetti. Richiede che l'utente capisca quale formato di input è accettabile e quindi generi grandi quantità di input all'interno di quel formato. L'implementazione del fuzzing intelligente richiede più impegno e conoscenza del prodotto, ma è significativamente più efficiente.

Mutazionale vs. Generazionale

I fuzzer mutazionali prendono un input precedentemente accettato e apportano modifiche minori. Ciò consente di generare input che potrebbero essere accettati senza la conoscenza del formato accettato.

I fuzzer generazionali creano input completamente nuovi basati su ciò che è noto sul formato accettato.

Scatola bianca vs. Scatola nera

Il fuzzing della scatola nera viene utilizzato senza alcuna informazione sull'applicazione in fase di test. È meno efficace del white box fuzzing ma può essere applicato a qualsiasi applicazione senza accedere al codice sorgente. Questo lo rende popolare tra gli hacker.

Il fuzzing della casella bianca utilizza le informazioni sull'applicazione in fase di test per creare input che è più probabile che vengano accettati e che producano vulnerabilità. Viene utilizzato principalmente dagli sviluppatori di software perché è più efficace del fuzzing della scatola nera.

Fuzzing è un potente metodo di test del software utilizzato da sviluppatori di software, professionisti della sicurezza e hacker. Richiede uno sforzo minimo per l'implementazione ed è in grado di trovare vulnerabilità che altre tecniche di test del software non trovano.

È particolarmente importante dal punto di vista della sicurezza perché viene spesso utilizzato per scoprire vulnerabilità zero-day. Queste vulnerabilità possono essere scoperte e corrette da professionisti della sicurezza oppure scoperte e sfruttate dagli hacker.