Stack overflow: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 2:
Uno '''stack overflow''' consiste (solitamente) nella sovrascrittura della locazione di memoria interna allo stack contenente l''''indirizzo di ritorno''' oppure la copia del precedente '''frame pointer''' (vedi [[call stack]]). In modo tale, è possibile forzare il sistema a redirigere il flusso di esecuzione - nel momento del ritorno alla funzione chiamante - ad una locazione di memoria dove ha inizio del codice arbitrario.
I moderni sistemi operativi e compilatori sono dotati di vari meccanismi di protezione e randomizzazione dello stack, e di riorganizzazione fisica delle variabili sensibili (per evitare la sovrascrittura di puntatori).
=== Esempio di programma vulnerabile in Linux (senza protezioni) ===
|