Hvad er en stakbufferoverløb?
En overløb af stakbuffer er, hvad der sker, når et program indtaster en computers hukommelse, 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 computerens hukommelse snarere end i permanent opbevaring, såsom harddisken.
Fordi moderne operativsystemer tillader flere programmer at køre på én gang, er der 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 noget ekstra plads til at klare, hvis for eksempel alle bøger om et emne var på biblioteket på samme tid, snarere end nogen af dem, der blev tjekket ud.
En overløb af stakbuffer opstår, når et program skriver opkaldsstakdata til bufferen på en måde, der overstiger det tildelte rum. Dette kan ske ved en fejltagelse, usually 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.