news 2026/4/23 10:58:17

【DeepSeek】Pointer Authentication (PAuth)介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【DeepSeek】Pointer Authentication (PAuth)介绍

ENABLE_PAUTH 介绍

ENABLE_PAUTHARM Trusted Firmware (ATF)中的一个编译配置选项,用于启用Pointer Authentication (PAuth)硬件特性。

这是 ARMv8.3-A 架构引入的一种硬件安全机制,旨在防御基于内存损坏的攻击(如缓冲区溢出攻击)。


1. 背景知识:什么是指针认证?

在传统的程序执行中,攻击者利用缓冲区溢出漏洞覆盖栈上的返回地址,从而劫持控制流,执行恶意代码。

Pointer Authentication (PAuth)机制通过以下方式解决这个问题:

  1. 签名:在将指针(如返回地址、函数指针)存入内存之前,CPU 利用密钥和上下文信息计算出一个加密签名,并将其填充到指针未使用的高位比特中。
  2. 验签:当指针从内存中读出并准备使用时,CPU 重新计算签名并与指针中的签名比对。
  3. 失败处理:如果签名不匹配(说明指针被篡改),CPU 会触发异常,阻止恶意跳转。

2. ENABLE_PAUTH 的作用

当在 ATF 编译配置中设置ENABLE_PAUTH=1时,会产生以下效果:

2.1 保护 EL3 固件自身

ATF 运行在最高特权级EL3,是系统安全的基石。启用此选项后:

  • 编译器会生成包含 PAuth 指令(如PAC*AUT*)的代码。
  • ATF 的函数返回地址会被签名。如果攻击者试图利用 EL3 的漏洞覆盖返回地址,硬件会检测到签名错误,导致系统复位或陷入异常,从而防止 EL3 被攻破。

2.2 密钥管理

ATF 负责在系统启动时初始化 PAuth 密钥。

  • ATF 会为不同的异常级别(EL1, EL2, EL3)生成或加载密钥。
  • 由于 PAuth 密钥是系统资源,ATF 需要在上下文切换时正确保存和恢复这些密钥,确保不同安全世界或不同进程之间的隔离。

2.3 配合内核使用

虽然ENABLE_PAUTH主要针对 ATF 自身,但 ATF 的初始化流程也会为 Rich OS(如 Linux Kernel)准备好硬件环境,使其能够使用 PAuth 特性。

3. 硬件与工具链要求

要使ENABLE_PAUTH生效,必须满足以下条件:

  1. 硬件支持:目标 SoC 的 CPU 必须实现 ARMv8.3-A 或更高版本的架构扩展(支持PAuth扩展)。
  2. 编译器支持:编译 ATF 的工具链必须支持 PAuth 指令集。通常需要在编译标志中加入-mbranch-protection=pac-ret+leaf或类似选项。
  3. 架构检查:ATF 启动代码会检查当前 CPU 是否支持该特性。如果不支持但开启了此选项,系统可能会启动失败或回退到禁用状态。

4. 与 BTI (Branch Target Identification) 的关系

ENABLE_PAUTH通常与ENABLE_BTI一起讨论:

  • PAuth (PAUTH):保护指针的完整性,防止指针被篡改(解决“去哪里”的问题)。
  • BTI:保护间接跳转的目标合法性,防止跳转到非法代码片段(解决“能不能跳”的问题)。

两者共同构成了 ARM控制流完整性的硬件防护体系。

5. 总结

ENABLE_PAUTH是 ATF 中用于开启指针认证功能的开关。它利用 ARMv8.3 硬件特性,对关键指针进行加密签名,能够有效防止 ROP(Return Oriented Programming)等内存破坏类攻击,显著提升了固件代码的安全性。

Return Oriented Programming (ROP) 详解

Return Oriented Programming (ROP),中文译为面向返回编程,是一种高级的计算机漏洞利用技术。

简单来说,攻击者利用程序中已有的代码片段,通过巧妙排列这些片段的地址,来实现恶意功能,而不需要注入任何新的可执行代码。


1. 核心背景:为什么需要 ROP?

在早期的攻击中,黑客通过缓冲区溢出将恶意的机器码直接写入内存,然后跳转执行。为了防御这种攻击,现代操作系统引入了NX 位DEP (数据执行保护)机制。

  • NX 机制:将存放数据的内存区域(如栈、堆)标记为“不可执行”。即使黑客把恶意代码写入了栈中,CPU 也会拒绝执行,直接报错。

ROP 正是为了绕过 NX 保护而诞生的。
既然不能写入新代码,那就复用程序自身已有的代码

2. ROP 的原理与机制

ROP 的核心思想是利用程序中现有的、以ret(返回指令)结尾的指令序列,这些序列被称为Gadgets(片段)

