Learning to Triage Vulnerability Reports from Program Analysis: An Empirical Study in Node.js
本文提出了一项实证研究,证明了机器学习模型,特别是针对程序分析数据进行训练的大型语言模型和图神经网络,能够有效地对 Node.js 漏洞报告进行优先级排序,从而在保持高可利用真实漏洞召回率的同时,显著减轻人工审查负担。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你是一名侦探,正试图在一座巨大且混乱的城市中寻找几名特定的危险罪犯。在计算机软件的世界里,这座城市就是互联网,而罪犯则是“漏洞”——那些能让黑客控制程序的隐藏缺陷。为了找到它们,我们使用被称为“程序分析”扫描器的自动化工具。你可以把这些扫描器想象成一群在高空飞行的先进无人机,它们在城市上空盘旋,拍摄每一条街角的照片。问题在于,这些无人机过于彻底了,它们拍了数百万张照片,而其中大部分只是普通人在买咖啡的照片。这些无辜的照片被称为“误报”。
安全分析师就是那些侦探,他们必须查看这些照片,以决定哪些照片真的拍到了罪犯。然而,查看数百万张照片是不可能的,这既耗时又费钱。如果无人机发送了太多的误报,侦探们就会感到沮丧,进而彻底放弃使用这些无人机。这篇论文提出了一个简单但至关重要的问题:我们能否教一个聪明的计算机(利用机器学习)先看一遍无人机的照片,对它们进行分类,然后只把那些最有可能是真实犯罪的照片展示给侦探?我们的目标不是取代侦探,而是为他们提供一份“优先级清单”,这样他们就不会把时间浪费在那些买咖啡的照片上了。
侦探的新助手
在这项研究中,研究人员专注于一种特定的软件类型——Node.js,它就像是驱动许多网站和应用程序的流行引擎。他们关注了一种特定类型的犯罪:任意代码执行 (ACE) 和 任意命令注入 (ACI)。用通俗的话说,这些是黑客诱骗程序运行其恶意命令的方法,比如命令计算机删除自己的文件或窃取密码。
研究人员从一个名为 NodeMedic-FINE 的工具开始。想象一下,这个工具不仅仅是一个只会拍照的超级智能无人机,它还会尝试在安全的虚拟沙盒中模拟犯罪过程。如果无人机能在沙盒中成功“黑入”软件,它就能确认该漏洞是真实的。然而,这个无人机并不完美。它经常在尝试模拟复杂的犯罪时卡住并放弃,从而留下堆积如山的“疑似”报告。它有时也会被那些看起来可疑但实际上并无大碍的无辜代码所迷惑。
为了解决这个问题,团队构建了一个庞大的数据集 Triage-JS,其中包含 1,883 个 Node.js 软件包。对于每一个软件包,他们都请了一位人类专家(资深侦探)来查看无人机的“疑似”报告,并做出判断:“这是真实的犯罪,还是仅仅是一个误报?”这从而创建了一个金标准训练集。
教导 AI 进行分诊
研究人员随后训练了几种不同类型的“AI 侦探”来学习这些人类的决策。他们测试了三种主要方法:
- 图谱专家(GNN 与经典机器学习): 这些模型观察“溯源图”(provenance graph),这就像是一张显示数据如何在代码中流动的流程图。它们将代码视为一张地图,寻找通常会导致犯罪的特定移动模式。
- 语言专家(LLM): 这些是与能写故事或与你聊天的 AI 同类型的模型。它们被喂入实际的代码片段,并被要求像人类一样阅读代码,寻找黑客可能利用系统的“故事线”。
- 混合团队: 结合了“地图阅读专家”和“故事阅读专家”的一种组合。
结果:谁赢得了比赛?
结果非常明确,且效果惊人。
- 传统方式: 单独使用无人机(NodeMedic-FINE)时,其准确率得分(称为 F1 分数)为 0.676。表现尚可,但它会漏掉很多真实的犯罪,并标记过多的无辜对象。
- 图谱专家: 仅观察流程图的模型表现得好得多,达到了 0.904 的分数。它们非常擅长识别犯罪的结构化模式。
- 语言专家: 像读故事一样阅读代码的 AI 表现最佳。顶尖模型——经过微调的 DS-Distill-Qwen-7B——达到了 0.915 的分数。
论文指出,虽然“语言专家”最为准确,但“图谱专家”(特别是名为 XGBoost 的模型)几乎同样出色,且运行速度更快、成本更低。
为什么这很重要:“90% 原则”
最令人兴奋的发现不仅在于高分,还在于它节省了多少工作量。研究人员问道:“如果我们想要抓捕 90% 的真实犯罪,我们需要丢弃多少张无辜的照片?”
当 AI 被调整到能够捕捉 90% 的真实威胁时,它能够从人类分析师需要检查的列表中消除 75% 的误报。在现实世界中,这意味着安全团队可以停止盯着堆积如山的“疑似”报告,转而专注于一小部分高质量的“疑似”威胁。
研究还发现,这些 AI 模型非常擅长识别导致无人机产生困惑的具体原因。例如,它们学到了如果代码使用了特定的 spawn 命令(这通常是安全的),那么它很可能是一个误报;而 exec(这是危险的)则是一个红旗信号。它们还学会了识别黑客的输入是否被安全检查拦截,即使无人机漏掉了这一点。
核心结论
这篇论文并不声称已经永久解决了寻找所有软件漏洞的问题。相反,它表明机器学习是过滤噪音的一个强大工具。通过教 AI 担任安全报告的“分诊护士”,我们可以过滤掉无害的误报,让人类专家专注于那些危险的威胁。
这项研究表明,虽然最先进的 AI 模型(LLM)最为准确,但更简单、更快速的模型(如 XGBoost)也非常有效,并且可能更适合计算能力有限的团队。最终,这篇论文证明了将来自自动化扫描器的原始数据与智能的学习型排序相结合,可以使软件安全变得更加易于管理,将混乱的报告大山转化为清晰、可操作的前行路径。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。