Varje dag upptäcker och utnyttjar hackare över hela världen nya sårbarheter i webbplatser, applikationer och till och med systemarkitektur. En vanlig sak i alla elektroniska enheter, gamla som nya, är att de drivs av program som är lagrade i minnet. Hackare har utnyttjat detta och hittat sårbarheter som kallas buffertspill.

Även om det inte är nytt, har buffertspillsattacker och sårbarheter orsakat kaos i cyberrymden. Här kommer vi att förklara för dig vad buffertspillsattacker är och hur du kan förhindra dem.

Förstå buffertar och systemminne

För att förstå vad en buffertspillsattack är och hur den fungerar måste du veta vad en buffert är och hur en dators minne fungerar.

Stapla och stapla minne är två huvudfunktioner i en dators minne. De är datastrukturer som används för minnesallokering. Även om de är lika, stack- och heapminne skiljer sig åt på flera sätt.

Stacken, som använder konceptet Last-in, First-out (LIFO), används i RAM (Random Access Memory) för att lagra programkörningar tillfälligt, medan heapen tilldelar minne med dynamisk allokering till global variabler. Men det enda de har gemensamt är en buffert.

instagram viewer

Vad är en buffert?

En buffert är en minnesregion som används för att lagra data, troligen i en dators RAM, medan den flyttas från en plats till en annan. Dessa data är vanligtvis program som måste köras. Buffertar lagras i högen eller högen. De optimerar utförandet av data.

Vad är ett buffertspill?

Ett buffertspill uppstår när bufferten tar emot mer data än dess lagringskapacitet. Eftersom den inte kan bearbeta den mängden data svämmar den över.

Nu, i en dators minne, strax efter en buffert eller ett buffertutrymme finns en returadress. Denna returadress kallas faktiskt en Extended Instruction Pointer (EIP). Dess funktion är att peka datorn till ett specificerat program när det är ifyllt. När en buffert har mer data än den kan hålla och svämmar över, svämmar den över till returadressen.

För att förstå detta, låt oss anta att du har ett buffertutrymme som bara kan innehålla fem bokstäver. Så om du fyller i ord som "socker" eller "fred" kan buffertflödet innehålla det. Men när du har ett ord som "autentisering" kommer det oundvikligen att spilla över. Detta leder till en bugg eller krasch i systemet. Men hackare kan utnyttja denna sårbarhet för att starta en buffertspillattack.

Vad är en buffertspillattack och hur fungerar det?

Buffertspillattacker inträffar när hackaren tar kontroll över returadressen eller EIP. När angriparen vet storleken på ett systems minne kan de avsiktligt skriva in data i det systemet bara för att flöda över det. Sedan ser de till att EIP eller returadressen skrivs för att peka på ett program som kan ge dem tillgång till systemet eller avslöja känslig information som lagras i systemet.

Angriparen kan till och med skriva vissa data som innehåller skadlig kod och få bufferten att svämma över. EIP skrivs sedan för att omdirigera systemet tillbaka till den skadliga koden, och den körs. Sedan får hackaren kontroll över systemet.

Det finns fem huvudsteg i buffertspillsattacker:

  1. Spiking
  2. Luddrigt
  3. Hitta offset
  4. Skriver över EIP eller returadress
  5. Utnyttja sårbarheten

Spiking är det första steget. Här hittar hackarna den del av programmets minne som är sårbar för buffertspill. Sedan kommer fuzzing, som liknar spikning, men här skickar hackern karaktärer till programmet för att se om det kan brytas. När angriparen väl lyckats hitta offseten, det är där bufferten flödade över. Detta görs för att veta storleken på bufferten och returadressen. Sedan infogar hackaren en skadlig skalkod och kontrollerar systemet.

Vilka typer av buffertspillattacker finns det?

Det finns två huvudtyper av buffertspillsattacker: stackbaserade och heapbaserade attacker.

1. Stack-baserade buffertspillattacker

Stackbaserade buffertspillsattacker är den mest populära typen av buffertspillsattacker. De uppstår när systemets stackminne överskrids och utnyttjas. Det är också känt som stack smashing.

2. Heap-baserade buffertspillattacker

Denna typ av stackoverflow är inte särskilt vanligt, eftersom det är svårt att implementera och utnyttja. Det inträffar när minnet som allokerats till ett program svämmar över. I januari 2021 upptäckte Google ett heapbaserat buffertspill sårbarhet i V8-komponenten i Chrome.

Hur kan du förhindra buffertspillattacker?

Buffertspillattacker kan mildras genom att använda OS-runtime-skydd, säkra programmeringsspråk, randomisering av adressutrymmeslayout och säkerställa övergripande korrekta säkerhetsåtgärder.

1. Använder OS Runtime Protection

Runtime-skydd är också känt som runtime array bounds checking. Detta säkerställer att varje program som körs är inom buffertutrymmet eller tillgängligt minne. Och den kontrollerar alla data som skrivs in i systemets minne. Detta gör det svårt för hackare att skriva över data i systemet och utnyttja sårbarheten.

2. Använda säkra programmeringsspråk

Programmeringsspråk som C och C++ implementerar inte kontroll av runtime array bounds eftersom det krävs extra kod för att kontrollera varje program som skrivits in i systemet och saktar ner det. Därför är de mer mottagliga för buffertspillattacker. Att använda säkrare språk som C#, Java och Python är bättre eftersom de löper lägre risk för buffertspill.

3. Använd randomisering av adressutrymmeslayout (ASLR)

Denna säkerhetsåtgärd tilldelar slumpmässigt adresserna för program och funktioner i ett systems minne till olika dataregioner. Det gör det svårt för en angripare att navigera genom känsliga funktioner i minnet.

4. Säkerställ strikta säkerhetspolicyer

Detta innebär att hålla systemet uppdaterat regelbundet, validera alla data som skrivs in i systemet och tilldela minsta privilegier till användarna. Med rätt säkerhetspolicyer på plats, bör du inte behöva oroa dig för en buffertspillattack.

Att hålla din säkerhet tät är avgörande för att bekämpa buffertspillattacker

Enligt ett populärt talesätt inom säkerhet, "så länge ett system används av människor finns det en sårbarhet", vilket är sant och oundvikligt. Men man kan alltid minska risken för attack genom att se till att lämpliga säkerhetsåtgärder är på plats och strikt följs.

Kom ihåg att hackare ständigt hittar nya sätt att utnyttja sårbarheter som denna. Därför är det upp till dig att ligga före dem genom att hålla utkik efter de senaste framstegen inom området cybersäkerhet.