← 最新论文
💻 computer science

On Interaction Effects in Greybox Fuzzing

该论文提出了一种名为 MuoFuzz 的灰盒模糊测试工具,通过建模并学习突变算子之间的交互效应以动态选择最优突变序列,从而在代码覆盖率和漏洞发现能力上超越了 AFL++ 和 MOPT 等现有工具。

原作者: Konstantinos Kitsios, Marcel Böhme, Alberto Bacchelli

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

原作者: Konstantinos Kitsios, Marcel Böhme, Alberto Bacchelli

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

这篇文章介绍了一种名为 MuoFuzz 的新型软件测试工具,它的核心思想是:在寻找软件漏洞时,改变“动作”的顺序,效果会大不相同。

为了让你更容易理解,我们可以把软件漏洞测试(Fuzzing)想象成**“开锁”或者“烹饪”**。

1. 背景:传统的“乱试”方法

想象你面前有一把复杂的锁(也就是我们要测试的软件),你需要用各种工具(比如螺丝刀、铁丝、锤子等,对应软件里的32 种变异算子)去尝试打开它。

  • 传统的做法(如 AFL++): 就像是一个新手厨师,手里有一堆调料(突变算子)。他每次炒菜(测试)时,都是随机抓一把调料撒进去。比如,先撒点盐,再随机抓点糖,或者先切块再翻炒。他不管刚才撒了什么,下一次撒什么都是完全随机的,或者按照一个固定的比例来撒。
  • 问题: 这种方法虽然也能偶尔做出美味佳肴(发现漏洞),但效率不高。因为有些调料搭配在一起(比如“先撒盐再放糖”)可能味道很好,而“先放糖再撒盐”可能就很难吃。传统方法忽略了这种**“搭配顺序”**的重要性。

2. 核心发现:顺序很重要(交互效应)

作者们做了一个大胆的实验:他们把 32 种工具两两组合,看看哪种组合能最快打开锁(发现新的代码路径)。

  • 发现: 他们惊讶地发现,工具 A 紧接着工具 B 使用,和工具 B 紧接着工具 A 使用,产生的效果截然不同。
  • 比喻: 就像做菜,如果你先“切肉”再“炒肉”,肉很嫩;如果你先“炒肉”再“切肉”,肉就老了。或者像开锁,先用“铁丝”试探锁芯,再用“锤子”敲击,可能比反过来更有效。
  • 结论: 工具之间不是独立的,它们之间存在**“化学反应”**(交互效应)。

3. 解决方案:MuoFuzz(聪明的厨师)

基于这个发现,作者开发了一个叫 MuoFuzz 的新工具。它不再随机乱撒调料,而是学会了**“看前一步,定后一步”**。

  • 它的学习过程(训练阶段):
    在开始正式测试的前几个小时,MuoFuzz 会像个勤奋的实习生。它会尝试各种组合,并记笔记:

    • “哦,刚才用了‘工具 A',紧接着用‘工具 B',成功发现了新路径!”
    • “刚才用了‘工具 A',紧接着用‘工具 C',没什么反应。”
      它把这些经验记在一个概率表里。
  • 它的执行过程(引导阶段):
    正式测试开始后,MuoFuzz 就变聪明了:

    • 如果它刚才用了“工具 A",它会查表:“根据经验,接下来用‘工具 B'成功的概率最高!”于是它果断选择 B。
    • 如果刚才用了“工具 C",它可能会觉得“接下来用‘工具 D'比较好”。
    • 比喻: 这就像是一个老练的侦探。如果他在现场发现了一个脚印(前一个动作),他就能推断出嫌疑人下一步最可能去哪里(下一个动作),而不是盲目地到处乱跑。

4. 实验结果:真的更有效吗?

作者把 MuoFuzz 和目前世界上最强的两个测试工具(AFL++ 和 MOPT)进行了对比。

  • AFL++: 随机撒调料(固定概率)。
  • MOPT: 虽然知道哪些调料好用,但它认为每种调料是独立的,只优化单个调料,不关心搭配顺序。
  • MuoFuzz: 知道“先 A 后 B"比“先 B 后 A"好。

结果:

  • 覆盖率更高: 在 13 个测试程序中,MuoFuzz 有 10 个表现最好,覆盖了更多的代码区域。
  • 发现更多漏洞: 它发现了 AFL++ 漏掉的 4 个漏洞,甚至发现了一个连 AFL++ 和 MOPT 都没找到的“隐藏彩蛋”(漏洞)。
  • 速度更快: 达到同样的测试深度,MuoFuzz 花的时间更少。

5. 总结与启示

这篇文章告诉我们,在软件安全测试中,“怎么做”和“按什么顺序做”同样重要

  • 以前的思维: 只要我有足够的工具,随机组合总能撞大运。
  • 现在的思维(MuoFuzz): 我要学习工具之间的配合默契。就像优秀的乐队,乐手之间知道谁先谁后,才能演奏出最完美的乐章,而不是每个人只顾自己乱弹。

一句话总结:
MuoFuzz 就像是一个学会了“套路”的测试专家,它不再盲目乱撞,而是根据上一步的动作,智能地选择下一步的最佳策略,从而更高效地揪出软件里的 Bug。

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

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

试用 Digest →