An Empirical Study of Fuzz Harness Degradation
这项针对 Google OSS-Fuzz 平台的实证研究表明,尽管开源 C/C++ 项目的模糊测试工具集通常在无需显式更新的情况下仍能长期保持其漏洞发现能力和覆盖率,但它们仍可能因项目的演进而发生退化,这促使作者识别其根本原因并贡献用于检测此类退化的工具。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你有一个非常聪明、不知疲倦的机器人检查员,名叫 Fuzz。它的工作是拿着数百万把随机的钥匙去敲各种门窗,试图寻找那些不该敞开的隐藏裂缝、损坏的锁或秘密通道。这个过程被称为 模糊测试(Fuzzing)。
但问题在于,机器人检查员不能直接走上前去就开始乱敲。它需要一个 模糊测试适配器(Fuzz Harness)。你可以把这个适配器想象成一个 定制的适配器 或一个 特殊的门铃。它负责将机器人随机的“敲击”翻译成软件大楼前门能理解的格式,这样大门才能真正打开,让机器人进入内部进行检查。
问题所在:适配器变旧了
软件就像一座活生生的房子;房主不断地增加新房间、更换锁具或翻修厨房。这篇论文提出了一个简单的问题:当房子发生变化时,适配器(Harness)会发生什么?
房主是每次盖了新房间都更新适配器吗?还是他们把旧适配器留在架子上,寄希望于它依然有效?如果他们就这样放任不管,适配器可能会在没人察觉的情况下慢慢变得毫无用处。这被称为 “无声退化”(Silent Degradation)。如果适配器坏了,机器人可能一直在按门铃,但如果门铃坏了,机器人就永远进不去大楼,也就无法发现真正的漏洞。
研究人员做了什么
论文的作者们扮演了侦探的角色。他们研究了 OSS-Fuzz,这是一个由 Google 运行的庞大且真实的开源软件测试平台,数百个开源项目都在这里接受这些机器人检查员的测试。
他们追踪了 342 个不同的软件项目,并观察了其 9,609 个不同版本的适配器 经过几年的变化。他们想了解:
- 适配器是否随着时间推移而变差?
- 如果适配器不进行更新,机器人发现的漏洞是否会减少?
- 适配器为什么会失效?
主要发现
1. “僵尸”适配器效应
令人惊讶的是,大多数适配器并没有立即腐烂。即使房子发生了变化,适配器通常仍能保持良好的工作状态,让机器人进入。即使在没有触动适配器的情况下,机器人多年来仍能持续发现漏洞。这是个好消息!这意味着一旦你构建了一个好的适配器,它可以持续很长时间。
2. “缓慢泄漏”的现实
然而,情况并非完美。虽然 平均而言 适配器依然强健,但某些特定的适配器确实开始失效了。
- “新房间”问题: 有时软件增加了一个全新的侧翼(一个新功能),但适配器仍然只在敲击前门。机器人无法进入新房间进行检查。
- “更严密的锁”问题: 有时软件所有者加强了安全性(增加了更严格的检查)。原本习惯于松动锁具的适配器无法通过新的安全检查,导致机器人被挡在外面。
- “损坏的门铃”问题: 有时适配器本身坏了,是因为用于构建它的工具发生了变化,或者代码更新的方式让适配器无法理解。
3. “假象”问题
研究人员发现了一些棘手的案例,在这些案例中,数据看起来很糟糕,但适配器实际上并没有坏。
- “客房”混淆: 有时软件包含了来自其他人的代码(比如连接在主建筑上的客房)。如果机器人开始将客房的房间数计入总数,那么主建筑被检查的百分比看起来就会突然变得极小,即便机器人对主建筑的检查做得非常好。
- “空语料库”故障: 有时由于技术错误,机器人停止生成新的“钥匙”,但系统并没有报告失败。它看起来只是机器人什么也没在做而已。
解决方案:新的警示灯
由于“无声退化”如此隐蔽,研究人员为 Google 的平台(OSS-Fuzz)以及一个名为 Fuzz Introspector 的配套工具构建了 新的警示灯。
你可以把这些想象成观察适配器的 智能传感器:
- “缺失房间”传感器: 如果软件增加了新功能,但机器人没有对其进行检查,传感器就会闪烁警告。
- “损坏门铃”传感器: 如果适配器停止构建或停止工作,系统会立即通知所有者。
- “停滞机器人”传感器: 如果机器人停止发现新钥匙,或者停止扩大其测试钥匙的收藏量,系统会发出警告,提示机器人可能卡住了。
核心结论
主要的启示是:模糊测试是一个强大且持久的安全工具,但它依赖于“适配器”(Harness)与软件保持同步。
大多数情况下,适配器表现良好。但当它们 确实 失效时,通常是因为软件发生了适配器未预料到的变化,或者是由于某种技术故障,导致机器人看起来在工作,实则并未工作。
论文的结论是,开发者不应仅仅构建好适配器就置之不理。他们需要时刻关注研究人员安装的 警示灯。如果灯闪烁了,那就是时候修复适配器,以便让机器人检查员能在坏人到来之前,先找到那些隐藏的裂缝。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。