DiveFuzz:通过“指令多样性”深入挖掘 CPU 漏洞的模糊测试新范式
“ 随着 CPU 架构与指令集的快速演进,现代处理器内部逻辑变得愈发复杂,隐藏的硬件漏洞也更加难以触达。一个长期被忽视的现实问题是:大量 CPU 模糊测试工具生成的指令序列高度相似,测试空间覆盖有限,难以真正“触及”复杂微架构状态。
针对这一核心瓶颈,研究者提出了DiveFuzz,一种通过多样化指令构造(Diverse Instruction Construction)来增强 CPU Fuzzing 深度与覆盖能力的新方法,旨在让模糊测试真正“潜入”处理器内部复杂执行行为。 ”
📄论文标题:DiveFuzz: Enhancing CPU Fuzzing via Diverse Instruction Construction
📅发表时间: ACM SIGSAC Conference on Computer and Communications Security(CCS) ,2025
🏫作者单位:中国科学院大学
💡开源代码:https://github.com/in2sec/DiveFuzz
01—方法介绍
图1展示了Cascade生成的约两百万条指令的回写数据重复率。可以发现CPU模糊测试工具在生成包含不同回写数据的测试指令时遇到了障碍。
图1. 级联指令回写数据重复率
如图2所示,这些指令的模糊频率存在显著差异。所以可知,当前的CPU模糊测试存在操作码分布不均衡的问题。
图2. 在对200万条指令进行真实模糊测试期间,Cascade中RV32I扩展指令的频率分布
DiveFuzz 的核心洞察是:CPU 漏洞往往与特定指令组合、执行模式及其触发的微架构状态高度相关,而不是单条指令本身。
因此,论文不再单纯追求“更多指令”,而是关注:如何系统性地构造“更不一样”的指令序列。
整体框架可概括为三步:
① 指令语义划分
根据指令功能、操作数特征与执行行为,对指令进行语义级分类。
② 多样化构造策略
在指令选择、组合顺序与参数配置层面引入系统性多样性。
③ 覆盖反馈驱动
利用执行反馈评估指令序列对微架构状态的探索效果。
图 3. DiveFuzz架构
小结:DiveFuzz 关注的不是“跑得快”,而是“跑得不一样”。
02—关键机制
- 指令多样性视角,将 CPU Fuzzing 的核心从“数量”转向“差异性”。
- 语义驱动构造,避免盲目随机,提升指令组合有效性。
- 更深微架构覆盖,更容易触发复杂、隐蔽的处理器异常行为。
- 通用性强,可与现有 CPU Fuzzing 框架协同使用。
模块 | 设计思路 | 作用 |
|---|---|---|
指令语义建模 | 按功能与行为对指令分类 | 为多样化构造提供基础 |
多样化指令生成 | 系统性改变指令组合与参数 | 扩展测试空间覆盖 |
执行反馈分析 | 监控异常与状态变化 | 评估模糊测试效果 |
迭代增强策略 | 基于反馈调整生成策略 | 持续深入微架构状态 |
小结:多样性并非随机,而是“有结构、有目的”的探索。
03—实验结果
实验使用Verilator(版本v5.018)进行硬件仿真。所使用的指令集架构(ISA)模拟器是Spike(版本1.1.1-dev,提交号f8b2e39)。在XiangShan上进行模糊测试时,定制ISA模拟器Nemu(提交号277ac7d)作为差异比较工具。操作系统环境为Ubuntu 22.04。对包括XiangShan、CVA6、Rocket Core和NutShell在内的各种CPU进行了模糊测试。主要实验结果如下。
(1)实验评估了DiveFuzz在覆盖率方面的表现,使用Rocket中五种常用的覆盖率指标:控制寄存器、多路复用器(mux)、代码行数(line)、就绪/有效信号(ready/valid)和信号翻转(toggle)。结果如图4和图5所示。
图4. 控制寄存器覆盖率的比较
图5. 多路复用器、线路、就绪/有效和触发器覆盖率的比较。
(2)实验对DiveFuzz识别的所有先前未知的漏洞进行了统计分析,结果汇总于表1。
表1. DiveFuzz发现的新漏洞列表,已知漏洞未包含在内。
小结:DiveFuzz通过深入检查内部操作数值,并采用先进的变异器实现平衡的操作码模糊测试,显著提高了指令回写数据的多样性。评估表明,DiveFuzz的性能优于最先进的模糊测试器,在五个关键指标上的覆盖率比DifuzzRTL快204倍,比Cascade快114倍。此外,DiveFuzz还发现了26个新漏洞,其中15个已被分配了CVE标识符。
📌 总结
DiveFuzz 从一个看似简单却被长期忽略的角度出发,重新审视了 CPU Fuzzing 的有效性问题。通过引入多样化指令构造机制,该方法显著提升了模糊测试对复杂微架构行为的探索能力。
这一工作表明,在硬件安全领域,如何构造测试输入,往往与测试本身一样重要。
📣 欢迎留言讨论
你认为指令多样性是否是提升 CPU Fuzzing 效果的关键因素?
在真实处理器验证流程中,DiveFuzz 的策略是否具备工程可扩展性?
📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!