Skip to main content

Hvad er en stakbufferoverløb?

En overløb af stakbuffer er, hvad der sker, når et program kommer ind i en computerehukommelse, der er længere end det tildelte rum.I nogle omstændigheder kan dette ødelægge andre data i hukommelsen og forårsage problemer i kørslen af computeren.I andre tilfælde kan en stakbufferoverløb udnyttes af en ondsindet applikation om at tage kontrol over andre dele af computeren.

Navnet fra en stakbufferoverløb stammer først fra stakken, som effektivt er en aktiv liste, hvor data er organiseret: Udtrykket kommer fra analogien med at samle fysiske genstande.En version af dette, opkaldsstakken, er den liste, som et computerprogram bruger til at holde styr på de forskellige dele af programmet, subroutinerne, der fungerer på et bestemt tidspunkt.Da opkaldsstakken fungerer midlertidigt og skal fås hurtigt adgang, er den placeret i computerehukommelsen snarere end i permanent opbevaring, såsom harddisken.

Fordi moderne operativsystemer tillader flere programmer at køre på én gang, der derer et behov for at organisere den måde, hukommelse tildeles, herunder at ringe til stabler.Dette gøres effektivt ved at tildele buffere, et rum i hukommelsen designet til at være stor nok til at klare den maksimale plads, der kræves af en bestemt buffer.I de fleste tilfælde vil nogle af rummet være ubrugt, så det fungerer som en buffer mellem dataene fra forskellige applikationer, hvilket giver plads til at klare, hvis man pludselig kræver ekstra plads.En måde at visualisere det på ville være at tænke på et bibliotek, der tildelte en vis plads til hvert fagområde, og sørg for at efterlade lidt ekstra plads til at klare, hvis for eksempel alle bøger om et emne var i biblioteket på detPå samme tid snarere end nogen af dem, der bliver tjekket ud.

En stakbufferoverløb opstår, når et program skriver opkaldsstakkedata til bufferen på en måde, der overstiger det tildelte rum.Dette kan ske ved en fejltagelse, normalt gennem en fejl i et program.For eksempel, hvis en applikation er designet til at give brugeren mulighed for at indtaste et telefonnummer, men ikke har nogen grænse for antallet af tegn, der kan indtastes, kan en hacker muligvis bruge det ubegrænsede felt til med vilje at forårsage en stakbufferoverløb.Afhængig af den måde, operativsystemet fungerer på, kan dette give hackeren mulighed for indirekte at få adgang til enten en anden applikation eller selve operativsystemet.

Der er flere tilgange til at afbøde mod virkningerne af en stakbufferoverløb.Den ene er kendt som Adresse Space Layout randomisering.Dette arrangerer de vigtigste dataområder på computeren på en tilfældig måde.Ideen er, at selv hvis en hacker forårsager eller udnytter en stakbufferoverløb, vil han ikke være i stand til at udnytte bruddet på en pålidelig måde.