Qu'est-ce que Authentification de pointeurs (PAC) ?

Mécanisme ajouté dans Armv8.3-A. Un court code d'authentification (PAC) 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 inutilisés du pointeur, puis vérifié par une instruction dédiée juste avant l'utilisation du pointeur. En cas de discordance, le pointeur est transformé en adresse inutilisable, ce qui complique les attaques qui réécrivent les adresses de retour ou les pointeurs de fonction. La longueur du code dépend de réglages comme la largeur de l'adresse virtuelle.

Nom japonais: ポインタ認証(PAC)

« Authentification de pointeurs (PAC) » apparaît dans 2 questions d'entraînement réparties sur 1 thèmes, dont Sécurité matérielle : évolutions récentes.

Domaine: Sécurité matérielle : évolutions récentes

S'entraîner : questions sur Authentification de pointeurs (PAC)

Quelle affirmation décrit correctement le mécanisme d'authentification de pointeurs (PAC) d'Arm ?

  1. AÀ chaque utilisation d'un pointeur, l'OS est interrogé par un appel système pour confirmer que le pointeur a une valeur correcte
  2. 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
  3. 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.

« Authentification de pointeurs (PAC) » dans les explications

Questions mentionnant « Authentification de pointeurs (PAC) » (2)

  1. Quelle affirmation décrit correctement le mécanisme d'authentification de pointeurs (PAC) d'Arm ?
  2. À propos des fonctions matérielles qui soutiennent l'intégrité du flot de contrôle, quelle association est correcte entre ce qui protège les retours de fonction et ce qui protège les appels et sauts indirects, comme ceux qui passent par des pointeurs de fonction ?

Termes associés

Adresse de retour Pointeur Pointeur de pile Intégrité du flot de contrôle (control-flow integrity) Pointeur de fonction Pile fantôme (shadow stack) KPTI Meltdown IOMMU DMA (accès direct à la mémoire)

Retour au glossaire