Heap overflow: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pil56-bot (discussione | contributi)
smistamento lavoro sporco
Nessun oggetto della modifica
Riga 2:
'''Heap overflow''', o '''heap overrun''', è il nome usato per indicare un [[buffer overflow]] che avviene nell'area dati della [[heap]]. A differenza che nello [[stack]], dove la memoria viene allocata staticamente, nella heap essa viene allocata in modo dinamico dalle applicazioni a run-time e tipicamente contiene dati dei programmi utente.
 
Gli heap overflow solitamente vengono solitamente usati dai [[cracker]] per perforareabusare di programmi scritticontenenti alcune vulnerabilità dovute ad insufficiente validazione degli input, calcolo sbagliato della memoria da allocare o superamento del limite inmassimo mododi nonmemoria impeccabileallocabile. L'attacco avviene come segue: se un'applicazione copia dei dati senza preventivamente controllare se trovano posto nella variabile di destinazione, il cracker può fornire al programma un insieme di dati troppo grande per essere gestito correttamente, andando così a sovrascrivere i [[metadato|metadati]] (cioè le informazioni di gestione) della heap, prossimi alla destinazione dell'insieme di dati. In questo modo, l'attaccante può sovrascrivere una locazione arbitraria di memoria, con una piccola quantità di dati. Nella maggior parte degli ambienti, questo può fornire all'attaccante il controllo dell'esecuzione del programma.
 
La vulnerabilità [[Microsoft]] [[JPEG]] GDI+ [http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx MS04-028] è un esempio del pericolo che uno heap overflow può rappresentare per un utente informatico. In sintesi, questa vulnerabilità permetteva, durante la visualizzazione di una immagine JPEG ed attraverso un buffer overrun, l'esecuzione di codice malevolo in remoto che, se eseguito nello spazio di un utente con privilegi di amministratore, permetteva all'attaccante di prendere il controllo dell'intero sistema.