DIFUZZRTL: Differential Fuzz Testing to Find CPU Bugs

IoT 2年前 (2022) admin
576 0 0

DIFUZZRTL: Differential Fuzz Testing to Find CPU Bugs

基本信息

会议:S&P ’21

关键字:Fuzzing,ISA,Hardware,CPU

介绍

在进行系统安全的研究时,我们经常会遇到在 QEMU 等模拟器上运行的好好的,但一到板子上跑就挂了的情况。 很多时候,这类问题都是由于模拟器未能很好地 “仿真” 处理器的实际运行状态导致的。极少数的情况下,是 CPU 自身的实现有问题。

今天介绍的这篇文章,就是讨论如何模糊测试 CPU 的 RTL 级别描述,来寻找 CPU 硬件级别的 Bug。

之前也有类似的,对 RTL 进行测试的文章,但作者声称之前的文章所利用的 Mux-based Coverage 存在下面两个问题。

  1. Clock-insensitive, 无法精确的捕捉到电路所代表的有限自动机(FSM)的状态转变。
  2. Heavy Instrumentation Cost, 一个 CPU 中有太多的 Mux,对它们全部进行插桩会带来高昂的性能开销。

啥是 Mux 啊? (选择器电路)

为此,作者提出了一种新的衡量 Coverage 的方法,Control Register Converage。 作者不再对每个 Mux 进行插桩, 而是对每个 Mux 的 Control Register ( 可以决定 Mux 的输出结果

DIFUZZRTL: Differential Fuzz Testing to Find CPU Bugs

技术细节

Control Register 识别

作者将 RTL 转换成图,再利用数据流分析的方法,分析出每个 Mux 对应的 Control Register。

DIFUZZRTL: Differential Fuzz Testing to Find CPU Bugs

检查结果

那么在有了一个合适的 Coverage 之后,作者如何知道某一个 CPU 的实现是错误的呢? 这里作者采用了两种差分测试的方法,

  1. 比较 CPU 与 ISA 模拟器的结果区别
  2. 比较同一 ISA 下不同 CPU 的结果区别

结果

最后作者找到了 RISC-V 开源实现的各类 CPU 中的一堆 Bug。DIFUZZRTL: Differential Fuzz Testing to Find CPU Bugs随着 RISC-V CPU 的发展,感觉此类的文章也会越来越多。

– END –


原文始发于微信公众号(COMPASS Lab):DIFUZZRTL: Differential Fuzz Testing to Find CPU Bugs

版权声明:admin 发表于 2022年11月8日 下午4:32。
转载请注明:DIFUZZRTL: Differential Fuzz Testing to Find CPU Bugs | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...