Skip to main content

Vad är en stackbuffertöverskridande?

En överflöd av stackbuffert är vad som händer när ett program gör ett inträde i ett datorminne som är längre än det tilldelade utrymmet.Under vissa omständigheter kan detta förstöra andra data i minnet och orsaka problem i datorns drift.I andra fall kan en stackbuffertöverskridning utnyttjas genom en skadlig applikation för att ta kontroll över andra delar av datorn.

Namnet från en stackbuffertöverskridning härstammar först från stacken, vilket faktiskt är en aktiv lista där data är organiserade: Termen kommer från analogin med att staplera fysiska föremål.En version av detta, Call Stack, är listan som ett datorprogram använder för att hålla reda på de olika delarna av programmet, subroutinerna, som fungerar vid ett särskilt ögonblick.När samtalsstacken fungerar tillfälligt och måste nås snabbt, är det beläget i datorminnet snarare än i permanent lagring, t.ex. hårddisken.

Eftersom moderna operativsystem tillåter flera program att köras på en gång, där därär ett behov av att organisera hur minnet tilldelas, inklusive att ringa staplar.Detta görs effektivt genom att tilldela buffertar, ett utrymme i minnet utformat för att vara tillräckligt stor för att hantera det maximala utrymmet som krävs av en viss buffert.I de flesta fall kommer en del av utrymmet att vara oanvända, så det fungerar som en buffert mellan uppgifterna från olika applikationer, vilket lämnar utrymme att klara om man plötsligt kräver extra utrymme.Ett sätt att visualisera det skulle vara att tänka på ett bibliotek som tilldelade en viss mängd utrymme till varje ämnesområde, och se till att lämna lite extra utrymme för att hantera om till exempel alla böcker om ett ämne var i biblioteket påSame tid, snarare än att någon av dem som checkas ut.

En överflöd av stackbuffert inträffar när ett program skriver samtalsstackdata till bufferten på ett sätt som överskrider det tilldelade utrymmet.Detta kan hända av misstag, vanligtvis genom ett fel i ett program.Till exempel, om en applikation är utformad så att användaren kan skriva in ett telefonnummer, men inte har någon gräns för antalet tecken som kan matas in, kan en hacker kunna använda det obegränsade fältet för att avsiktligt orsaka en stackbuffertöverflöde.Beroende på hur operativsystemet fungerar kan detta göra det möjligt för hackaren att indirekt komma åt antingen en annan applikation eller själva operativsystemet.

Det finns flera metoder för att mildra mot effekterna av en överflöde av stackbuffert.Den ena är känd som randomisering av adressutrymme.Detta ordnar de viktigaste dataområdena på datorn på ett slumpmässigt sätt.Tanken är att även om en hacker orsakar eller utnyttjar en överflöd av stackbuffert kommer han inte att kunna utnyttja överträdelsen på ett pålitligt sätt.