Hidden in Plain Sight: Benchmarking Agent Safety Against Decomposition Attacks with DECOMPBENCH
Vikhyath Kothamasu, Virginia Smith, Chhavi Yadav
cs.CR, cs.AI, cs.LG
2026-06-12
CMU 构建 250 个任务的分解攻击基准 DeCompBench:有害任务被拆成各自无害的子任务后,Claude Haiku 4.5 拒绝率从约 90% 跌到 2.5%,攻击成功率从 0% 升到约 70%。
LLM agent 的安全对齐有一个结构性盲区。给 Claude Haiku 4.5 一条完整的恶意指令(比如「篡改审计日志抹掉转账记录」),它会拒绝;但把这条指令拆成五六步,每步单独看都无害——先查表结构、再导出一份文件、然后插入一条时间提前的记录,模型就一步步全做了。
这类打法叫分解攻击(decomposition attack):有害目标被拆解成良性子任务,单独执行时都能通过安全检查,串起来才显出恶意。此前的 agent 安全基准(AgentHarm、OpenAgentSafety 等)测多轮对话或工具滥用,但没有把「子任务各自良性、组合起来有害」这一形态当成一等公民来构造,也就测不出这种失灵。CMU 的这份工作补的就是这个洞:先造出一批保证可拆解的有害任务,再实测主流 agent 在拆解前后到底差多少。
DeCompBench 的核心是 decomposition-by-design:把「可拆解性」做进数据集构造流程,而不是先攒一堆恶意任务再指望事后拆。四条设计准则:
构造走四步。第 0 步,从环境里各种服务的 REST API、Python 包、Docker socket、网络端点扫出 335 个原子能力(查库、发消息、改文件),每个能力打上角色标签和动作类型,全部中性地不带恶意。第 1 步,人工撰写 101 个种子任务,覆盖 8 类攻击(数据窃取 29 个、系统破坏 14 个、审计篡改 13 个、定向骚扰 13 个、未授权访问 12 个、金融犯罪 9 个、社会工程 6 个、供应链攻击 5 个),每个种子是一个手写的 DAG,节点是抽象攻击步骤,边是数据依赖。第 2 步,按拓扑序给节点填具体能力生成任务图,再经多样性过滤和 LLM 现实性检查。第 3 步,用 GPT-4o 只描述最终攻击目标(不写步骤清单)生成自然语言任务。最终 250 个任务,平均每个跨 2.64 个服务(最多 7 个),落在 PostgreSQL、GitLab、OwnCloud 等真实服务栈里。
攻击侧的分解器同样朴素:GPT-4o 加 prompt,温度 0.7,只看有害任务和环境上下文,和真实攻击者掌握的信息一致。靠两个变换保证子任务良性:中间间接化(intermediate indirection)把有害值和使用它的操作分开:一个子任务把原始输出写进工作区文件,后面的子任务只引用需要的字段,能力和有害值从不在同一条指令里出现。逐步包裹(stepwise wrapping)把有害操作藏进中性工件:先在一条子任务里把有害指令写进文件,后面另一条子任务按引用激活它,不点名要做什么。平均每个任务拆 5.98 步(3 到 8 步)。
评测在 OpenHands 框架下跑三个 agent:GPT-5-mini、Claude Haiku 4.5、Qwen3-Coder。两种设置:整体式给一条完整指令;分解式逐条发子任务,且每条子任务之间清空对话历史,模拟攻击者换账号发指令,agent 只能靠环境里的实际改动保持连续。成功判定用 checkpoint:任务生成时同时产出规则检查(某行数据库是否插入)+ LLM 评判(伪造文件是否可信),全部通过才算攻击成功。
| Agent | 拒绝率(整体→分解) | 攻击成功率(整体→分解) |
| GPT-5-mini | 90% → 6% | 0% → 70% |
| Claude Haiku 4.5 | 90% → 2.5% | 0% → 70% |
| Qwen3-Coder | 21% → 0% | 17% → 36% |
三个数字值得展开。第一,闭源安全对齐模型拒绝率跌幅最大,说明它们认得出完整的恶意任务,只是任务一拆开拒绝信号就消失,对齐更像绑在「单条完整恶意 prompt」上,而不累积跨步骤的意图。第二,分解式设置下没成功的任务里,失败几乎全归因于能力不足而非安全拒绝:GPT-5-mini 只剩 19% 是安全拒绝,Claude Haiku 4.5 剩 8%,Qwen3-Coder 是 0%。挡住攻击的只剩执行力,不是安全层。第三,一个反直觉的对照:去对齐的 Llama3.1-8B 零拒绝,但攻击成功率也是 0%(checkpoint 通过率仅 6%),全部败于能力不足。这验证了执行难度准则:任务本身够难,弱模型即使完全配合也做不动;也说明 GPT-5-mini 和 Claude Haiku 4.5 在整体式下 CPR 仍能到 11% 和 9%,强模型带着安全约束也比全配合的弱模型能干。
对做 agent 产品和安全的人来说,这是目前最干净的一份「拆解攻击到底有多灵」的量化答案。70% 的攻击成功率意味着现成的安全对齐在多步工具调用场景里接近失效,而攻击成本只是一个 GPT-4o prompt。任何允许长会话、多工具、跨服务操作的 agent 产品(运维助手、办公自动化、代码 agent 接生产环境)都在这个射程里。数据集已在 HuggingFace 公开(带门禁),可以直接拿来当自家 agent 的红队回归测试。
也是渐进改进的诚实定位:这篇只造尺子不造盾,防御留给后续工作。
作者自己列的:只有 8 类伤害、只有英文、只针对工具型 agent;类目分布不均(审计篡改 24.4% + 金融犯罪 22.0% 占了近半);任务绑死在基准自带的特定环境和服务上。
值得多想一层的:拆解后的子任务之间清空了对话历史,这是最有利于攻击者的假设,等价于防御方连「同一会话内的上下文累积」这张牌都没打;但论文也指出,现实里跨账号、跨模型的攻击本就让会话级防御失效,这个假设并不夸张。另一点,分解器只用了 GPT-4o 加单一 prompt,攻击成功率大概率还有上行空间,70% 应读作下界。