Hvad er en stakbufferoverløb?
En stack-bufferoverløb er, hvad der sker, når et program indtaster en computers hukommelse, der er længere end den tildelte plads. I nogle tilfælde kan dette ødelægge andre data i hukommelsen og forårsage problemer i forbindelse med kørsel af computeren. I andre tilfælde kan en stakbufferoverløb udnyttes af en ondsindet applikation til at tage kontrol over andre dele af computeren.
Navnet fra en stakbufferoverløb stammer først fra stakken, som faktisk er en aktiv liste, hvor data er organiseret: udtrykket stammer fra analogien med at opsamle fysiske poster. En version af dette, opkaldsstakken, er listen, som et computerprogram bruger til at holde styr på de forskellige dele af programmet, underprogrammerne, der fungerer på et bestemt tidspunkt. Da opkaldsstakken fungerer midlertidigt og skal åbnes hurtigt, 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 et behov for at organisere den måde, hvorpå hukommelsen tildeles, herunder til opkaldsstack. Dette gøres effektivt ved at tildele buffere, en plads 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 noget 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 har brug for ekstra plads. En måde at visualisere det ville være at tænke på et bibliotek, der tildelte en vis plads til hvert fagområde, og sørge for at efterlade et ekstra rum til at klare, hvis for eksempel alle bøgerne om et emne var i biblioteket på samme tid i stedet for at nogen af dem bliver tjekket ud.
En stackbufferoverløb opstår, når et program skriver opkaldsstabeldata til bufferen på en måde, der overskrider den tildelte plads. 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 stakkebufferoverløb . Afhængigt af hvordan operativsystemet fungerer, kan dette give hackeren indirekte adgang til enten et andet program eller selve operativsystemet.
Der er flere tilgange til at afbøde virkningerne af en stakbufferoverløb. Den ene er kendt som randomisering af adressepladslayout. Dette arrangerer de vigtigste dataområder på computeren på en tilfældig måde. Tanken er, at selv hvis en hacker forårsager eller udnytter et stakbufferoverløb, vil han ikke være i stand til at udnytte bruddet på en pålidelig måde.