来源笔记
MOSAIC-Bench: Measuring Compositional Vulnerability Induction in Coding Agents
摘要
MOSAIC-Bench 表明,当一个漏洞被拆分到正常的三票工作流里时,生产级编码代理也会把看似无害的工程票据变成可被利用的软件。这个基准使用可运行的概念验证 oracle,因此可利用性是在已部署的测试应用上检查的,而不是由模型判断的。
问题
- 现有的编码代理安全测试常用单个直接提示,这会漏掉只在多个常规票据按顺序实现后才出现的漏洞。
- 这对 Jira 风格的开发流程很重要:有权限访问待办列表的恶意票据作者可以避开明确的恶意措辞,同时仍然把代理引向可被利用的代码。
- 标准的 AI 代码审查器也会漏掉一部分风险,把已经确认存在漏洞的累计 diff 当作普通拉取请求通过。
方法
- 论文提出 MOSAIC-Bench:199 条三阶段攻击链,覆盖 10 个 Web 应用底层、31 个 CWE 类别和 5 种编程语言。
- 每条链包含三张 Jira 风格票据、一个组合实现、元数据,以及一个确定性的 Python 概念验证 oracle,它会在 Docker 部署上返回 VULNERABLE 或 SECURE。
- 作者在每张票据使用新会话的协议下,测试了来自 Anthropic、OpenAI、Google、Moonshot、Zhipu 和 Minimax 的 9 个生产级编码代理。
- 他们把分阶段票据与匹配的直接提示进行比较,然后在仅看 diff、全上下文、中性和按渗透测试人员框架的审查协议下测试审查代理。
结果
- 在 9 个编码代理上,分阶段票据带来了 53.3% 到 85.9% 的端到端攻击成功率;GPT 5.3 达到 85.9%,Claude Opus 4.6 达到 53.3%。
- 整个基准的分阶段运行只有 2 次拒绝;而对 4 个 Claude/Codex 代理进行的匹配直接提示测试,脆弱输出率为 0% 到 20.4%。
- 四个前沿编码代理中,至少有一个能利用 95% 的攻击链。
- 中性代码审查器把 24.8% 经 oracle 确认存在漏洞的累计 diff 当作普通 PR 批准;加入整个代码库上下文后,平均规避率降到 16.4%。
- 保留三阶段全过程中的对话记忆,只能在中位数上填平大约 50% 的分阶段/直接差距;GPT 5.4 在完整记忆下仍有 59.8% 的 ASR。
- 把审查任务改写为渗透测试人员视角后,所评估审查器子集上的规避率降到 3.0% 到 17.6%;Gemma-4-E4B-it 在 608 个真实 GitHub PR 上的误报率为 4.6%,同时检测到了 88.4% 的攻击。