Hur utnyttjande av buffertspill inträffar

I attacker där buffertspill utnyttjas för att köra koder översvämmas minnesbufferten (som har en fast storlek som är reserverad för en indataprocess). Med den här koden kan en angripare ta över måldatorn eller skada data i datorn.

Det finns två olika sätt att utnyttja buffertspill:
  • Heapbaserade attacker – vid dessa attacker översvämmas minnet som är reserverat för ett program. Dessa attacker är komplicerade att utföra och ovanliga.
  • Stackbaserade attacker – vid dessa attacker används minnesobjekt i stacken som lagrar användarindata. Dessa attacker är vanligast.
I följande beskrivs stackbaserade buffertspillattacker:
  1. Minnesprocess i normal stack – minnesobjektet i stacken (som har en fast storlek) är oftast tomt och väntar på användarindata. När indata anges av en användare i ett program, till exempel ett namn, lagras dessa data överst i stacken och tilldelas en returminnesadress. När stacken bearbetas skickas användarens indata till returadressen som är angiven i programmet.
  2. Översvämma stacken – när ett program skapas reserveras ett visst minnesutrymme för data. Stacken översvämmas om mängden data som skrivs är större än dess tilldelade minnesutrymme i minnesstacken. Det här problemet inträffar endast i kombinationer med skadliga indata.
  3. Utnyttja spill – om ett program väntar på att en användare ska ange sitt namn, men samtidigt körs ett kommando av en angripare som överskrider stackstorleken så sparas kommandot utanför det tilldelade området.
  4. Köra skadlig kod – kommandot körs inte automatiskt bara för att det överskrider utrymmet för stackbufferten. Men det kan hända om returadressen som pekar på det skadliga kommandot kommer från en angripare. Programmet kraschar innan buffertspillet inträffar, men programmet försöker att återställa genom att använda returadressen som kommer från angriparen. Om returadressen är en giltig adress innebär det att det skadliga kommandot körs.
  5. Utnyttja tillstånd – eftersom program vanligtvis körs i kernelläge eller med tillstånd som ärvs från ett servicekonto körs nu den skadliga koden med samma tillstånd som programmet som kraschade. Det kan innebära att angriparen kan ta kontroll över hela operativsystemet.

Hur utnyttjande av buffertspill inträffar