Linux overflow del buffer Tutorial

February 5

Linux overflow del buffer Tutorial


buffer overflow sono violazioni della sicurezza comuni per i sistemi di computer che richiedono l'input dell'utente, quali informazioni di accesso. Un buffer overflow si verifica quando una variabile nel codice destinato a contenere informazioni presentate da parte dell'utente (ad esempio il nome di login) non è abbastanza grande. In questo caso, i dati aggiuntivi inseriti dall'utente "overflow" la memoria disponibile allocata. Questo evento, chiamato "buffer overflow", può provocare dei dati aggiuntivi sovrascrivere o modificare i dati in altri programmi in memoria. Questo esempio mostra come un buffer overflow funziona a livello di codice.

istruzione

1 Creare buffer. Seguire questo esempio:

includere <stdio.h>

int main () {

char login_name [20];

printf ( "Enter login:");

scanf ( "% s", login_name);

printf ( "buffer overflow");

}

Questo codice di base crea un array di caratteri (una parola, in sostanza) chiamato "login_name" che conterrà l'input dell'utente. Si noti che "login_name" è lungo solo 20 caratteri. Il programma chiede quindi per l'input dell'utente, e memorizza le informazioni in "login_name."

2 Causa il buffer overflow. Compilare il programma ed eseguirlo. Quando il richiesto, immettere un nome di accesso che supera 20 caratteri. Per esempio:

Inserisci login: Questa è una frase LUNGA CHE superamento dello spazio disponibile nella variabile LOGIN.

Premere "Invio". Il messaggio di uscita viene stampato e il programma terminerà. La variabile ha invaso lo spazio buffer disponibile nella variabile "login_name". La domanda allora è: che cosa è successo?

3 Capire come funziona la memoria del computer. Come l'input dell'utente è stato memorizzato in "login_name," le informazioni in eccesso (qualsiasi carattere oltre 20 caratteri) è stato scritto in memoria oltre i limiti della variabile. Che i dati devono essere memorizzati da qualche parte. In questo caso, viene memorizzato nella memoria immediatamente adiacente la posizione variabile "login_name". Andando oltre i confini della variabile di accesso, i dati aggiuntivi (intenzionalmente o no) riscrive i dati immediatamente a fianco della variabile. Ciò significa che l'hacker fondamentalmente potrebbe riscrivere codice e modificare il funzionamento del codice, essenzialmente possedere il sistema.

4 Realizzare le vulnerabilità di Linux. Linux è codificato in C / C ++, e molte delle sue funzionalità di base richiede la manipolazione di stringhe di caratteri. Tuttavia, molte distribuzioni moderne di Linux proteggono contro i casi di overflow del buffer nei punti in cui è richiesto l'input dell'utente, sia attraverso la protezione dello stack o il ridimensionamento dinamico array di caratteri. esistono ancora delle vulnerabilità: il buffer overflow USB exploit scoperto nel 2011 è un esempio. Nel caso USB, un extra ID USB tempo può traboccare una variabile di sistema in Linux.