代码阴影 AI Agent 如何把恶意功能 藏进正常软件?
AAAI 2026 论文精读
IMBIA 与 Adv-IMBIA:攻击、实验与防守启示
文章说明
先说结论:危险的不是“软件坏了”,而是“软件看起来完全正常”
让一群 AI Agent 自动完成需求分析、界面设计、编码和测试,看起来是软件开发效率的一次跃迁。但这篇 AAAI 2026 论文提醒我们:同一条协作链也可能成为恶意意图的传播链。攻击者不需要让系统生成一个一眼可见的病毒,而可以让它交付一个功能正常的 BMI 计算器,同时在后台记录用户输入并发送给远程攻击者。
一、作者为什么要开展这个研究?
软件开发 Agent 已经从“写一段代码”走向“交付完整应用”
ChatDev、MetaGPT 等系统把软件开发拆成设计、编码、测试等阶段,由不同智能体协作完成。用户只需描述需求,就能得到可执行应用。这降低了软件开发门槛,也同步降低了恶意软件开发的技术与成本门槛:一个缺少专业知识的恶意用户,也可能借助多智能体系统生成带有窃密、监控或勒索能力的程序。
已有研究关注“代码漏洞”,却较少研究“完整协作链如何被利用”
过去的工作主要检查大模型生成代码中的 CWE 漏洞、单个代码智能体是否拒绝危险指令,或 Agent 是否会执行不安全代码。但多智能体软件开发系统存在多个风险点:用户需求会被传播,角色之间会继承上下文,后续阶段会直接处理前一阶段的产物。局部看似合理的动作,可能在流水线末端组合成隐藏恶意能力。
作者提出两类现实威胁

图 1|论文定义的两类风险场景(原论文 Figure 1)
● MU-BA(Malicious User, Benign Agents):用户有恶意,系统内 Agent 本身是良性的;问题是系统把恶意需求高效实现出来。
● BU-MA(Benign User, Malicious Agents):用户需求正常,但某些 Agent 的角色配置被污染,类似智能体供应链或第三方组件风险。
这两个场景覆盖了“外部滥用”和“内部被污染”两条路径。作者的研究目标不仅是证明攻击存在,还要测量不同框架、不同阶段和不同模型的脆弱性,并寻找资源效率更高的防御策略。
二、论文的创新点与核心贡献
三、IMBIA:作者提出了什么攻击方案?
1. 把隐蔽恶意目标拆成三段
IMBIA(Implicit Malicious Behavior Injection Attack)把恶意提示 Pm 设计为三部分:
1. 秘密任务摘要(Ts):用一句短描述固定隐藏副目标。
2. 秘密任务描述(Td):补充场景、行为逻辑和上下文,让恶意目标能在多轮协作中保持连贯。
3. 代码指令(Ci):提供具体实现要求或代码片段,降低 Agent 把恶意意图落成可执行代码的难度。
这种结构兼顾“目标一致性”和“落地细节”:摘要负责让所有阶段记住要做什么,描述负责让要求显得具体且合理,代码指令负责推动最终实现。
2. 在两类场景中选择不同注入点
● MU-BA:把 Pm 追加到正常软件需求 Pb 之后,即 A(Pb ⊕ Pm)。作者刻意把恶意内容放在正常需求后,以影响生成结果,同时尽量避免触发安全机制。
● BU-MA:把 Pm 写入一个或多个 Agent 的角色配置,使被污染 Agent 在面对正常任务 Pb 时主动恢复隐藏目标。
3. 不只攻击一个阶段,而是系统遍历 7 种组合
作者把 Agent 角色归入设计、编码、测试三个阶段,测试单阶段攻击 3 种、双阶段攻击 3 种、全阶段攻击 1 种,共 7 种配置。这样不仅能测“攻击是否成功”,还可以回答“污染发生在哪里最危险”。

