Ogni giorno, gli hacker di tutto il mondo scoprono e sfruttano nuove vulnerabilità nei siti Web, nelle applicazioni e persino nell'architettura di sistema. Una cosa comune a tutti i dispositivi elettronici, vecchi o nuovi, è che sono gestiti da programmi che sono archiviati in memoria. Gli hacker hanno sfruttato questo e hanno trovato vulnerabilità note come buffer overflow.

Sebbene non siano nuovi, gli attacchi e le vulnerabilità di buffer overflow hanno devastato il cyberspazio. Qui ti spiegheremo cosa sono gli attacchi di overflow del buffer e come puoi prevenirli.

Comprendere i buffer e la memoria di sistema

Per capire cos'è un attacco di overflow del buffer e come funziona, è necessario sapere cos'è un buffer e come funziona la memoria di un computer.

Impila e accumula memoria sono due caratteristiche principali della memoria di un computer. Sono strutture dati utilizzate per l'allocazione della memoria. Sebbene siano simili, stack e memoria heap differiscono in più modi.

Lo stack, che utilizza il concetto di Last-in, First-out (LIFO), viene utilizzato nella RAM (random access memory) per memorizza temporaneamente le esecuzioni del programma, mentre l'heap assegna la memoria utilizzando l'allocazione dinamica a globale variabili. Ma l'unica cosa che hanno in comune è un buffer.

instagram viewer

Che cos'è un buffer?

Un buffer è una regione di memoria utilizzata per archiviare i dati, molto probabilmente nella RAM di un computer, mentre viene spostato da una posizione all'altra. Questi dati sono generalmente programmi che devono essere eseguiti. I buffer vengono archiviati nello stack o nell'heap. Ottimizzano l'esecuzione dei dati.

Che cos'è un buffer overflow?

Un buffer overflow si verifica quando il buffer riceve più dati della sua capacità di archiviazione. Poiché non è in grado di elaborare quella quantità di dati, va in overflow.

Ora, nella memoria di un computer, subito dopo un buffer o uno spazio di buffer c'è un indirizzo di ritorno. Questo indirizzo di ritorno è in realtà chiamato Extended Instruction Pointer (EIP). La sua funzione è quella di puntare il computer su un programma specifico una volta riempito. Quando un buffer ha più dati di quanti ne può contenere e va in overflow, va in overflow nell'indirizzo di ritorno.

Per capirlo, supponiamo che tu abbia uno spazio buffer che può contenere solo cinque lettere. Quindi, se inserisci parole come "zucchero" o "pace", il flusso del buffer può contenerlo. Ma quando hai una parola come "autenticazione", inevitabilmente si riverserà fuori. Questo porta a un bug o un arresto anomalo nel sistema. Ma gli hacker possono sfruttare questa vulnerabilità per avviare un attacco di overflow del buffer.

Che cos'è un attacco di overflow del buffer e come funziona?

Gli attacchi di overflow del buffer si verificano quando l'hacker assume il controllo dell'indirizzo di ritorno o EIP. Quando l'attaccante conosce la dimensione della memoria di un sistema, può scrivere intenzionalmente dati in quel sistema solo per traboccare. Quindi si assicurano che l'EIP o l'indirizzo di ritorno sia scritto per puntare a un programma che può consentire loro di accedere al sistema o rivelare informazioni riservate memorizzate nel sistema.

L'autore dell'attacco può persino scrivere alcuni dati che contengono codice dannoso e causare l'overflow del buffer. L'EIP viene quindi scritto per reindirizzare il sistema al codice dannoso e viene eseguito. Quindi, l'hacker ottiene il controllo del sistema.

Ci sono cinque passaggi principali negli attacchi di overflow del buffer:

  1. Spiare
  2. Sfocato
  3. Trovare l'offset
  4. Sovrascrivere l'EIP o l'indirizzo di ritorno
  5. Sfruttare la vulnerabilità

