2016 年 ARMv8.3-A 标准中引入的 Pointer Authentication 机制在苹果 A12 和高通 S4 SoC 上都实现了。刚刚正式发布的 iOS 12 已经开始借助这个特性防御漏洞攻击。
Pointer Authentication 是啥呢?ARM64 实际上只用低 40 位来寻址。Pointer Authentication 就利用剩余的 24 位来保存地址的签名。在利用漏洞覆盖指针的时候,除非知道签名是什么,否则即使覆盖了指针,也无法控制 PC。
Pointer Authentication 的目标和 Intel 的 CET 类似,都是用硬件实现 CFI。只不过 Intel 还没做进正式产品,而 ARM 阵营走得更快一些。