Evaluating LLMs for Real-World Web Vulnerability Detection
本文对六个前沿及开源权重的大型语言模型在检测 WordPress 插件中真实世界网络漏洞的能力进行了基准测试,结果显示,虽然所有模型都能识别有效问题,但检测率因模型和提示词设计而异,且没有任何模型能在多次迭代中实现一致的报告或完美的准确率。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你拥有一个巨大的数字“说明书”(代码)图书馆,用于构建网站。但其中一些说明书隐藏着陷阱——比如一块松动的地板,通向一个满是窃贼(黑客)的地窖。这些陷阱被称为漏洞(vulnerabilities)。
长期以来,寻找这些陷阱需要一支专家级的保安团队,去逐页阅读每一本说明书。但最近,一种新型的“超级阅读者”出现了:大语言模型(LLMs)。这些是能够像人类一样理解代码的 AI 系统。
这篇论文本质上是一份成绩单,测试了六种不同的“超级阅读者”在寻找 WordPress 网站插件(为网站提供额外功能的扩展程序)中隐藏陷阱方面的表现。
以下是他们的实验过程和发现,使用了简单的类比:
1. 设置:“陷阱猎寻”
研究人员选择了四个知名的 WordPress 插件,这些插件已知存在特定的、现实世界的陷阱(例如 SQL 注入,这就像是黑客通过欺骗数据库来窃取秘密;或者跨站脚本攻击,这就像是黑客在公共公告栏上粘贴了一张假便条)。
他们要求六个不同的 AI 模型充当安全审计员。他们不仅仅是问了一次;他们运行了三次测试,以观察 AI 是否具有一致性,就像让一个学生连续三天参加同样的考试一样。
他们还尝试了不同的提问方式(称为“提示词/Prompts”):
- “偷懒型”提示词: 只说,“找出 Bug。”
- “通用型”提示词: 说,“你是一名安全专家。找出所有主要的 Bug 类型。”
- “特定型”提示词: 说,“你是一名安全专家。专门寻找这种确切类型的 Bug。”
2. 结果:谁通过了测试?
结果既有令人印象深刻的成功,也有令人沮定的不稳定性。
- 明星学生: 其中一个模型,Claude Opus 4.6,表现最为出色。它找到了大约 63% 的已知陷阱。它是最可靠的“侦探”。
- 开源界的惊喜: 一个名为 MiniMax M2.5 的模型(它可以在你自己的电脑上运行,不像其他模型需要付费订阅),其表现与顶尖的付费模型不相上下,找到了大约 48% 的陷阱。这就像是一顿家常菜的味道竟然和五星级餐厅的菜肴一样好。
- 挣扎者: Qwen 模型(另一种开源选择)仅找到了大约 35% 的陷阱。它们漏掉的情况超过了一半。
核心结论: 即便是最好的 AI 也会错过近 40% 的陷阱。没有任何一个 AI 能在每个插件中都找到所有陷阱。
3. “神奇的问题”(提示词设计)
研究人员发现,你如何提问比你使用哪个 AI 更重要。
- 具体化更好: 如果你告诉 AI,“专门寻找 SQL 注入”,它找到的 Bug 比你说“寻找任何问题”要多。这就像告诉金属探测器使用者,“寻找金币”,而不是“寻找任何金属”。
- 复杂性并无帮助: 给 AI 一份冗长、复杂的逐步操作手册并不会让它变得更聪明。简单、直接的指令效果同样出色。
4. “抛硬币”问题(一致性)
这是最令人惊讶的发现。AI 是不可靠的。
如果你针对同一段代码向同一个 AI 提问三次,它每次给出的答案都不一样。
- 有时它会说:“我发现了一个陷阱!”
- 下一次它会说:“一切看起来都很安全。”
- 再下一次它可能会说:“我发现了一个陷阱,但它是另一种不同的陷阱。”
只有一个模型(Gemini)能保持 95% 的一致性,但它也是发现陷阱最少的模型。表现最好的模型往往是不稳定的,表现得像是在抛硬币。这意味着你不能仅仅依赖一次扫描;你必须进行多次扫描才能确保万无一失。
5. “幽灵陷阱”(它们全部错过的那个)
有一个特定的插件包含一个被称为“存储型跨站脚本攻击”的棘手陷阱。六个 AI 中的任何一个都没有发现它,即使进行了 90 次尝试。
为什么?这个陷阱隐藏在一个非常特定的设置之后,而该设置默认并未开启。AI 假设:“既然这个设置没开启,那么这段代码就不重要了,”于是跳过了它。这是一个 AI 做出逻辑假设但最终出错的案例。
6. 这与旧工具相比如何?
研究人员还将代码通过了一个传统的安全扫描器(Semgrep),这就像是一个只对特定形状发出鸣响声的金属探测器。
- 结果: 传统扫描器发现的已知陷阱数量为 零。
- 教训: 与旧式工具相比,AI 在寻找这些特定的现实世界陷阱方面表现得更好,但它们仍然会漏掉一些。
最终裁定
论文得出结论,AI 是一个强大的助手,但不是人类安全专家的替代品。
- 它有效: AI 可以发现网站代码中真实的、危险的 Bug。
- 它并不完美: 它会错过大约一半的 Bug,并且经常改变主意。
- 如何使用它: 通过使用顶级模型(如 Claude)、提出具体问题(“寻找 SQL Bug”)并多次运行测试,你可以获得最好的结果。
- 警告: 你不能仅仅信任 AI 的报告。人类必须仍然进行复核,因为 AI 有时会“幻觉”(编造不存在的 Bug)或漏掉复杂的陷阱。
简而言之,AI 是一个很棒的手电筒,可以帮你寻找网站盔甲上的漏洞,但你仍然需要一个人类来拿着手电筒,检查阴影,并确保墙壁确实是稳固的。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。