Heap-based overflow
Finora abbiamo visto solo attacchi a buffer presenti all’interno di quella regione dello spazio di un processo conosciuta con il nome di stack. E’ tuttavia possibile anche attaccare buffer presenti nell’area dati (o heap).
Inizialmente tale area appare come segue:
Una volta sovrascritto il buffer con il codice dell’exploit è necessario trovare il modo per saltarci dentro, ovvero per dirottare il flusso di esecuzione all’interno del buffer modificato. L’idea è quella di sovrascrivere un puntatore al codice in modo da farlo puntare all’interno del buffer.
Mostriamo di seguito un esempio di programma affetto da quest’altro tipo di vulnerabilità:
Dando un argomento abbastanza lungo è possibile sovrascrivere il puntatore a funzione f e dirottare il flusso del programma.