Hardwarebeveiliging: nieuwste ontwikkelingen
Welke uitspraak beschrijft het mechanisme van Arm-pointerauthenticatie (PAC) juist?
- ABij elk gebruik van een pointer wordt het OS via een systeemaanroep gevraagd te bevestigen of de pointer een juiste waarde heeft
- BUit de pointerwaarde en een contextwaarde wordt met een sleutel in de CPU een korte authenticatiecode berekend, die in de hoge bits van de pointer wordt gezet en vóór gebruik wordt gecontroleerd
- CAlle bits van de pointer worden met een sleutel in de CPU versleuteld voordat ze in het geheugen worden opgeslagen, en vóór elk gebruik in de CPU ontsleuteld
Antwoord en toelichting tonen
Antwoord: B. Uit de pointerwaarde en een contextwaarde wordt met een sleutel in de CPU een korte authenticatiecode berekend, die in de hoge bits van de pointer wordt gezet en vóór gebruik wordt gecontroleerd
In de hoge bits van een pointer van 64 bits die niet voor het virtuele adres worden gebruikt, wordt een authenticatiecode gezet die met een sleutel in de CPU is berekend uit de pointerwaarde en een contextwaarde (bijvoorbeeld de stackpointer). Vlak voordat bijvoorbeeld het terugkeeradres van een functie wordt gebruikt, berekent een speciale instructie de code opnieuw en vergelijkt die; bij een afwijking wordt de pointer een onbruikbaar adres, wat aanvallen die terugkeeradressen op de stack overschrijven (zoals ROP) moeilijker maakt. Software kan de sleutel niet lezen, dus een aanvaller kan geen authenticatiecode maken die bij een gewijzigde pointer past. De lengte van de code hangt echter af van instellingen zoals de breedte van het virtuele adres en bedraagt vaak niet meer dan zo'n tien à vijftien bits, dus waar vaak kan worden gegokt, moet rekening worden gehouden met de kans op een toevallige overeenkomst.
Verder: nog 9 vragen over Hardwarebeveiliging: nieuwste ontwikkelingen