Wat is Shadow stack?

Een mechanisme dat bij elke functieaanroep een kopie van het terugkeeradres ook op een aparte stack zet die met gewone schrijfacties niet kan worden veranderd, en die bij het terugkeren vergelijkt met de waarde op de normale stack om manipulatie van het terugkeeradres te detecteren. Bij een afwijking treedt een exceptie op en stopt de uitvoering. Het wordt in hardware ondersteund door onder meer Intel CET (Control-flow Enforcement Technology) en maakt aanvallen zoals ROP, die een bufferoverloop op de stack misbruiken, moeilijker.

Japanse benaming: シャドウスタック

“Shadow stack” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. Hardwarebeveiliging: nieuwste ontwikkelingen.

Vakgebied: Hardwarebeveiliging: nieuwste ontwikkelingen

Nu oefenen: vragen over Shadow stack

Welke uitspraak beschrijft de hardwarematige shadow stack juist, die onder meer in Intel CET (Control-flow Enforcement Technology) wordt gebruikt?

  1. ADe inhoud van de stack wordt met vaste tussenpozen in niet-vluchtig geheugen opgeslagen, en wanneer een programma abnormaal eindigt, wordt de uitvoering vanaf die inhoud hervat
  2. BLokale variabelen van functies worden in snel geheugen apart van de normale stack geplaatst, zodat er minder cachemissers zijn en functieaanroepen sneller worden
  3. CBij het aanroepen van een functie wordt een kopie van het terugkeeradres ook op een aparte stack gezet die met gewone schrijfacties niet kan worden veranderd, en bij het terugkeren worden beide vergeleken
Antwoord en toelichting tonen

Antwoord: C. Bij het aanroepen van een functie wordt een kopie van het terugkeeradres ook op een aparte stack gezet die met gewone schrijfacties niet kan worden veranderd, en bij het terugkeren worden beide vergeleken

Als een terugkeeradres wordt overschreven door bijvoorbeeld een bufferoverloop op de stack, springt de uitvoering bij het terugkeren uit de functie naar een plaats die de aanvaller heeft gekozen. Bij een shadow stack zet de call-instructie het terugkeeradres op zowel de normale stack als de shadow stack, en vergelijkt de ret-instructie beide. Pagina's van de shadow stack zijn een speciaal soort pagina waarnaar gewone store-instructies niet kunnen schrijven, dus een aanvaller die de normale stack heeft overschreven, kan de kopie niet veranderen, en bij een afwijking treedt een exceptie op die de uitvoering stopt.

“Shadow stack” in de toelichting

Vragen met “Shadow stack” (2)

  1. Welke uitspraak beschrijft de hardwarematige shadow stack juist, die onder meer in Intel CET (Control-flow Enforcement Technology) wordt gebruikt?
  2. Welke combinatie is juist voor hardwarefuncties die control-flow-integriteit ondersteunen, namelijk wat het terugkeren uit functies beschermt en wat indirecte aanroepen en sprongen, zoals via functiepointers, beschermt?

Verwante termen

Bufferoverloop (buffer overflow) Control-flow-integriteit (control-flow integrity) Functiepointer Pointerauthenticatie (PAC) KPTI Meltdown IOMMU DMA (direct memory access) Arm CCA (Confidential Compute Architecture) CHERI

Naar de woordenlijst