Vad är en stack buffertöverskridning?
En stack buffertöverskridning är vad som händer när ett program gör en post i datorns minne som är längre än det tilldelade utrymmet. Under vissa omständigheter kan detta förstöra andra data i minnet och orsaka problem med datorns drift. I andra fall kan ett stack buffertöverskridande utnyttjas av en skadlig applikation för att ta kontroll över andra delar av datorn.
Namnet från ett stapelbuffertöverskrid härstammar först från bunten, som i själva verket är en aktiv lista där data är organiserade: termen kommer från analogin att stapla upp fysiska objekt. En version av detta, samtalstacken, är listan som ett datorprogram använder för att hålla reda på de olika delarna av programmet, subroutinerna, som fungerar vid ett visst ögonblick. Eftersom samtalstacken fungerar tillfälligt och måste komma åt snabbt, finns den i datorns minne snarare än i permanent lagring, t.ex. hårddisken.
Eftersom moderna operativsystem tillåter flera program att köras samtidigt, finns det ett behov av att organisera hur minnet allokeras, inklusive att ringa staplar. Detta görs effektivt genom att tilldela buffertar, ett utrymme i minnet som är utformat för att vara tillräckligt stort för att klara det maximala utrymme som krävs av en viss buffert. I de flesta fall kommer en del av utrymmet att vara oanvänd, så det fungerar som en buffert mellan data från olika applikationer, vilket lämnar utrymme att klara om man plötsligt behöver extra utrymme. Ett sätt att visualisera det skulle vara att tänka på ett bibliotek som tilldelade ett visst utrymme till varje ämnesområde och se till att lämna lite extra utrymme för att hantera om till exempel alla böckerna om ett ämne fanns i biblioteket på samtidigt, snarare än att någon av dem checkas ut.
Ett stapelbuffertöverskridande inträffar när ett program skriver samtalstapeldata till bufferten på ett sätt som överskrider det tilldelade utrymmet. Detta kan hända av misstag, vanligtvis genom ett fel i ett program. Om till exempel en applikation är utformad så att användaren kan skriva in ett telefonnummer, men inte har någon begränsning för antalet tecken som kan matas in, kan en hacker kunna använda det gränslösa fältet för att avsiktligt orsaka ett stack buffertöverskridande . 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 sätt att mildra mot effekterna av ett stack buffertöverskridande. En är känd som randomisering av adressutrymme. Detta ordnar de viktigaste områdena med data på datorn på ett slumpmässigt sätt. Tanken är att även om en hacker orsakar eller utnyttjar ett stack buffertöverskridande, kommer han inte att kunna utnyttja brottet på ett tillförlitligt sätt.