← 最新论文
💻 computer science

Stateful Embedded Fuzzing with Peripheral-Accurate SystemC Virtual Prototypes

本文提出了一种将 AFL++ 模糊测试与状态保持的 SystemC-TLM 虚拟原型相结合的新框架,通过向外设模型直接注入输入以模拟中断和 FIFO 更新等真实副作用,在保持代码覆盖率和执行性能的同时,有效消除了嵌入式软件预硅测试中的误报问题。

原作者: Chiara Ghinami, Igor Pontes Tresolavy, Luis Seibt, Nils Bosbach, Rainer Leupers

发布于 2026-04-23
📖 1 分钟阅读☕ 轻松阅读

原作者: Chiara Ghinami, Igor Pontes Tresolavy, Luis Seibt, Nils Bosbach, Rainer Leupers

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文介绍了一种**“更聪明的软件测试方法”**,专门用来检查嵌入式设备(比如无人机、机器人、智能手表里的软件)在正式生产之前有没有漏洞。

为了让你更容易理解,我们可以把整个过程想象成**“给一个还没造出来的机器人做‘压力测试’"**。

1. 背景:为什么我们需要这种新方法?

想象一下,你正在设计一款新的无人机。在真正造出硬件之前,你肯定想在电脑里先模拟一下它的飞行软件。

  • 传统方法(像“盲人摸象”): 以前的测试工具(比如 AFL++ 的旧用法)就像是一个盲人考官。它往软件里扔各种乱码(随机输入),看软件会不会崩溃。但是,因为它不懂硬件,它不知道“如果传感器没数据,软件会怎么反应”。这导致它经常误报(以为软件坏了,其实只是模拟环境太假),或者漏报(没发现真正的危险)。
  • 旧有的“高级”方法(像“作弊的考官”): 有些工具试图模拟硬件,但它们太简单了。比如,它们假装传感器会随时给数据,但实际上真实的传感器是有规律的(比如先初始化,再给数据)。这种“假模拟”会让软件产生很多幻觉,测试出来的结果不可信。

2. 这篇论文的“新发明”是什么?

作者们开发了一个**“超级模拟器 + 智能考官”**的组合。

  • 超级模拟器(SystemC-TLM 虚拟原型): 这不仅仅是一个软件,它是一个**“数字孪生”。它在电脑里完美地复制了无人机的所有硬件(CPU、传感器、通信接口等)。就像你有一个1:1 的乐高机器人模型**,虽然没通电,但它的齿轮、电路逻辑和真的一模一样。
  • 智能考官(AFL++ fuzzing): 这是一个不知疲倦的测试员,它会疯狂地给软件输入各种奇怪的数据(比如把温度传感器读成 9999 度,或者把通信数据截断)。

核心创新点:它们是怎么配合的?

以前的测试是“各玩各的”。而这个新框架做了一个**“翻译官”**(Injector 模块):

  1. 当软件试图读取传感器数据时,翻译官会立刻从“随机数据池”里抓一个数据填进去。
  2. 最关键的是,这个数据会触发真实的硬件反应。比如,如果数据异常,硬件真的会发出“中断信号”(就像门铃响了),软件会像对待真机器一样去处理这个信号。
  3. 如果软件因为处理不当而崩溃,测试员就会记录下来:“嘿,这里有个大坑!”

3. 用个比喻:餐厅后厨的测试

想象你在开一家新餐厅(嵌入式软件),但厨房设备(硬件)还没运到。

  • 以前的测试: 你让厨师(软件)对着空气切菜。你往空气里扔各种奇怪的指令(“切 100 公斤土豆!”)。厨师可能会因为指令太荒谬而发疯(崩溃),但这可能只是因为你指令太假,而不是厨师真的有问题。
  • 这篇论文的测试: 你搭建了一个全功能的虚拟厨房
    • 当厨师伸手去拿土豆(读取传感器)时,一个自动机械臂(Injector)会真的递给他一个土豆。
    • 如果机械臂递给他一个腐烂的土豆(恶意输入),厨师会真的开始处理这个腐烂的土豆。
    • 如果厨师因为处理腐烂土豆而把厨房弄得一团糟(软件崩溃),你就知道:“哦!原来我们的厨师在处理坏食材时没有防护措施,这是个真实的安全隐患!”

4. 他们发现了什么?(实验结果)

作者用这个新方法测试了无人机、机器人和操作系统组件:

  1. 抓到了真 bug: 他们发现了一些以前没注意到的严重问题。
    • 比如,无人机软件在读取传感器数据长度时,如果传感器说“我有 1000 个数据”,软件就拼命去读,结果内存溢出(像杯子装不下水溢出来了)。
    • 比如,机器人软件在计算定时器时,如果收到一个"0"作为分母,直接除以零导致死机。
  2. 消除了“狼来了”: 以前的工具经常误报(False Positives),告诉开发者“这里出错了”,结果开发者一查发现是模拟器太假。新工具因为模拟得太真实,几乎不再误报
  3. 代价是什么? 因为模拟得太细致(连硬件的每一个齿轮都模拟了),速度比那些“假模拟”工具慢了一倍。但这就像做 CT 扫描比 X 光片慢一样,虽然慢,但看得更清楚、更准确。

5. 总结:这对我们意味着什么?

这篇论文的核心思想是:在制造芯片之前,先用“高保真”的虚拟环境把软件测个底朝天。

  • 以前: 我们要么测得快但不准(容易漏掉真问题),要么测得准但太慢太麻烦(需要改代码)。
  • 现在: 我们有了一个**“不修改代码、不依赖真实硬件、且极其逼真”**的测试方法。

这就好比在造飞机之前,先在风洞里用最真实的空气动力学模型去试飞,而不是在纸上画图纸。这样,当真正的飞机造出来时,我们就能更有信心地说:“它的软件是安全的,不会因为一阵怪风就坠毁。”

一句话总结:
这就给嵌入式软件请了一位**“拥有全知全能视角的魔鬼教练”**,在虚拟世界里把软件逼到极限,确保它在面对真实世界的混乱时,依然能稳稳当当。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →