SmartOracle -- An Agentic Approach to Mitigate Noise in Differential Oracles
SmartOracle 引入了一种利用专门的大型语言模型子智能体来自动化并增强 JavaScript 模糊测试中差异化预言机(differential oracles)准确性的智能体框架,在显著降低人工成本、费用和误报率的同时,成功识别了主流引擎中此前未知的规范级缺陷。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
问题的核心:计算机错误中的“大海捞针”
想象一下,你正在测试三个不同品牌的咖啡机(我们称之为品牌 A、品牌 B 和品牌 C),以观察它们的冲煮方式是否一致。你向这三台机器倒入完全相同的热水和咖啡豆。
- 目标: 你想找出一个“漏洞(bug)”,即某台机器冲出的咖啡味道与其他两台不同。
- 现实情况: 大多数情况下,这些机器的味道确实会有细微差别。也许品牌 A 的咖啡稍微热一点,或者品牌 B 的杯量稍微大一点。这些是良性差异(benign differences)(即噪声)。它们并没有坏,只是工作方式不同。
- 噩梦: 如果你运行这项测试 10,000 次,你会得到 10,000 个“差异”。人类专家必须查看每一个差异,以决定:“这是一台坏掉的机器(漏洞),还是仅仅是正常的变动?”
这就是软件领域(特别是像 Chrome、Safari 和 Firefox 这样的 JavaScript 引擎)中**差异化模糊测试(Differential Fuzzing)**所面临的问题。计算机发现了数百万个差异,但其中 99% 都是无害的。人类专家会被这些“噪声”淹没,从而错过真正的漏洞。
解决方案:迎来“SmartOracle”
作者创建了 SmartOracle,它就像是雇佣了一支专业的 AI 侦探团队,而不是要求一名全才去完成所有的工作。
SmartOracle 并没有让一个庞大且缓慢的 AI 去阅读整份报告,而是将工作分解给了一个由 智能体(Agent) 组成的团队,每个智能体都有特定的角色:
- 差异查找者(The Discrepancy Finder): 这个智能体观察两个不同的输出结果,并指出:“好吧,品牌 A 说‘Hello’,而品牌 B 说‘Hi’。这里就是它们产生差异的具体位置。”
- 规范检查者(The Specification Checker): 这个智能体是“规则手册专家”。它会查阅官方手册(JavaScript 规范),并询问:“规则手册是否规定它们必须说同样的话?”
- 评论家(The Critic): 这个智能体是“反方辩友”。它观察另外两个智能体的成果,并指出:“等等,规则手册实际上允许品牌 B 在这种特定情况下说‘Hi’。这不是漏洞,这是一个误报。”
- 编排者(The Orchestrator): 这是团队领导,负责汇总所有线索,并做出最终裁决:报告(REPORT)(这是一个真实的漏洞)或 跳过(SKIP)(这只是噪声)。
他们是如何测试它的
研究人员针对两类对象测试了这个 AI 智能体团队:
- 历史漏洞: 他们将已知的历史漏洞输入系统,以观察 AI 是否能找到这些漏洞。
- 新式模糊测试: 他们让系统对当前主流浏览器(如 Chrome、Safari 等)的最新版本进行实时测试,看它能否发现人类尚未发现的新漏洞。
结果:更快、更便宜、更聪明
论文声称 SmartOracle 相比传统方法有了巨大的提升:
- 更高的准确度: 它捕捉到了 84% 的真实漏洞(召回率),同时仅将 18% 的无害差异标记为漏洞(误报率)。
- 速度更快: 它分析问题的速度比试图一次性处理所有问题的单个大型 AI 模型快了 4 倍。
- 成本更低: 运行成本降低了 10 倍。
- 类比: 想想这就像是雇佣一支由三名初级机械师组成的团队(他们速度快且便宜),每人专门负责汽车的一个部件;相比之下,雇佣一名超级昂贵的资深高级技师试图独自修理所有东西,效率较低。这个团队能更快、更省钱地完成任务。
- 真实的发现: 在实时测试中,SmartOracle 在主流浏览器中发现了 8 个 以前无人知晓的新漏洞。其中一个是 GraalJS 中严重的解析漏洞,开发者在发现后立即进行了修复。
“秘诀”:半监督标注
论文还提到了一种巧妙的技巧,使他们无需人工手动标注每一个错误即可训练和测试系统。
- 类比: 想象你有一大堆混杂在一起的邮件(有些是账单,有些是垃圾邮件,有些是情书)。你没有时间去阅读每一封信。
- 技巧: 你根据信封的颜色对邮件进行分组(退出码/Exit Codes)。你假设所有红信封都是账单。你只需阅读一封红信封来确认它是账单,然后你就自动将其他红信封也标记为“账单”,而无需阅读它们。
- 结果: 这种“半监督”方法使他们能够非常快速且准确地构建大规模测试数据集,证明了你不需要阅读每一封邮件就能知道它的类型。
总结
SmartOracle 是一种全新的软件测试方式。它不再让专家淹没在“疑似漏洞”的海洋中,而是利用一支由专业 AI 智能体组成的团队来阅读规则、检查证据并过滤噪声。它比以往的方法更快、更便宜,而且更擅长发现真正的漏洞。它已经成功地在驱动互联网运行的软件中找到了新的问题。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。