What is Pointer authentication (PAC)?

A mechanism added in Armv8.3-A. A short authentication code (PAC) is computed from the pointer value and a context value with a key held inside the CPU, placed in the unused upper bits of the pointer, and checked with a dedicated instruction just before the pointer is used. On a mismatch the pointer is turned into an unusable address, which makes attacks that overwrite return addresses or function pointers harder. The length of the code depends on settings such as the virtual address width.

Japanese name: ポインタ認証(PAC)

Pointer authentication (PAC) appears in 2 practice questions across 1 topic, including Hardware Security: Advanced Topics and Trends.

Field: Hardware Security: Advanced Topics and Trends

Try it: questions about Pointer authentication (PAC)

Which correctly describes the mechanism of Arm pointer authentication (PAC)?

  1. AEvery time a pointer is used, the OS is asked through a system call to confirm whether the pointer has a correct value
  2. BA short authentication code is computed from the pointer value and a context value with a key inside the CPU, placed in the pointer's upper bits and checked before use
  3. CAll bits of the pointer are encrypted with a key inside the CPU before being stored in memory and decrypted inside the CPU before each use
Show answer and explanation

Answer: B. A short authentication code is computed from the pointer value and a context value with a key inside the CPU, placed in the pointer's upper bits and checked before use

In the upper bits of a 64-bit pointer that are not used for the virtual address, an authentication code computed with a key inside the CPU from the pointer value and a context value (for example the stack pointer) is inserted. Just before a function's return address or similar is used, a dedicated instruction recomputes and compares it and, on a mismatch, turns the pointer into an unusable address, which makes attacks that overwrite return addresses on the stack (such as ROP) harder. Software cannot read the key, so an attacker cannot produce an authentication code that matches a modified pointer. However, the length of the code depends on settings such as the virtual address width and is often a dozen or so bits or fewer, so where many guesses are possible, the probability of a chance match has to be considered.

Pointer authentication (PAC) in the explanations

Questions that mention Pointer authentication (PAC) (2)

  1. Which correctly describes the mechanism of Arm pointer authentication (PAC)?
  2. Regarding hardware features that support control-flow integrity, which correctly pairs what protects returns from functions with what protects indirect calls and jumps such as those through function pointers?

Books on Hardware Security: Advanced Topics and Trends Ad

As an Amazon Associate I earn from qualifying purchases.

Related terms

Return address Pointer Stack pointer Control-flow integrity Function pointer Shadow stack Kernel page-table isolation (KPTI) Meltdown IOMMU DMA (direct memory access)

Back to the glossary