Vai al contenuto

Stack overflow

Da Wikipedia, l'enciclopedia libera.
Versione del 26 gen 2006 alle 16:48 di Marijuana (discussione | contributi)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Uno stack overflow è la scrittura al di fuori dei limiti della memoria assegnata allo stack che si va a sostituire alle istruzioni del programma in esecuzione. Si immagini l'utilizzo di una allocazione di memoria dedicata all'esecuzione di un programma come una pila. Mentre le istruzioni vengono allocate in quell'area partendo dall'alto verso il basso della pila, lo stack, utilizzando la sua organizzazione LIFO, crescerà dal basso verso l'alto di questa seguendo quanto indicato dallo Stack Pointer, un registro dedicato delle CPU. Se ad ogni operazione di Push nello stack non corrisponde una operazione di Pop questo può continuare a lievitare fino a giungere a sovrascrivere le informazioni del programma. Opportunatamente sfruttato questo tipo di overflow può far si che un utente malintenzionato sfrutti questa vulnerabilità per l'esecuzione di codice arbitrario che si va a sostituire a quello del programma in esecuzione.