Red Hot Cyber
Condividi la tua difesa. Incoraggia l'eccellenza. La vera forza della cybersecurity risiede nell'effetto moltiplicatore della conoscenza.
Condividi la tua difesa. Incoraggia l'eccellenza.
La vera forza della cybersecurity risiede
nell'effetto moltiplicatore della conoscenza.
970x20 Itcentric
2nd Edition GlitchZone RHC 320x100 2
Anatomia di un Buffer Overflow. Scopriamo nel dettaglio il suo funzionamento

Anatomia di un Buffer Overflow. Scopriamo nel dettaglio il suo funzionamento

29 Settembre 2022 08:00

Autore: Manuel Roccon

Prefazione: Il gruppo HackerHood è un gruppo della community di Red Hot Cyber che si è specializzato in attività tecnico specialistiche finalizzate ad incentivare la divulgazione dell’ethical hacking, la programmazione, le attività di malware Analysis e di Penetration test. HackerHood svolge inoltre attività di formazione all’interno delle scuole medie e superiori per incentivare i ragazzi alla conoscenza di questa materie e svolge attività di ricerca di vulnerabilità non documentate.

In questo articolo analizzeremo cosa sia un buffer overflow (abbreviato BOF), una vulnerabilità di lunga data che viene sfruttata per violare applicazioni e servizi.


Christmas Sale

Christmas Sale -40%
𝗖𝗵𝗿𝗶𝘀𝘁𝗺𝗮𝘀 𝗦𝗮𝗹𝗲! Sconto del 𝟰𝟬% 𝘀𝘂𝗹 𝗽𝗿𝗲𝘇𝘇𝗼 𝗱𝗶 𝗰𝗼𝗽𝗲𝗿𝘁𝗶𝗻𝗮 del Corso "Dark Web & Cyber Threat Intelligence" in modalità E-Learning sulla nostra Academy!🚀 Fino al 𝟯𝟭 𝗱𝗶 𝗗𝗶𝗰𝗲𝗺𝗯𝗿𝗲, prezzi pazzi alla Red Hot Cyber Academy. 𝗧𝘂𝘁𝘁𝗶 𝗶 𝗰𝗼𝗿𝘀𝗶 𝘀𝗰𝗼𝗻𝘁𝗮𝘁𝗶 𝗱𝗲𝗹 𝟰𝟬% 𝘀𝘂𝗹 𝗽𝗿𝗲𝘇𝘇𝗼 𝗱𝗶 𝗰𝗼𝗽𝗲𝗿𝘁𝗶𝗻𝗮.
Per beneficiare della promo sconto Christmas Sale, scrivici ad [email protected] o contattaci su Whatsapp al numero di telefono: 379 163 8765.


Supporta Red Hot Cyber attraverso: 

  1. L'acquisto del fumetto sul Cybersecurity Awareness
  2. Ascoltando i nostri Podcast
  3. Seguendo RHC su WhatsApp
  4. Seguendo RHC su Telegram
  5. Scarica gratuitamente “Byte The Silence”, il fumetto sul Cyberbullismo di Red Hot Cyber

Se ti piacciono le novità e gli articoli riportati su di Red Hot Cyber, iscriviti immediatamente alla newsletter settimanale per non perdere nessun articolo. La newsletter generalmente viene inviata ai nostri lettori ad inizio settimana, indicativamente di lunedì.

Dipende molto dal linguaggio di sviluppo utilizzato.

Applicazioni scritte in C e C++ ne sono più affette, in quanto non hanno nativamente dei meccanismi di controllo (come type-safety o memory-safety) al contrario di Perl, Python, Java, C# e Visual Basic.

Prima di capire cosa sia, iniziamo però a illustrare velocemente l’organizzazione della memoria e dello stack.

MEMORIA:

Una volta che il programma viene compilato e poi avviato, questo viene diviso in segmenti, che consistono in  un insieme di indirizzi virtuali continui, contenente sia codice che dati all’interno della memoria.

I vari segmenti sono:

  • Il area text: contiene il codice del programma eseguito e le costanti.
  • L’area data: salva invece le variabili globali inizializzate.
  • L’area bss:contiene le variabili globali non inizializzate.
  • Lo stack: è composto da 2 parti, l’heap che esegue il mapping della memoria utilizzando l’allocazione dinamica delle variabili globali e lo stack che contiene lo stack del programma, e viene utilizzato quando si effettua una chiamata ad una funzione o per salvare le variabili locali.

STACK:

Understanding the Stack — A Precursor to exploiting Buffer Overflow | by  Vinay Kumar | Dev Genius

Lo stack contiene i parametri attuali della funzione, indirizzi di ritorno e le variabili locali, utilizzate come buffer.

Lo stack utilizza la logica LIFO (Last In First Out), l’ultimo elemento entrante sarà il primo ad uscire, come una pila di piatti, i piatti verranno aggiunti da sopra e rimossi sempre da sopra.

Lo stack viene gestito da diversi registri. I registri sono indirizzi di memoria del processore (CPU) di un computer. Sono utilizzati durante l’elaborazione dati per eseguire le istruzioni in linguaggio macchina

Il registro EIP (instruction pointer) contiene l’indirizzo ritorno, che ne determina l’esatta posizione nello stack.

L’indirizzo di ritorno è un riferimento a un’area di memoria contenuta nella parte inferiore dello stack, viene usato per spostare l’esecuzione della runtime in altre parti di memoria (es. uscita alla funzione chiamante).

