I 1988 har overskrevet første store Internet - spread virus en lille, 536 -byte del af hukommelsen på en enkelt computer og inden for fire dage , uarbejdsdygtige over 60.000 computere over hele verden . Trods fremskridt inden programmeringssprog , programmering teknikker og operativsystem sikkerhed hærdning , kan ondsindede programmører stadig oprette vira og anden malware ved hjælp af bufferoverløb til at gå ned , kontrollere eller stjæle dit systems data. Typer af hukommelse Involveret
En computer buffer er en sektion af sin hukommelse , der bruges til midlertidigt at holde data , der kræves af et program eller operativsystemet. En ansøgning har en fast eller statisk buffer kaldes stakken , hvis størrelse bestemmes , når programmet først opgøres og fordeles af operativsystemet , når programmet er indlæst . Heap hukommelse er en anden type buffer et program bruger , mens den kører . I modsætning til de statiske buffere er bunke hukommelse skabes og ødelægges som applikation kræver .
Static bufferoverløb
Static bufferoverløb opstår , når alt for mange data er skrevet til en foruddefineret del af hukommelsen i programmets stak. Stakken indeholder information om programmet funktion og funktion variabler. Punkter på stakken har en fast eller statisk størrelse. Hvis flere data er skrevet til en stak post , end det er beregnet til at holde det overskydende lagret i tilstødende lagerpladser . De overskydende data , kan dataene allerede er der.
Heap Overskridelser
Heap hukommelse er den plads dit operativsystem giver programmet til at oprette og gemme informationer på fluen . Hver heapblokken har en pointer til den fysiske adresse på lagerblokken før og efter det . Ligesom stack overskridelser , når alt for mange data er skrevet til en tidligere tildelte blok af hukommelse den overskydende data overvæltes i den næste blok af hukommelse og kan ændre blokkens næste og forrige pointere. Dette kan bruges til at gå ned ansøgningen eller sted pointere til hukommelsen blokerer ondsindet programmør har adgang til .
Array Indeksering Fejl
Når arrays deklareres i de fleste programmeringssprog er en fast del af hukommelsen i den bunke , der er forhåndsallokeret i array- data. De C og C + + sprog ordentligt tildele arrays , men forhindrer ikke array hukommelse blok fra at blive overskrevet . Ligesom heap overskridelser , kan indeksering fejl overskrive og korrupte tilstødende blokke af hukommelse. Moderne sprog som C # og Java kontrollere vifte indeksering fejl påkompileringstidspunktet og under udførelsen af programmet .