Stack overflow: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 1:
Uno "[[stack]] overflow" (inteso come "attacco" informatico) è una delle tecniche base di [[exploit]] più semplici, dalla quale esistono vari tipi di protezione (vedi [[Pa]]X). Lo stack, nella [[memoria]], è l'area dedicata alle informazioni relative all'esecuzione delle [[funzioni]] e alla manipolazione dei dati tra e dentro di esse. Esso è suddiviso in vari "[[frame]]", così arrangiati: ad ogni chiamata di funzione, viene eseguito un ''push'' nello stack degli argomenti di quest'ultima, seguito da una copia del registro EIP (il puntatore alle istruzioni) e da una copia del registro EBP (il puntatore alla base dello stack-frame corrente - vedi [[IA32]]), al quale si fa puntare il nuovo EBP. A questo punto, nella funzione chiamata, il sistema alloca staticamente la memoria per le nuove [[variabili]] locali; se una di queste variabili può essere "riempita" con dati provenienti - direttamente o indirettamente - da un "[[input]]" sul quale non vi sono '''controlli sulla dimensione''', è possibile sovrascrivere i dati che stanno nelle locazioni di memoria inferiori, ovvero, in ordine, eventuali altre variabili locali, la copia del vecchio base pointer (EBP) e, quindi, la copia del vecchio instruction pointer
|