Definizione di Overflow in informatica

Definizione di Overflow in informatica

Generalmente si distinguono due tipologie di attacco basate sull’overflow: il buffer e lo stack overflow. Il primo è basato su un difetto del programma, che in presenza di una quantità di dati maggiore di quella attesa, produce una sovrascrittura di aree di memoria contigue. Di conseguenza il programma può dare risultati errati o imprevedibili, bloccarsi o bloccare il computer (in caso di coinvolgimento di driver di periferiche  o  di  componenti  del  sistema  operativo  stesso).  Questa  debolezza dei programmi è nota da molto tempo, ma solo di recente la sua conoscenza si è diffusa tanto da permettere anche ai dilettanti di sfruttarla per bloccare o prendere il controllo di altri computer collegati in rete.

Definizione di Overflow in informatica

Un caso del genere si può verificare quando il programma non controlla in anticipo la dimensione dei dati in input, ma si limita a scrivere il loro valore in un buffer di lunghezza prestabilita, affidandosi alla buona fede dell’utente. Quando, per errore o per dolo, la quantità di dati supera la capienza del buffer destinato a contenerli, i dati in eccesso vanno a sovrascrivere le variabili interne del programma o di altri processi in esecuzione. Non tutti i programmi sono vulnerabili a questo tipo di inconveniente. In genere sono necessarie le seguenti condizioni:

  • il programma deve prevedere un input di lunghezza variabile e non nota a priori;
  • tali dati devono essere allocati in aree di memoria contigue ad altre strutture e risultare di vitale importanza per il programma stesso;
  • il programmatore non deve aver previsto alcun meccanismo di validazione dell’input.

Naturalmente è facile verificare la prima condizione, mentre le altre sono strettamente legate alla correttezza del software.

Lo stack overflow consiste nella sovrascrittura dell’area dati del programma, ma questa volta non è causata dall’input ma dall’attività del programma stesso. In particolare può verificarsi in presenza di funzioni ricorsive che ad ogni chiamata memorizzano le informazioni di stato in un’apposita area di memoria denominata stack. Quando quest’ultimo è completamente riempito, in mancanza di opportuni controlli, vengono sovrascritte altre locazioni di memoria, causando gli stessi effetti visti per il buffer overflow.

 

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 *