heap e stack sono due strutture dati usate nei sistemi operativi. Si puo' avere un heap overflow o più spesso stack overflow, più genericamente si parla di buffer overflow (BOF). Overflow significa tracimazione.
Il BOF è sempre causato da un errore di programmazione. Se uno alloca una zona di memoria (nello stack o nell'heap per es.) per contenere dei dati deve sempre verificare che i dati scritti non superino la dimensione del buffer stesso. Se questo succede si ha BOF. In caso di BOF i dati che tracimano vanno a sovvrascrivere degli altri dati del programma. Sotto opportune condizioni è possibile creare ad arte i dati tracimati per far si che l'esecuzione del programma segua un corso diverso. Studiando opportunamente i dati di input di un programma vulnerabile a BOF è quindi possibile che l'attaccante prenda il controllo del codice e gli faccia fare quello che più gli pare.
Se ci occupiamo di macchine *nix è possibile che il programma in questione abbia settato il SUID. Se questo succede significa che il prog gira sempre con credenziali di root qualsiasi sia l'utente che l'ha lanciato. Se tramite BOF si prende il controllo di un tale programma si è riusciti ad ottenere una scalata di privilegi: da semplice utente a utente root.

Rispondi quotando