Che cos'è l'heap spray?
L'heap spray è una tecnica di hacking utilizzata per sfruttare le vulnerabilità nel software del computer. Agisce per ottenere il controllo di 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 la spruzzatura di heap è l'hacking di browser Web come Internet Explorer®.
Un "heap" è un blocco dinamico di memoria che il computer assegna a un determinato programma, così chiamato perché il computer dedica una pila virtuale di memoria al programma. Questo può essere pensato come spazio di archiviazione in un armadio o una scrivania. Questo mucchio di memoria appartiene al programma fino a quando non viene rilasciato dal software o dal codice di raccolta del sistema operativo. Il codice di raccolta è semplicemente un dispositivo fail-safe che recupera la memoria se il programma si arresta in modo anomalo o il software stesso non riesce a rilasciare la memoria dopo aver terminato l'uso.
Nella spruzzatura dell'heap, un hacker tenta di "spruzzare" l'heap di memoria con una porzione specifica di codice. L'obiettivo è quello di posizionare il codice in una posizione specifica all'interno dell'heap di memoria del programma, come incuneare un piede di porco sul bordo di un telaio 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ò trarne vantaggio per eseguire il proprio codice sul sistema.
L'heap spray 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 incuneare il suo codice nelle fessure; può spruzzare il codice alla cieca, sapendo che il blocco di memoria sarà sempre lì finché il programma continuerà a funzionare. Questo potrebbe essere paragonato al tentativo di scegliere un lucchetto con gli occhi bendati; l'attività diventa quasi impossibile se il blocco si sta spostando, ma fintanto che rimane in una posizione fissa, così come il mucchio di memoria nel sistema, il lavoro diventa possibile.