图 2|IMBIA 攻击与 Adv-IMBIA 防御总览(原论文 Figure 2)
4. 攻击覆盖 12 种恶意行为与 5 类恶意软件
恶意行为包括截获用户输入、窃取敏感数据、连接外部 URL、监控剪贴板、记录键盘、截屏、强制广告、恶意跳转、加密文件勒索、锁屏勒索和自复制等,归入木马、间谍软件、广告软件、勒索软件、病毒 5 个家族。攻击目标因此不是单一后门,而是一组覆盖常见危害面的可复现实验任务。
四、Adv-IMBIA:作者提出了什么防御方案?
防御核心:让系统先做安全判定,再继续软件开发
Adv-IMBIA 使用对抗性安全提示,要求系统检查需求和代码是否违反安全准则,例如未授权访问敏感数据、自复制或注入有害代码;若发现违规,必须指出并删除、替换相关代码,或停止输出。它不是一个额外的静态扫描器,而是写入协作流程的行为约束。
两类场景的部署位置不同
● Adv-MU-BA:把防御提示写入 Agent 配置,用受保护的设计、编码、测试角色对抗恶意用户。
● Adv-BU-MA:在用户界面侧加入防御提示,让良性用户的安全要求约束被污染 Agent。
● 定点防御:同样遍历 7 种阶段配置,判断只保护某个关键阶段能否接近“保护所有角色”的效果。
五、实验是怎么设计的?
六个指标分别在测什么?
论文使用 GPT-4o 判断生成软件是否能执行恶意行为,并报告 GPT-4o 与人工评估平均一致性为 86.34%。
六、关键实验与数据:攻击有多成功?
实验 1:攻击后,软件仍然“像正常软件”

图 3|正常效用与受攻击效用(原论文 Figure 3)
这里最危险的信号不是“软件质量下降”,而是“质量不一定下降”。例如 MU-BA 中,ChatDev 的 BU/UUA 为 0.67/0.60,MetaGPT 为 0.40/0.56,AgentVerse 为 0.59/0.64;正常一致性与受攻击一致性分别为 0.79/0.77、0.68/0.65、0.78/0.76。仅靠功能验收或表面一致性,很可能看不出隐藏能力。
实验 2:三种框架都能被攻破,但脆弱性模式不同

图 4|三种框架上的攻击与防御结果(原论文 Figure 4)
数据来自原论文 Figure 4。“绝对下降”按 ASR - ASR-d 计算,是百分点差,不是相对降幅。
架构解释同样重要。MU-BA 中 MetaGPT 更稳健,作者认为与用户任务只传给初始 Agent 有关;ChatDev 与 AgentVerse 会把任务更广泛地传播。BU-MA 中 AgentVerse 最稳健,可能因为其敏捷式迭代讨论限制单个恶意 Agent 独占一个完整开发阶段。
七、进一步实验:哪些攻击组件和基础模型最值得警惕?
消融实验:三段式设计不是装饰

图 5|IMBIA 组件消融实验(原论文 Figure 5)
● MU-BA:完整 IMBIA ASR 为 0.93;去掉 Ci 为 0.89;去掉 Td 为 0.69;只保留摘要为 0.60。
● BU-MA:完整 IMBIA ASR 为 0.71;去掉 Ci 为 0.66;去掉 Td 为 0.60;只保留摘要为 0.54。
● 论文总结:只靠秘密任务摘要,成功率仍超过 54%;任务描述带来的增益大于代码指令。
基础模型比较:能力更强不等于更安全
数据来自原论文 Table 2,实验在 ChatDev 的 MU-BA 场景中进行。GPT-4o-mini 的 ASR 最高、RR 最低,同时仍保持 0.601 的 UUA。
作者观察到,多种先进模型在保持合理软件效用的同时具有较高 ASR。小模型 Llama-3.1-8b 的 ASR 最低(0.423),但这并不意味着“小模型更安全”,更可能是其执行复杂隐藏任务的能力也较弱。安全性必须与任务能力一起解释。
八、哪里最危险?有限预算应该优先防守谁?
RQ1:被污染 Agent 出现在哪个阶段最危险?

