Sécurité matérielle : évolutions récentes
Quelle affirmation décrit correctement le mécanisme d'authentification de pointeurs (PAC) d'Arm ?
- AÀ chaque utilisation d'un pointeur, l'OS est interrogé par un appel système pour confirmer que le pointeur a une valeur correcte
- BUn court code d'authentification est calculé à partir de la valeur du pointeur et d'une valeur de contexte avec une clé interne au CPU, placé dans les bits de poids fort du pointeur et vérifié avant l'utilisation
- CTous les bits du pointeur sont chiffrés avec une clé interne au CPU avant d'être stockés en mémoire, puis déchiffrés dans le CPU avant chaque utilisation
Afficher la réponse et l'explication
Réponse : B. Un court code d'authentification est calculé à partir de la valeur du pointeur et d'une valeur de contexte avec une clé interne au CPU, placé dans les bits de poids fort du pointeur et vérifié avant l'utilisation
Dans les bits de poids fort d'un pointeur de 64 bits qui ne servent pas à l'adresse virtuelle, on place un code d'authentification calculé avec une clé interne au CPU à partir de la valeur du pointeur et d'une valeur de contexte (par exemple le pointeur de pile). Juste avant d'utiliser par exemple l'adresse de retour d'une fonction, une instruction dédiée recalcule le code et le compare ; en cas de discordance, le pointeur est transformé en adresse inutilisable, ce qui complique les attaques qui réécrivent les adresses de retour sur la pile (comme le ROP). Le logiciel ne peut pas lire la clé ; l'attaquant ne peut donc pas produire un code d'authentification correspondant à un pointeur modifié. Toutefois, la longueur du code dépend de réglages comme la largeur de l'adresse virtuelle et ne dépasse souvent pas une quinzaine de bits ; lorsque de nombreuses tentatives sont possibles, il faut tenir compte de la probabilité d'une concordance fortuite.
Continuer : 9 autres questions sur Sécurité matérielle : évolutions récentes