Typer av bufferoverløp Angrep

Typer av bufferoverløp Angrep


I 1988, den første store Internett-spredning virus overskrev en liten, 536-byte delen av minnet på en enkelt datamaskin og innen fire dager, uføre ​​over 60.000 datamaskiner over hele verden. Til tross for fremskritt i programmeringsspråk, programmeringsteknikker og operativsystem sikkerhet herding, kan ondsinnede programmerere fortsatt lage virus og annen skadelig programvare ved hjelp av bufferoverløp å krasje, kontroll eller stjele systemets data.

Typer minne Involvert

En datamaskin buffer er en del av minnet som brukes til midlertidig å holde data som trengs av et program eller operativsystemet. En søknad har en fast eller statisk buffer kalt stabelen, hvis størrelse fastsettes når programmet er først utarbeidet og tildelt av operativsystemet når programmet er lastet. Heap minne er en annen type buffer et program bruker mens den kjører. I motsetning til de statiske buffere, er heap minne skapt og ødelagt som applikasjonen krever.

Statisk bufferoverløp

Statiske bufferoverløp oppstå når for mye data skrives til et forhåndsdefinert del av minnet innenfor programmets stabelen. Bunken inneholder informasjon om programfunksjonen og funksjonsvariabler. Elementer på stakken har en fast eller statisk størrelse. Hvis flere data er skrevet til en stabel element enn det er ment å holde det overskytende data som er lagret i tilstøtende lagerstedene. Det overskytende data kan ødelegge data som allerede er der.

heap Overskridelser

Heap minne er plass operativsystemet gir program til å opprette og lagre informasjon på fly. Hver haug blokk har en peker til den fysiske adressen til minne blokken før og etter den. Som stack overskridelser, da for mye data skrives til en tidligere tildelt blokk med minne, det overskytende data smitter over til neste blokk med minne og kan endre blokkens neste og forrige pekere. Dette kan brukes til å krasje applikasjonen eller sted pekere til minneblokker ondsinnet programmerer har tilgang til.

Array Indekseringsfeil

Når arrays er deklarert i de fleste programmeringsspråk, er en fast del av minnet i haugen pre-tildelt for tabellens data. C og C ++ språk ordentlig fordele arrays, men ikke hindre rekken minne blokk blir overskrevet. Som heap overskridelser, kan indeksering feil skrive og korrupte tilstøtende minneblokker. Moderne språk som C # og Java sjekk for matrise indeksering feil ved kompilering og under programkjøring.