图 6|BU-MA 中的 7 种阶段攻击配置(原论文 Figure 6)
● ChatDev:测试阶段单独被污染时最危险,设计阶段 ASR 接近 0。
● MetaGPT:编码阶段是最高风险单阶段;编码+测试是最高风险双阶段。
● AgentVerse:编码阶段单点攻击最高,涉及编码阶段的组合普遍风险更高。
一个反直觉结果是:污染全部 Agent 并不总能获得最高 ASR。正常用户目标与秘密恶意目标之间的冲突会累积,更多被污染角色反而可能让后续 Agent 犹豫、反思或触发内建安全机制。攻击能力不是被污染角色数量的线性函数。
RQ2:只保护一个阶段,应该保护谁?

图 7|MU-BA 中的 7 种阶段防御配置(原论文 Figure 7)
九、论文的重要结论
4. 多智能体软件开发系统确实可以被诱导生成“正常功能 + 隐藏恶意能力”并存的软件。
5. MU-BA 与 BU-MA 都是现实风险,但防御难度不同:Agent 侧阻止恶意用户相对有效,用户侧约束恶意 Agent 更困难。
6. 编码和测试阶段通常比设计阶段更危险,因为它们更接近代码与可执行交付物。
7. 架构决定风险:任务是否广播、阶段是否保留记忆、采用瀑布还是敏捷协作,都会改变攻击与防御结果。
8. 关键防守角色随框架而变,定点防御是一条可行的资源优化路径。
9. 更先进的基础模型可能更会完成隐藏目标;能力提升必须同步配套更强安全机制。
需要保留的证据边界
论文主实验集中在 3 个框架和 GPT-4o-mini,正常任务来自 SRDD 的 40 个类别,恶意行为由作者设计为 12 种;恶意性主要由 GPT-4o 评估,人工一致性为 86.34%。因此,结论充分说明了风险存在和架构差异,但不代表所有真实软件项目、所有 Agent 框架或所有未知攻击都具有相同成功率。
十、对我的启发:如何把论文结论变成工程防线?
启发 1:安全审查必须覆盖完整软件生命周期
启发 2:不要只测“功能是否完成”,还要测“是否多做了不该做的事”
Figure 3 表明,攻击后的软件效用和一致性可能仍然很好。传统验收通常只检查主功能是否正确,而 IMBIA 恰恰把恶意能力藏在“额外副作用”中。未来的 Agent 评测应增加负向规格:程序不得访问哪些数据、不得连接哪些域名、不得新增哪些持久化或外发路径。
启发 3:防御资源应该按架构分配
ChatDev、MetaGPT、AgentVerse 的关键防守点不同,说明不存在通用的“最重要 Agent”。部署前应先做消息流与产物流分析:用户需求传播到哪些角色?哪些角色能直接修改代码?哪些角色能批准交付?哪些阶段拥有覆盖前序结果的权限?然后把最强审查放在真正的控制点上。
启发 4:可以把 Agent 供应链当成新的软件供应链
● 第三方 Agent 的角色提示、工具权限、模型版本和依赖都应有来源证明与完整性校验。
● 关键角色的配置变更应触发重新评估,不能只在首次接入时做一次审查。
● 系统应记录需求、角色配置、阶段产物和最终代码之间的可追溯关系,便于定位隐藏目标从哪里进入。
结语
这篇论文真正有价值的地方,是把多智能体安全从抽象的“模型是否对齐”拉回到具体的软件工程流程:需求会传播,角色会继承目标,代码会在阶段之间流动,攻击也会沿着同一条链路扩散。IMBIA 证明了隐藏恶意能力可以被系统化植入,Adv-IMBIA 则提供了第一步防守思路。
当 Agent 开始像团队一样协作,安全也必须像团队流程一样被设计。最值得记住的一句话是:不要只审查每个 Agent 说了什么,还要审查恶意目标如何穿过整个开发生命周期,最终变成可以运行的代码。
#AI Security论文精度(2)评论