Armv8.3-A引入了pointer authentication选项。 pointer authentication可以减轻ROP攻击。 为了防止ROP攻击,在函数开始时,LR寄存器中的返回地址被签名。这意味着在寄存器的高位添加了一个PAC。在返回之前,使用PAC对返回地址进行验证。如果检查失败,当用于分支时将生成异常。以下图表显示了一个例子:
这一变化使得发起ROP攻击变得更加困难。这是因为,要形成小工具链,攻击者需要知道这些小工具的位置,并且需要正确签名的指针指向这些位置。要获取签名指针,攻击者需要访问签名小工具。