Skip to main content

Cos'è un overflow del buffer dello stack?

Un overflow del buffer dello stack è ciò che accade quando un programma effettua una voce in una memoria dei computer più lunga dello spazio allocato.In alcune circostanze questo può corrompere altri dati in memoria, causando problemi nell'esecuzione del computer.In altri casi un overflow buffer dello stack può essere sfruttato da un'applicazione dannosa per assumere il controllo di altre parti del computer.

Il nome da un overflow del buffer dello stack deriva prima dallo stack, che è effettivamente un elenco attivo in cui i dati sono organizzati: Il termine deriva dall'analogia di accumulare oggetti fisici.Una versione di questo, lo stack di ,

è l'elenco che un programma per computer utilizza per tenere traccia delle varie parti del programma, le subroutine, che operano in un determinato momento.Poiché lo stack di chiamata opera su base temporanea e deve accedere rapidamente, si trova nella memoria dei computer piuttosto che in archiviazione permanente come il disco rigido.

perché i moderni sistemi operativi consentono di eseguire più programmi contemporaneamente, lìè una necessità di organizzare il modo in cui viene assegnata la memoria, incluso le stack di chiamare.Questo viene fatto in modo efficiente assegnando buffer, uno spazio nella memoria progettato per essere abbastanza grande da far fronte allo spazio massimo richiesto da un determinato buffer.Nella maggior parte dei casi parte dello spazio non sarà utilizzato, quindi funge da buffer tra i dati di diverse applicazioni, lasciando spazio per far fronte se si richiede improvvisamente spazio extra.Un modo per visualizzarlo sarebbe pensare a una biblioteca che ha assegnato una certa quantità di spazio a ciascuna area tematica, assicurandosi di lasciare un po 'di spazio in più per far fronte se, ad esempio, tutti i libri su un soggetto erano in biblioteca alla bibliotecaStesso tempo, piuttosto che uno di loro che viene controllato.

Un overflow del buffer dello stack si verifica quando un programma scrive i dati dello stack di chiamata al buffer in un modo che supera lo spazio allocato.Questo può accadere per errore, di solito attraverso un bug in un programma.Ad esempio, se un'applicazione è progettata per consentire all'utente di digitare un numero di telefono, ma non ha limiti al numero di caratteri che possono essere inseriti, un hacker può essere in grado di utilizzare il campo illimitato per causare intenzionalmente un overflow del buffer dello stack.A seconda del modo in cui funziona il sistema operativo, ciò potrebbe consentire all'hacker di accedere indirettamente a un'altra applicazione o del sistema operativo stesso.

Esistono diversi approcci per mitigare gli effetti di un overflow del buffer dello stack.Uno è noto come randomizzazione del layout spaziale degli indirizzi.Ciò organizza le aree più importanti di dati sul computer in modo casuale.L'idea è che anche se un hacker causa o sfrutta un overflow del buffer dello stack, non sarà in grado di sfruttare la violazione in modo affidabile.