Ataques por profusão de tampão  (buffer overflow) Angriffe durch Pufferüberlauf (buffer overflow) Attaques par débordement de tampon (buffer overflow) Ataques por desbordamiento de búfer Buffer overflow attacks

Introduzione al buffer overflow

Gli attacchi da « saturazione del buffer » (in inglese « Buffer overflow », talvolta detti anche superamento del buffer) hanno per principio l'esecuzione di codici arbitrari attraverso un programma inviandogli più dati di quelli normalmente previsti in ricezione.

In effetti, i programmi che accettano i dati in entrata, passati in parametro, li immagazzinano temporaneamente in una zona della memoria detta buffer (in inglese buffer). Ora, alcune funzioni di lettura, come le funzioni strcpy() del linguaggio C, non gestiscono questo tipo di sorpasso e provocano un blocco dell'applicazione che può sfociare nell'esecuzione del codice arbitrario e dare in questo modo un accesso al sistema.

L'attuazione di questo attacco è molto complicata dato che richiede una conoscenza approfondita dell'architettura dei programmi e dei processori. Tuttavia, esistono numerose scappatoie capaci di automatizzare questo tipo di attacco e renderlo alla portata anche dei meno esperti.

Principio di funzionamento

Il principio di funzionamento di una saturazione di buffer è fortemente legato all'architettura del processore sul quale viene eseguita l'applicazione vulnerabile.

I dati inseriti in un'applicazione sono immagazzinati nella memoria viva in una zona detta buffer. Un programma ben concepito deve prevedere una dimensione massima per i dati in entrata e verificare che i dati inseriti non eccedano questo valore.

Le istruzioni e i dati di un programma in esecuzione sono provvisoriamente immagazzinati nella memoria in maniera contigua in una zona detta stack (in inglese stack). I dati posti dopo il buffer contengono anche un indirizzo di ritorno (detto verificatore d'istruzioni ) che permette al programma di continuare la sua esecuzione. Se la dimensione dei dati è superiore a quella del buffer, l'indirizzo di ritorno è quindi compresso e il programma leggerà quindi un indirizzo memoria invalido provocando un errore di segmentazione (in inglese segmentation fault) dell'applicazione.

Un pirata con una buona conoscenza tecnica può assicurarsi che l'indirizzo memoria compresso corrisponda ad un indirizzo reale, ad esempio posto nel buffer stesso. A questo punto, scrivendo delle istruzioni nel buffer (codice arbitrario), l'esecuzione gli risulterà facile.

E' inoltre possibile includere nel buffer delle istruzioni che aprono un interprete di comando (in inglese shell) e permettono al pirata di prendere il controllo del sistema. Questo codice arbitrario che permette l'esecuzione dell'interprete di comando è detto shellcode.

Proteggersi da un Buffer overflow

Per proteggersi da questo tipo di attacco, è necessario sviluppare delle applicazioni utilizzando dei linguaggi di programmazione evoluti, assicurando una gestione dettagliata della memoria destinata oppure con l'uso di linguaggi di basso livello facendo ricorso a delle biblioteche di funzioni sicurizzate (ad esempio le funzioni strncpy()).

Degli avvisi di allerta sono regolarmente pubblicati, annunciando la vulnerabilità di alcune applicazioni rispetto ad attacchi da superamento del tampone. In seguito a questi avvisi di allerta, gli sviluppatori dei software interessati dalla vulnerabilità pubblicato generalmente delle correzioni (patchs) che permettono di correggere la falla. Tutti gli amministratori di sistema e di rete devono tenersi informati sulle allerte di sicurezza e applicare il più velocemente possibile le correzioni.

Ulteriori informazioni



Ultime modificazione ilvenerdì 6 febbraio 2009 alle 16:52:03.Questo documento intitolato «  » da Kioskea (it.kioskea.net) è reso disponibile sotto la licenza Creative Commons. È possibile copiare, modificare le copie di questa pagina, alle condizioni previste dalla licenza, come questa nota appare chiaramente.
Migliori risposte per « Attacchi da saturazione del buffer (buffer overflow) » in :
Attacco da rifiuto del servizio Vedi Introduzione agli attacchi da rifiuto del servizio Un « attacco da blocco di servizio » (in inglese « Denial of Service », abbreviato in DoS) è un tipo d'attacco che mira a rendere indisponibili per un lasso di tempo indeterminato i servizi o le...
Attacchi da iniezione di comandi SQL Vedi Iniezione di comandi SQL Gli attacchi da iniezione di comandi SQL sono degli attacchi verso i siti web che si appoggiano su database relazionali.In questo tipo di siti, alcuni parametri sono passati al dabase sotto forma di una richiesta SQL. In...
Attacco Teardrop Vedi Attacco da frammentazione Un « Attacco da frammentazione » (in inglese fragment attack) è un attacco di rete da saturazione (blocco del servizio) che sfrutta il principio di frammentazione del protocollo IP.In effetti, il protocollo IP è previsto...
Riavvio continuo del computer VediSommario Che cosa riavvia un PC? 1. Memoria difettosa 2. Hardware conflitto 3. Surriscaldamento del CPU 4. Alimentazione difettosa 5. Software conflitto 6. Materiale difettoso 7. Il BIOS 8. I Virus Aprire il registro di sistema del...
[Windows XP] Punto di ripristino Vedi*1 - Punti di ristrutturazione e dati personali *2 - Verificare il service *3 - Impostare le partizioni da ripristinare *4 - Nota *5 - Dimensione del backup e pulizia *6 - Creare un punto di ripristino *7 - Ripristinare un punto di...
[BIOS] Accedere al BIOS VediPer modificare le impostazioni della scheda madre, il BIOS possiede un'interfaccia, il setup del BIOS, da modificare con grande attenzione Qual' è il tasto che dà accesso al Setup? Entrare nel programma di installazione Reimpostare la...
Attacchi da falsificazione di dati VediLa maggiorparte degli attacchi d'applicazioni web consistono nel sollecitare il sito con i dati inseriti manualmente per provocare un contesto non previsto. Parametri delle applicazioni web Il protocollo HTTP, supporto della comunicazione sul...
Fogli di stile - CSS VediPresentazione dei fogli di stile Il concetto di fogli di stile è apparso nel 1996 con la pubblicazione da parte del W3C di una nuova raccomandazione intitolata « Cascading StyleSheets » (fogli di stile in cascata), sigla CSS.Il principio dei fogli...
Replay attack VediReplay attack Gli attacchi da « replay » (in inglese « replay attaque ») sono attacchi di tipo « Man in the middle » che consistono nell'intercettare dei pacchetti di dati e nel rigiocarli, cioè a ritrasmetterli tali e quali (senza nessuna...