Hardware backdoors in some x86 CPUs
TL;DR · AI 摘要
某些x86处理器存在硬件后门漏洞,允许用户态代码绕过内核保护。
核心要点
- VIA C3系列CPU存在默认启用的硬件后门漏洞
- 后门通过专用指令集绕过内存保护机制
- 检测工具需在物理机上运行且可能不稳定
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- x86 CPU硬件后门
- 后门机制
- 专用指令集绕过保护
- 模型特定寄存器控制
- 受影响系统
- VIA C3系列处理器
- 工业自动化设备
- 应对方案
- 物理机检测工具
- 控制位关闭方法
金句 / Highlights
值得收藏与分享的关键句。
后门允许用户态代码直接读写内核数据,绕过所有内存保护机制
VIA C3处理器被证实存在默认启用的后门,影响工业自动化等关键领域
检测工具需在物理机上运行,且可能引发系统崩溃或挂起
GitHub - xoreaxeaxeax/rosenbridge: x86 CPU 中的硬件后门 · GitHub
project:rosenbridge
: x86 CPU 中的硬件后门
github.com/xoreaxeaxeax/rosenbridge // domas // @xoreaxeaxeax
概述
project:rosenbridge 揭示了部分台式机、笔记本和嵌入式 x86 处理器中存在硬件后门。
该后门允许环3(用户空间)代码绕过处理器保护机制,自由读写环0(内核)数据。虽然该后门通常需要环0权限才能启用,但我们发现某些系统上该后门默认处于启用状态。
本仓库包含以下工具:检查处理器是否受影响、若存在后门则关闭它,以及用于发现和分析后门的研究成果与工具。
后门机制
rosenbridge 后门是一个小型非 x86 核心,与主 x86 核心一同嵌入在 CPU 中。它通过特定模型寄存器控制位启用,随后通过 launch 指令进行切换。嵌入式核心会接收封装在特殊格式 x86 指令中的命令。该核心执行这些命令(我们称之为“深度嵌入式指令集”),绕过所有内存保护和权限检查。
尽管该后门应需要内核权限才能激活,但观察到某些系统默认启用该后门,允许任何非特权代码修改内核。
rosenbridge 后门与 x86 CPU 上其他已知协处理器(如管理引擎或平台安全处理器)完全不同;它比任何已知协处理器都更深层嵌入,不仅可访问 CPU 的全部内存,还能访问其寄存器文件和执行流水线。
受影响系统
目前认为只有 VIA C3 处理器会受到此问题影响。C 系列处理器主要面向工业自动化、销售点、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 指令,当按照启动指令执行时,会将命令发送到隐藏的 CPU 核心。
- esc:使用 rosenbridge 后门进行权限提升的概念验证。
- fix:用于通过模型特定寄存器更新,在受影响系统上尽可能关闭漏洞的初步框架。
- 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 处理器以其低功耗和嵌入式设计的卓越性能而闻名;我们认为所描述的功能是出于良好意图,作为嵌入式市场的有用功能开发的,并且在某些早期处理器世代中无意中被启用。此处不暗示任何恶意意图。
作者
project:rosenbridge 是 Christopher Domas(@xoreaxeaxeax)的研究项目。