Linux Buffer Overflow Tutorial

Linux Buffer Overflow Tutorial


Buffer overflow er vanlige sikkerhetsbrudd for datasystemer som krever brukerundersøkelser som påloggingsinformasjon. En buffer overflow oppstår når en variabel i kode ment å holde opplysninger gitt av brukeren (for eksempel et påloggingsnavn) er ikke stor nok. I dette tilfellet, de ekstra data som brukeren "renner over" tilgjengelig minne tildelt. Denne hendelsen, kalt "Buffer Overflow," kan resultere i ekstra overskriving av data eller endrer data i andre programmer i minnet. Dette eksempelet viser hvordan en buffer overflow på nivå med kode.

Bruksanvisning

1 Lag bufferen. Følg dette eksempelet:

inkludere <stdio.h>

int main () {

char login_name [20];

printf ( "Skriv innlogging:");

scanf ( "% s", login_name);

printf ( "bufferoverløp!");

}

Denne grunnleggende kode oppretter et tegn array (et ord, i hovedsak) kalt "login_name" som vil holde brukerundersøkelser. Legg merke til at "login_name" er bare 20 tegn. Programmet deretter ber om brukerundersøkelser, og lagrer informasjonen i "login_name."

2 Årsak buffer overflow. Kompilere programmet og kjøre det. Når du blir bedt om angi et påloggingsnavn som overskrider 20 tegn. For eksempel:

Skriv pålogging: Dette er en lang setning som VIL OVERKJØRT den tilgjengelige plassen i innloggings variabel.

Hit "Enter". Avkjørselen meldingen vil skrive ut, og programmet avsluttes. Variabelen har overkjørt tilgjengelig bufferplass i "login_name" variable. Spørsmålet er da, hva skjedde?

3 Forstå hvordan fungerer datamaskinens minne. Som brukerundersøkelser ble lagret i "login_name," overflødig informasjon (alle tegn utover 20 tegn) ble skrevet til minne utover grensene for den variable. Disse dataene må lagres et sted. I dette tilfelle blir den lagret i lageret umiddelbart tilstøtende til hvor "login_name" variable er plassert. Ved å gå over grensene til innlogging variabel, de ekstra data (bevisst eller ikke) omskriver dataene umiddelbart sammen variabelen. Dette betyr at hackere kan i utgangspunktet skrive kode, og endrer hvor koden fungerer, i hovedsak eie systemet.

4 Innse Linux sårbarheter. Linux er kodet i C / C ++, og mange av kjernefunksjonalitet krever manipulering av tegnstrenger. Men mange moderne distribusjoner av Linux beskytter mot tilfeller av buffer overflow på punkter hvor brukerundersøkelser er nødvendig, enten gjennom bunken beskyttelse eller dynamisk resizing karakter arrays. Sårbarheter fortsatt: USB-buffer overflow utnytte oppdaget i 2011 er ett eksempel. I USB tilfelle, kan en ekstra lang USB-ID renne over en systemvariabel i Linux.