Hva er en stabelbufferoverflyt?
En overflate av bufferbuffer er det som skjer når et program legger inn i datamaskinens minne som er lengre enn den tildelte plassen. I noen tilfeller kan dette ødelegge andre data i minnet og forårsake problemer med å kjøre datamaskinen. I andre tilfeller kan et stabilt bufferoverløp utnyttes av et skadelig program for å ta kontroll over andre deler av datamaskinen.
Navnet fra en overflate av en bufferbuffer stammer først fra bunken, som faktisk er en aktiv liste der dataene er organisert i. Uttrykket kommer fra analogien til å ha sammen fysiske elementer. En versjon av dette, samtale-stabelen, er listen som et dataprogram bruker for å holde oversikt over de forskjellige delene av programmet, underrutinene, som opererer når som helst. Ettersom anropsstabelen fungerer midlertidig og trenger tilgang til den raskt, er den plassert i datamaskinens minne i stedet for i permanent lagring, for eksempel harddisken.
Fordi moderne operativsystemer gir mulighet for at flere programmer kjøres samtidig, er det behov for å organisere måten minnet blir tildelt, inkludert å ringe stabler. Dette gjøres effektivt ved å tilordne buffere, en plass i minnet designet for å være stor nok til å takle den maksimale plassen som kreves av en bestemt buffer. I de fleste tilfeller vil noe av plassen være ubrukt, så det fungerer som en buffer mellom dataene fra forskjellige applikasjoner, og lar rom for å takle hvis man plutselig trenger ekstra plass. En måte å visualisere det ville være å tenke på et bibliotek som tildelte en viss plass til hvert fagområde, og sørget for å forlate litt ekstra rom for å takle hvis for eksempel alle bøkene om ett emne var i biblioteket på samtidig, i stedet for at noen av dem blir sjekket ut.
En stabelbufferoverløp oppstår når et program skriver anropsstabeldata til bufferen på en måte som overskrider den tildelte plassen. Dette kan skje ved en feiltakelse, vanligvis gjennom en feil i et program. For eksempel, hvis en applikasjon er designet for å la brukeren skrive inn et telefonnummer, men ikke har noen begrensning på antall tegn som kan legges inn, kan en hacker kanskje bruke det ubegrensede feltet til med vilje å forårsake en stabelbufferoverflyt . Avhengig av hvordan operativsystemet fungerer, kan dette gi hackeren indirekte tilgang til enten et annet program eller selve operativsystemet.
Det er flere tilnærminger for å avbøte effekten av et stabilt bufferoverløp. En er kjent som randomisering av adresseplassoppsett. Dette ordner de viktigste dataområdene på datamaskinen på en tilfeldig måte. Tanken er at selv om en hacker ikke forårsaker eller utnytter en stabelbufferoverflyt, vil han ikke kunne utnytte bruddet på en pålitelig måte.