Spiare è il primo passo. Qui, gli hacker trovano la parte della memoria del programma che è vulnerabile agli overflow del buffer. Poi arriva il fuzzing, che è simile allo spiking, ma qui l'hacker invia i caratteri al programma per vedere se può essere danneggiato. Una volta riuscito, l'attaccante procede a trovare l'offset, che è il punto in cui il buffer è andato in overflow. Questo viene fatto per conoscere la dimensione del buffer e l'indirizzo di ritorno. Quindi, l'hacker inserisce un codice shell dannoso e controlla il sistema.

Quali sono i tipi di attacchi di overflow del buffer?

Esistono due tipi principali di attacchi di overflow del buffer: attacchi basati su stack e basati su heap.

1. Attacchi di overflow del buffer basati sullo stack

Gli attacchi di overflow del buffer basati sullo stack sono il tipo più diffuso di attacchi di overflow del buffer. Si verificano quando la memoria dello stack del sistema viene sovraccaricata e sfruttata. E 'noto anche come stack smashing.

2. Attacchi di overflow del buffer basati su heap

Questo tipo di overflow dello stack non è molto comune, poiché è difficile da implementare e sfruttare. Si verifica quando la memoria allocata a un programma va in overflow. Nel gennaio 2021, Google ha scoperto un overflow del buffer basato su heap vulnerabilità nel componente V8 di Chrome.

Come puoi prevenire gli attacchi di overflow del buffer?

Gli attacchi di overflow del buffer possono essere mitigati utilizzando protezioni di runtime del sistema operativo, linguaggi di programmazione sicuri, randomizzazione del layout dello spazio degli indirizzi e garantendo misure di sicurezza complessivamente adeguate.

1. Utilizzo della protezione runtime del sistema operativo

La protezione del runtime è anche nota come controllo dei limiti dell'array di runtime. Ciò garantisce che ogni programma eseguito sia all'interno dello spazio del buffer o della memoria disponibile. E controlla tutti i dati scritti nella memoria del sistema. Ciò rende difficile per gli hacker sovrascrivere i dati nel sistema e sfruttare la vulnerabilità.

2. Utilizzo di linguaggi di programmazione sicuri

I linguaggi di programmazione come C e C++ non implementano il controllo dei limiti dell'array di runtime perché richiede codice aggiuntivo per controllare ogni programma scritto nel sistema e lo rallenta. Pertanto, sono più suscettibili agli attacchi di buffer overflow. L'uso di linguaggi più sicuri come C#, Java e Python è migliore perché corrono un rischio inferiore di attacchi di buffer overflow.

3. Usa la randomizzazione del layout dello spazio degli indirizzi (ASLR)

Questa misura di sicurezza assegna in modo casuale gli indirizzi di programmi e funzioni nella memoria di un sistema a diverse aree dati. Rende difficile per un utente malintenzionato navigare attraverso le funzioni sensibili nella memoria.

4. Garantire politiche di sicurezza rigorose

Ciò comporta il mantenimento del sistema aggiornato regolarmente, la convalida di tutti i dati scritti nel sistema e l'assegnazione dei privilegi minimi agli utenti. Con le politiche di sicurezza adeguate in atto, non dovresti preoccuparti di un attacco di overflow del buffer.

Mantenere la sicurezza rigorosa è essenziale per combattere gli attacchi di overflow del buffer

Secondo un detto popolare sulla sicurezza, "finché un sistema viene utilizzato dagli esseri umani, esiste una vulnerabilità", il che è vero e inevitabile. Tuttavia, è sempre possibile ridurre le possibilità di attacco assicurando che le misure di sicurezza adeguate siano in atto e rigorosamente rispettate.

Ricorda che gli hacker trovano costantemente nuovi modi per sfruttare vulnerabilità come questa. Pertanto, sta a te stare al passo con loro tenendo d'occhio gli ultimi progressi nel campo della sicurezza informatica.