2.1 什么是 Gadget?

在二进制程序中,存在许多微小的指令序列,例如:

  • Gadget 1:pop rdi; ret(将栈顶数据弹出到 rdi 寄存器,然后返回)
  • Gadget 2:pop rsi; ret(将栈顶数据弹出到 rsi 寄存器,然后返回)
  • Gadget 3:mov [rdi], rsi; ret(将 rsi 的值写入 rdi 指向的地址,然后返回)

这些指令原本可能是程序逻辑的一部分,但在 ROP 攻击中,它们被攻击者“断章取义”地重新组合。

2.2 攻击流程

攻击者通过缓冲区溢出覆盖栈上的数据,构造一条“ROP 链”:

  1. 覆盖返回地址:攻击者将当前函数的返回地址覆盖为Gadget 1的地址。
  2. 布置栈数据:在返回地址之后,攻击者精心排列后续 Gadget 的地址和所需的参数。
  3. 触发执行
    • 当前函数执行完毕,遇到ret指令,CPU 跳转到Gadget 1
    • Gadget 1 执行完毕,遇到自己的ret指令。此时栈顶正好是Gadget 2的地址。
    • CPU 跳转到 Gadget 2…
    • 如此循环,像“流水线”一样,一个个 Gadget 依次执行。

通过组合这些零碎的 Gadget,攻击者最终可以实现任意代码执行(如启动 Shell、读取文件)。

3. 形象的比喻

想象你要写一封勒索信,但监狱长禁止你使用纸笔(相当于 NX 保护,禁止写入新代码)。

ROP 的做法是:
你翻遍监狱里所有的旧报纸和书本(程序的内存空间),剪下你需要的单词(Gadgets),然后把它们按顺序拼贴在一起,组成你的勒索信。

  • 你没有写新字(没有注入新代码)。
  • 但你利用已有的字(复用现有指令)表达了新的恶意意图。

4. ROP 与指针认证 的对抗

回到你之前问的ENABLE_PAUTH,这正是 ARM 为了对抗 ROP 攻击而设计的终极防御武器。

ROP 的弱点

ROP 攻击完全依赖于修改栈上的返回地址。攻击者必须把原本合法的返回地址改成 Gadget 的地址。

PAUTH 如何防御

当开启ENABLE_PAUTH后:

  1. 签名:函数调用时,CPU 会把返回地址用密钥签名,存入栈中。签名后的地址看起来像是一个乱码。
  2. 验签:函数返回时,CPU 会读取栈中的地址,验证签名。
  3. 挫败攻击
    • 如果攻击者通过溢出修改了栈上的返回地址(换成 Gadget 地址),签名就会失效。
    • CPU 发现签名不对,判定地址被篡改,直接触发异常,终止程序。
    • ROP 链在第一步就会断裂,攻击无法进行。

总结

  • ROP:一种利用程序现有代码片段进行攻击的技术,专门用于绕过“数据执行保护”(NX)。
  • 手段:控制栈上的返回地址,形成“Gadget 链”。
  • 克星Pointer Authentication (PAUTH)。它通过给返回地址加锁(签名),让攻击者无法篡改返回地址,从而从根本上切断了 ROP 的执行路径。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 10:53:48

怎样在Obsidian中高效管理Excel表格?这个插件给你完整解决方案

怎样在Obsidian中高效管理Excel表格?这个插件给你完整解决方案 【免费下载链接】obsidian-excel 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-excel 如果你正在使用Obsidian管理知识库,却经常为表格数据而烦恼——在外部Excel编辑后需…

作者头像 李华
网站建设 2026/4/23 10:53:09

IPXWrapper终极指南:3个步骤让经典游戏在现代Windows重获联机能力

IPXWrapper终极指南:3个步骤让经典游戏在现代Windows重获联机能力 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 你是否曾经尝试在Windows 10或11上运行《红色警戒2》、《暗黑破坏神》等经典游戏,却发现…

作者头像 李华
网站建设 2026/4/23 10:47:19

3步掌握抖音下载神器:小白也能上手的完整指南

3步掌握抖音下载神器:小白也能上手的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音…

作者头像 李华
网站建设 2026/4/23 10:47:18

计算机网络-计算机网络的概念 功能 发展阶段 组成 分类

计算机网络-计算机网络的概念 功能 发展阶段 组成 分类 文章目录 计算机网络的概念 功能 发展阶段 总览计算机网络的概念计算机网络的功能计算机网络的发展 计算机网络的发展-第一阶段计算机网络的发展-第二阶段-第三阶段计算机网络的发展-第三阶段-多层次ISP结构 小结 计算机…

作者头像 李华