Back to blog
Oct 30, 2026
3 min read

硬件模糊测试

Hardware-Fuzz

Hardware-Fuzz

GoldenFuzz (NDSS’26) → CURE-Fuzz (ICCAD’25) → GenHuzz (USENIX Security’25) → RLFuzz (HOST’25) → HFL (DATE’25) → ChatFuzz (DATE’24)

论文发文场所发文时间解决的问题解决问题所用到的技术
GoldenFuzzNDSS(CCF-A) 20262026-02现有硬件 Fuzzing 中,测试用例优化往往频繁依赖 RTL/DUT 仿真,导致仿真开销高、测试生成吞吐率低;同时还需要更好地利用指令语义和依赖关系生成高质量测试程序。Golden Reference Model (GRM) + 两阶段 Fuzzing + 生成式测试程序构造。先在快速 ISA-compatible Golden Reference 上优化测试用例,再送入真实 DUT 验证;利用 instruction block 和反馈信息提升测试质量。
CURE-FuzzICCAD (CCF-B)20252025-10传统 Coverage-guided Fuzzing 容易集中于已经被频繁访问的状态,对未知、稀有处理器状态探索不足;同时测试程序结构和控制流缺乏灵活控制。Curiosity-Driven Reinforcement Learning + Hierarchical Test Generation。引入内在好奇心奖励,激励 Agent 探索新颖硬件状态,并通过分层生成模型控制指令结构、控制流和依赖关系。
GenHuzzUSENIX Security(CCF-A) 20252025-08随机变异方法难以理解指令语义和复杂指令依赖,生成大量低价值测试程序;同时硬件覆盖反馈没有被充分用于指导生成。Language Model + Hardware-Guided Reinforcement Learning。利用语言模型生成具有语义及指令依赖的 RISC-V 程序,并使用真实硬件/RTL 的覆盖率反馈持续优化生成策略。
RLFuzzIEEE HOST 20252025-05传统硬件 Fuzzer 的 mutation 策略通常采用人工设定或固定概率,不能根据当前硬件状态动态选择最有效的变异操作,导致覆盖率增长缓慢。Deep Reinforcement Learning / Deep Q-Learning (DQN) + Mutation Selection + Asynchronous Training。将 mutation operator 选择建模为 RL 决策问题,通过覆盖反馈学习最优变异策略,并并行执行 Fuzzing 与模型训练。
HFLDATE(CCF-B) 20252025-03Hardware Fuzzing 需要大量 iteration 才能提高覆盖率,并容易出现coverage saturation;缺少对测试程序覆盖潜力的有效预测。LSTM + Coverage Predictor + Reinforcement Learning Loop。使用 Multi-head LSTM 生成指令序列,通过 LSTM Coverage Predictor 预测测试质量,并利用真实硬件反馈形成强化学习闭环。
ChatFuzzDATE(CCF-B) 20242024-03随机输入和简单 mutation 难以生成包含复杂数据流和控制流依赖的测试程序,因此对处理器深层状态空间探索不足。Language Model + Reinforcement Learning。首先学习汇编/机器指令语义,再利用有效指令反馈和 RTL coverage feedback 分阶段强化生成模型,使其生成更有效、更高覆盖率的测试程序。

GoldenFuzz

GoldenFuzz: Generative Golden Reference Hardware Fuzzing

NDSS(Network and Distributed System Security Symposium) · 2026
Lichao Wu

leverages a golden reference model to efficiently explore processor states and reduce RTL simulation overhead

痛点

  • 生成的测试不够好:现有 fuzzer 主要依靠随机变异或启发式规则,抓不住 ISA 里指令之间的依赖关系,因此产生大量重复用例,边界情况没有被探索到;论文还明确指出,先前工具有时生成的用例里可执行指令甚至不到 10 条。
  • 优化效率不高:有些工作用控制流引导或强化学习来挑选用例,但“改进用例”和“探索覆盖”混在一起,导致两边效率都不高。
  • 算力开销大:每次迭代都要在周期级精度的 DUT 仿真上运行一大批用例,速度慢到限制探索范围。

方法

  • 用 Golden Reference Model 代替昂贵的 DUT 做前期反馈 不需要每生成一个测试都去跑很慢的 RTL 仿真,而是在更快的参考模型上评估测试质量。降低生成高质量测试的成本。

  • 以 Instruction Block 为单位生成和优化测试 不只是随机拼单条指令,而是关注一组指令之间的组合与依赖关系,逐步构造高质量测试用例。让生成的指令序列更有意义。

  • 利用好/坏测试的反馈持续优化,再拿高质量测试去测真实 DUT 根据覆盖率等反馈判断哪些指令组合有效、哪些效果差,用这些信息改进后续生成,最后把优化后的测试用于真实 CPU。先快速学会“怎么测”,再真正去“测 CPU、找 Bug”。

局限

  1. 依赖高质量的 GRM。 GoldenFuzz 的核心前提是存在一个快速、可信、ISA-compliant 的 Golden Reference Model。如果换到某种新 ISA、定制扩展或特殊硬件,而没有成熟 GRM,那么这套方法就不容易直接使用。GRM 自己如果存在错误,也可能影响测试生成和判断。

  2. GRM 和真实 DUT 存在“抽象鸿沟”。 GRM 主要描述 ISA 层面的正确行为,而真正 CPU 还有 Pipeline、Cache、Branch Predictor、乱序执行等复杂微架构状态。在 GRM 上表现“好”的测试,不一定就是最能探索 DUT 微架构状态的测试。 GoldenFuzz 本身采用“两阶段”设计,只是把测试 refinement 与 DUT 上的 coverage/vulnerability exploration 部分解耦,并没有完全替代 DUT fuzzing。

  3. Coverage 只是代理指标,不等于 Bug。 GoldenFuzz 很重视覆盖率,因为它需要一个信号判断测试有没有探索价值。Coverage 高只能说明“探索得广/深了一些”,不能保证一定进入了真正容易出 Bug 的状态。更一般的 coverage-guided fuzzing 研究也指出,只知道“执行了哪里”有时不足以描述“以什么状态、什么路径到达那里”。可能存在:

    Test A → Coverage 很高 → 没 Bug
    Test B → Coverage 不突出 → 恰好触发关键 Bug
    
  4. 目前验证范围仍然有限。 论文主要在 RocketChip、BOOM、CVA6 三个 RISC-V 处理器上评估,并额外测试了商业 BA51-H core extension;结果很好,但这并不能直接证明它对所有处理器、所有 ISA 和各种定制硬件都同样有效。