Un altro importante registro che lo stack usa è ESP (stack pointer), un registro che tiene traccia della posizione di riferimento più recente dello stack, verrà incrementato o diminuito a seguito delle operazioni di pop e push.

EBP invece, chiamato anche base pointer, tiene traccia dell’inizio dello stack, anche questo cambia continuamente in quanto lo stack viene allocato e de allocato continuamente.

Altri registri come EAX, EBX, ECX, EDX, ESI, e EDI vengono usati per salvare dati temporanei.

BUFFER OVERFLOW:

Quello che succede in un overflow, è il riempimento spropositato di questo spazio di memoria (del buffer) fino a sovrascrivere l’indirizzo di ritorno (quindi buffer overflow), così che il programma non avendo più il riferimento valido alla successiva area di memoria che contenente la prossima istruzione da eseguire, va in crash oppure esegue un accesso non autorizzato a un’altra area di memoria.

Un esempio è quello di avere un buffer che può contenere 6 caratteri di dati, al carattere 7 è presente l’indirizzo di ritorno.

Immaginiamo un secondo di avere uno stack Ideale di questo tipo: 

Se inseriamo la parola “codice” non si crea nessun problema. Nell esempio sopra l’indirizzo di ritorno non verrà alterato e il programma proseguirà come previsto eseguendo l’istruzione alla posizione 170.

Se invece viene inserita la parola hacking ecco che il carattere G andrà a sovrascrivere l’indirizzo di ritorno alla posizione 7.

Il contenuto della posizione 7 non punterà a un’area valida (G) e l’esecuzione si bloccherà.

Attraverso questa anomalia un malintenzionato, avendo calcolato quantità esatta di byte che servono per sovrascrivere EIP, può modificare il flusso dell’applicazione, modificando il puntamento di ritorno alla posizione 7 e occupando gli spazi successivi con altro codice dannoso.

Il programma prenderà per valido l’indirizzo di ritorno modificato e continuerà nel eseguire le prossime istruzioni che sono state arbitrariamente iniettate.

Il processo illustrato è estremamente semplificato e non reale, ma rende l’idea del meccanismo dietro allo sfruttamento di un buffer overflow.

Nella pratica in questo esempio alla posizione 7 è necessario che il nuovo puntamento faccia riferimento a un’area di memoria contenente un istruzione (opcode) che indurrà il proseguire l’esecuzione dalla posizione 8.

In casi più complessi è necessario modificare lo stack e il contenuto dei registri, in altri casi lo spazio dello stack dopo a disposizione dopo il BU potrebbe essere insufficiente a contenere il payload ed è necessario optare per una tipologia staged di esecuzione, per eseguire il payload in un’altra area dello stack.

Nell’articolo al link di seguito si è eseguita una analisi del software Sync Breeze Enterprise.

Seguici su Google News, LinkedIn, Facebook e Instagram per ricevere aggiornamenti quotidiani sulla sicurezza informatica. Scrivici se desideri segnalarci notizie, approfondimenti o contributi da pubblicare.

Immagine del sito
Redazione

La redazione di Red Hot Cyber è composta da un insieme di persone fisiche e fonti anonime che collaborano attivamente fornendo informazioni in anteprima e news sulla sicurezza informatica e sull'informatica in generale.

Lista degli articoli

Articoli in evidenza

Immagine del sitoCultura
Dal Game of Life al simbolo degli hacker: la vera storia del Glider
Massimiliano Brolli - 26/12/2025

La cultura hacker è una materia affascinante. E’ una ricca miniera di stravaganti innovazioni, genialità ed intuito. Di personaggi bizzarri, di umorismo fatalista, di meme, ma soprattutto cultura, ingegneria e scienza. Ma mentre Linux ha…

Immagine del sitoCybercrime
EDR Nel mirino: i forum underground mettono in vendita NtKiller
Redazione RHC - 25/12/2025

All’interno di un forum underground chiuso, frequentato da operatori malware e broker di accesso iniziale, è comparso un annuncio che ha attirato l’attenzione della comunità di cyber threat intelligence. Il post promuove “NtKiller”, una presunta…

Immagine del sitoCyber Italia
26 milioni di nomi e numeri telefonici di italiani messi all’asta nel Dark Web
Redazione RHC - 24/12/2025

Mentre la consapevolezza sulla cybersicurezza cresce, il mercato nero dei dati personali non accenna a fermarsi. Un recente post apparso su un noto forum frequentato da criminali informatici in lingua russa, scoperto dai ricercatori di…

Immagine del sitoInnovazione
Le botnet robot stanno arrivando! Gli umanoidi propagano malware autonomo
Redazione RHC - 24/12/2025

prima di leggere questo articolo, vogliamo dire una cosa fondamentale: la robotica sta avanzando più velocemente degli approcci per proteggerla. Le macchine stanno diventando più intelligenti e accessibili, ma la sicurezza delle interfacce, dei protocolli…

Immagine del sitoCybercrime
Webrat: quando la voglia di imparare sicurezza informatica diventa un vettore d’attacco
Redazione RHC - 24/12/2025

C’è un momento preciso, quasi sempre notturno, in cui la curiosità supera la prudenza. Un repository appena aperto, poche stelle ma un exploit dal punteggio altissimo, il file README scritto bene quanto basta da sembrare…