部分 x86 CPU 中存在的硬件后门:Rosenbridge 漏洞剖析
: x86 CPU 中的硬件后门
github.com/xoreaxeaxeax/rosenbridge // domas // @xoreaxeaxeax
概述
项目 rosenbridge 揭露了部分桌面、笔记本和嵌入式 x86 处理器中存在的硬件后门。
该后门允许 ring 3(用户态)代码绕过处理器保护机制,自由读写 ring 0(内核)数据。虽然这个后门默认是关闭的(启用需要 ring 0 权限),但我们发现部分系统上它是默认开启的。
本仓库提供了检测处理器是否受影响、关闭该后门的工具,以及用于发现和分析后门的研究资料和工具。
后门说明
Rosenbridge 后门是嵌入在主 x86 核心旁边的一个小型、非 x86 架构的处理器核心。通过一个模型特定寄存器(MSR)的控制位启用,再借助一条启动指令切换状态。此后,这个嵌入式核心接收以特殊格式的 x86 指令封装的命令,并执行这些命令(我们称之为"深度嵌入式指令集"),绕过所有内存保护和权限检查。
虽然这个后门理论上需要内核权限才能激活,但实测发现部分系统上它是默认开启的,任何无权限的代码都可以修改内核。
Rosenbridge 后门与 x86 CPU 上其他已知的公开协处理器(例如 Management Engine 或 Platform Security Processor)完全不同;它比任何已知协处理器嵌入得更深,不仅能访问 CPU 的全部内存,还能访问寄存器文件和执行流水线。
受影响系统
据信只有 VIA C3 系列 CPU 受此问题影响。C 系列处理器主要面向工业自动化、POS 终端、ATM 以及医疗设备市场,同时也用于各种消费级桌面和笔记本电脑。
展望
该漏洞的影响范围有限:C3 之后的 CPU 代次已经不再包含此特性。
本作品以案例研究和思想实验的形式发布,旨在说明后门如何在日益复杂的处理器中出现,以及研究人员和终端用户如何识别此类特性。这里提供的工具和研究为更深入的处理器漏洞研究提供了起点。
检测你的 CPU
若要检测你的 CPU 是否受到影响:
git clone https://github.com/xoreaxeaxeax/rosenbridge
cd rosenbridge/util
make
sudo modprobe msr
sudo ./bin/check
该工具必须在裸机上运行(不能在虚拟机中),目前处于alpha阶段。对于不存在该后门的系统,运行它可能导致崩溃、内核恐慌或系统挂起。
这里提供的工具是围绕特定的处理器系列和核心设计的;遗憾的是,如果后门与研究中的形态存在哪怕细微的差异,工具也会漏报。
关闭后门
部分系统默认启用该后门,使非特权代码能够未经授权获得内核级访问权限。如果"检测你的 CPU"中的步骤表明你的 CPU 存在漏洞,你可以安装一个脚本,在启动过程的早期关闭该后门:
cd fix
make
sudo make install
reboot
请注意,即使采用了上述措施,拥有内核级访问权限的攻击者仍然可以重新启用后门。该脚本作为在启动过程中修正此问题的思路提供,但针对不同系统时需要做相应调整。
工具与技术
sandsifter 工具在本次研究中被大量用于发现未知指令。
-
asm
面向深度嵌入式指令集(DEIS)的汇编器。它将使用自定义 rosenbridge 汇编语言编写的程序转换为 x86 指令,这些指令在 launch-instruction 之后执行时,会向隐藏的 CPU 核心发送命令。
-
esc
利用 rosenbridge 后门进行权限提升的概念验证。
-
fix
在受影响系统上关闭该漏洞的初步思路,尽可能通过更新特定模型寄存器(MSR)来实现。
-
fuzz
一组用于对 x86 和 rosenbridge 核心进行模糊测试的工具,用于定位未知的启动指令和桥接指令,并解析 rosenbridge 核心的指令格式。
-
deis
用于探索隐藏 CPU 核心效果和能力的模糊测试工具。
-
exit
据推测,在某些处理器上,DEIS 序列末尾需要一段退出序列才能切回 x86 核心。该目录包含研究早期用于搜索退出序列的工具,但后来发现某款处理器不需要此类序列,该方向便被放弃。
-
manager
用 Python 编写的工具合集,用于监控和管理分布在多台工作机上的模糊测试任务。
-
wrap
精简版的 sandsifter 模糊测试工具,用于识别将 x86 核心中的命令发送至隐藏 rosenbridge 核心的桥接指令。
-
-
kern
一组辅助工具,用于监控内核内存和寄存器,检测模糊测试得出的 DEIS 指令所引发的变化。
-
lock
用于锁定或解锁 rosenbridge 后门的工具。
-
proc
用于从模糊测试日志中识别模式,从而归纳出 DEIS 指令行为类别的工具。
-
test
研究早期使用的工具,通过执行已知的 RISC 指令来尝试识别隐藏核心的架构。
-
util
用于检测处理器是否受 rosenbridge 影响的 alpha 阶段工具。
参考
(TODO:附上白皮书链接)
(TODO:附上幻灯片链接)
免责声明
本文所呈现的细节与推论均为作者基于所述研究得出的推断和观点。该研究旨在发现并修复所述 CPU 上存在的安全漏洞。VIA 处理器以低功耗和在嵌入式设计中的出色表现而闻名;我们认为所述功能是其本着善意、面向嵌入式市场打造的有用特性,只是无意间在某些早期型号上未被禁用。本声明不暗示任何恶意意图。
