Che cos’è l’heap spraying?

L’heap spraying è una tecnica di hacking utilizzata per sfruttare le vulnerabilità nel software del computer. Agisce per ottenere il controllo su un programma sfruttando una parte della sua memoria. Una volta che una parte della memoria è controllata dal codice di hacking, l’hacker può assumere il controllo dell’esecuzione del codice implementando un buffer overflow nell’area heap della memoria. L’applicazione più comune per l’heap spraying è l’hacking di browser Web come Internet Explorer®.

Un “heap” è un blocco dinamico di memoria che il computer assegna a un particolare programma, così chiamato perché il computer dedica un mucchio virtuale di memoria al programma. Questo può essere pensato come uno spazio di archiviazione in un armadio o in una scrivania. Questo mucchio di memoria appartiene al programma fino a quando il software o il codice di raccolta del sistema operativo non lo rilasciano. Il codice di raccolta è semplicemente un dispositivo di sicurezza che recupera la memoria se il programma si arresta in modo anomalo o il software stesso non riesce a rilasciare la memoria al termine dell’utilizzo.

Nell’heap spraying, un hacker tenta di “spruzzare” l’heap di memoria con una porzione specifica di codice. L’obiettivo è posizionare il codice in una posizione specifica all’interno dell’heap di memoria del programma, come incastrare un piede di porco nel bordo di uno stipite per fornire una leva per forzare l’apertura della porta. Dopo che le informazioni sono state incuneate nell’heap di memoria attraverso la spruzzatura di calore, l’hacker può quindi traboccare l’heap o l’intero buffer di memoria, generando errori all’interno del sistema. Una volta che si verificano errori, l’hacker può sfruttarli per eseguire il proprio codice sul sistema.

L’heap spraying funziona grazie all’allocazione dinamica della memoria nel sistema. Il programma per computer essenzialmente “possiede” l’intero pezzo di memoria per il momento, quindi l’hacker conosce già la posizione relativa all’interno della memoria che il computer ha assegnato al programma. Pertanto, l’hacker ha bisogno di poca specificità per incastrare il suo codice nelle fessure; può spruzzare il codice alla cieca, sapendo che il blocco di memoria sarà sempre lì finché il programma continua a funzionare. Questo potrebbe essere paragonato al tentativo di forzare una serratura con gli occhi bendati; il compito diventa quasi impossibile se il lucchetto si muove, ma finché rimane in una posizione fissa, come fa il mucchio di memoria nel sistema, il lavoro diventa possibile.