Hardwarebeveiliging: nieuwste ontwikkelingen
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?
- ATerugkeren wordt beschermd door shadow stacks of pointerauthenticatie; indirecte aanroepen en sprongen door mechanismen die eisen dat aan het begin van het doel een aangewezen markeringsinstructie staat
- BTerugkeren wordt beschermd door mechanismen die eisen dat aan het begin van het doel een aangewezen markeringsinstructie staat; indirecte aanroepen en sprongen door shadow stacks
- CTerugkeren wordt beschermd door KPTI (kernel page-table isolation); indirecte aanroepen en sprongen door adresvertaling in de IOMMU
Antwoord en toelichting tonen
Antwoord: A. Terugkeren wordt beschermd door shadow stacks of pointerauthenticatie; indirecte aanroepen en sprongen door mechanismen die eisen dat aan het begin van het doel een aangewezen markeringsinstructie staat
Een shadow stack vergelijkt het terugkeeradres met de kopie en pointerauthenticatie controleert de authenticatiecode die aan het terugkeeradres is toegevoegd, dus beide beschermen het terugkeren uit functies. Voor indirecte aanroepen en sprongen eisen Intel IBT en Arm Branch Target Identification dat aan het begin van het doel een markeringsinstructie staat (ENDBR64 bij x86), en maken ze van sprongen naar bijvoorbeeld het midden van een functie een exceptie. Een plaats met een markering is echter nog steeds vanuit elke indirecte sprong bereikbaar, dus soms worden ze gecombineerd met fijnere controles door de compiler die de doelen beperken tot functies van een passend type. KPTI is een tegenmaatregel tegen Meltdown en de IOMMU beperkt de DMA van apparaten; geen van beide beschermt de control flow.
Verder: nog 9 vragen over Hardwarebeveiliging: nieuwste ontwikkelingen