Test di sicurezza - Buffer Overflow

Un buffer overflow si verifica quando un programma tenta di memorizzare più dati in un'area di memorizzazione temporanea dei dati (buffer) di quanti ne avrebbe previsto. Poiché i buffer vengono creati per contenere una quantità finita di dati, le informazioni aggiuntive possono traboccare in buffer adiacenti, corrompendo così i dati validi in essi contenuti.

Esempio

Ecco un classico esempio di buffer overflow. Dimostra un semplice overflow del buffer causato dal primo scenario in cui si basa su dati esterni per controllarne il comportamento. Non c'è modo di limitare la quantità di dati che l'utente ha inserito e il comportamento del programma dipende dal numero di caratteri che l'utente ha inserito.

...
   char bufr[BUFSIZE]; 
   gets(bufr);
   ...

Mani su

Step 1- Dobbiamo accedere con il nome e il numero della stanza per ottenere l'accesso a Internet. Ecco l'istantanea dello scenario.

Step 2 - Abiliteremo anche "Scopri i campi modulo nascosti" in Burp Suite come mostrato di seguito -

Step 3- Ora inviamo un input nel campo del nome e del numero della stanza. Proviamo anche a inserire un numero abbastanza grande nel campo del numero della stanza.

Step 4- I campi nascosti vengono visualizzati come mostrato di seguito. Facciamo clic su accetta termini.

Step 5 - L'attacco ha successo in modo tale che, a seguito dell'overflow del buffer, ha iniziato a leggere le posizioni di memoria adiacenti e visualizzato all'utente come mostrato di seguito.

Step 6- Ora accediamo utilizzando i dati visualizzati. Dopo la registrazione, viene visualizzato il seguente messaggio:

Meccanismi preventivi

  • Revisione del codice
  • Formazione per sviluppatori
  • Strumenti del compilatore
  • Sviluppo di funzioni sicure
  • Scansione periodica