Aller au contenu

Glossaire

Authentification de pointeurs (PAC)

Fonctionnalité ARMv8.3 qui signe les pointeurs avec une clé secrète : un pointeur altéré, comme une adresse de retour écrasée, échoue à l'authentification et déclenche une faute.

L'authentification de pointeurs (PAC) est une fonctionnalité AArch64 qui calcule une courte signature cryptographique — un pointer authentication code — sur un pointeur et une valeur de contexte à l'aide d'une clé secrète propre au processus, puis la stocke dans les bits de poids fort inutilisés du pointeur. Des instructions comme paciasp signent le registre de lien dans le prologue d'une fonction, et autiasp l'authentifient avant le ret.

Comme un attaquant qui écrase une adresse de retour sauvegardée ne peut pas calculer une signature valide sans la clé, l'authentification échoue et le processus déclenche une faute au lieu de retourner vers du code choisi par l'attaquant. Cela attaque directement l'arc arrière (backward edge) dont dépend le return-oriented programming. Elle s'active avec -mbranch-protection=pac-ret et se combine avec BTI. Voir PAC et BTI.