Che cos’è e come funziona il Buffer overflow in informatica

Che cos’è e come funziona il Buffer overflow in informatica

Un buffer è un blocco contiguo di memoria che contiene più istanze dello stesso tipo di dato. In C un buffer viene normalmente associato ad un array. L’overflow di un buffer (o Buffer overflow) consiste nel riempire oltre il limite tale buffer.

Il continuo sviluppo di sistemi informatici e l’enorme diffusione delle reti ha reso quanto mai attuale e di fondamentale importanza il problema della SICUREZZA. In questo ambito uno degli aspetti più rilevanti degli ultimi tempi riguarda il buffer overflow, tecnica che può essere sfruttata da un attacker per modificare parte dello stato interno di un programma quando il programmatore non abbia posto particolare attenzione all’aspetto della sicurezza. Riuscire a modificare la normale esecuzione di un processo significa anche avere la possibilità di eseguire codice arbitrario e, al limite, impadronirsi della macchina da remoto.

Che cos'è e come funziona il Buffer overflow in informatica

D’altro canto è chiaro che grazie a questa semplice mancanza di cura nella programmazione si può alterare il normale flusso d’esecuzione del programma. Ciò significa che è possibile riferirsi ad un indirizzo di memoria scelto che permetta di eseguire codice arbitrario voluto dall’attacker. In tal modo si riesce ad avere l’accesso ed il controllo di una macchina senza essere in possesso di nessuna shell o account sulla stessa, ovvero si ottiene quello che viene chiamato un exploit da remoto. La cosa però non è così semplice come sembra! Anzitutto è necessario trovare un posto adeguato dove scrivere il codice voluto: poiché la sezione testo del processo è a sola lettura, il posto più adeguato risulta proprio il buffer stesso, fermo restando che il buffer abbia dimensione sufficiente a contenere il codice (altrimenti bisogna ricorrere ad altre tecniche più avanzate per reindirizzare l’esecuzione in punti diversi).

Buffer overflow in informatica

L’altro rilevante problema sta nel riuscire ad indirizzare l’IP all’inizio del buffer perché è proprio a partire da lì che l’attacker vorrà posizionare il suo programma; bisognerà quindi pensare principalmente a realizzare la stringa da copiare nel buffer in modo che contenga nella parte iniziale il codice del programma da exploitare ed in seguito l’indirizzo di allocazione del buffer che dovrà andare a sovrascrivere l’IP.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *