智能体安全新课题:风险如何跨会话潜伏与放大?
大模型正从聊天助手进化为能自主调用工具、读写文件的通用智能体。这意味着安全风险不再局限于“说了什么”,而是延伸至“做了什么”以及“留下了什么”。北大与腾讯联合发布的综述指出,攻击者可通过污染技能、记忆或环境,让风险跨会话潜伏并放大。传统组件式防御已失效,必须建立涵盖来源、编排、执行及持久反馈的全生命周期安全框架,并在运
当智能体从"会说话"变成"会动手",安全边界该划在哪儿?
以往聊大语言模型(LLM)的安全,大家盯的多是文本这一层:它会不会说脏话、会不会把隐私抖出去、几句精心设计的提示词能不能把它"越狱"。这些担心当然有必要。可技术往前走了,模型不再只是陪人聊天,它已经能自主行动,成了智能体(Agent)。

如今的智能体不光会想,还真能上手干:自己挑技能插件、调外部工具、读写本地文件、访问数据库,连网页和终端都能操作。更关键的是它记性长,一次任务里攒下的经验能存住,往后做决定时还会受影响。

能力这么一跳,安全问题的性质就变了。风险不再只是"输出合不合规",而是一连串更绕的疑问:

- 它到底加载了哪些能力,这些能力靠不靠谱?
- 技能、记忆和工具被它怎么搭配,这种搭配会不会冒出意料之外的后果?
- 它最后做了什么动作,这些动作又把系统状态改成了什么样?
- 改动留下的那些"痕迹",会不会在将来某刻再把风险勾出来?

一次得手的攻击未必当场炸开。攻击者可以先塞进一段看着挺正常的技能描述,等任务编排时悄悄带偏智能体的选择,到了工具执行环节再触发危险操作,最后把污染内容写进长期记忆。风险就这样"跨会话存活",甚至在后头的工作流里越滚越大。

举个例子:一个披着"酒店比价助手"外衣的恶意技能,头一回用可能老老实实比价,背地里却把你的行程信息摸走,还往记忆里塞了个伪造的预订接口。等下回你再让它订房,它可能直奔那个恶意接口,支付信息就这么漏了。哪怕你早忘了第一次交互,风险还蹲在系统里。

北京大学知识计算实验室(KCL)和腾讯微信安全技术团队在最新综述论文《Pandora's Toolbox: A Survey of Generalist Agent Security from the Lifecycle Perspective》里,盯的正是这件事。他们认为,通用智能体的安全说到底是个生命周期问题,不是若干孤立组件风险简单相加。

传统"组件式"安全视角,为什么不管用了?

现有安全研究爱把系统拆成模型、记忆、工具、环境这些独立组件,挨个做风险评估。这么干能帮着定位局部漏洞,比如模型有没有偏见、工具接口有没有权限缺口。可有个更致命的问题它答不上来:风险在各个阶段之间是怎么传开的?

拿"第三方技能投毒"来说,只盯单个组件,看到的画面是割裂的:

- 技能库里,攻击者在技能元数据或说明文件里埋下隐蔽的恶意指令。这时候技能还只是静态文件,没执行任何危险操作,常规扫描未必查得出异常。
- 到了编排阶段,用户发一个正常请求,智能体检索并加载了这个技能。潜伏的指令跟着进了决策上下文,和别的良性信息混在一块。
- 执行阶段,智能体照着被污染的上下文去调终端或API,潜在风险就变成了真实的破坏动作。
- 反馈阶段,执行结果被写进长期记忆,或者改动了可复用的技能,同一攻击往后不用再注入,自己就能触发。

只查技能文件、某一次模型输出或最终的工具调用日志,看到的都只是这条攻击链的一截。把视线拉长,盖住从能力引入到状态持久化的全过程,风险的全貌才看得清。

这篇综述由此给出一个统一分析框架,把来源(Provenance)、编排(Orchestration)、执行(Execution)与持久反馈(Persistent Feedback)四个环节串在一起看。

风险是怎么一路穿过智能体生命周期的?

来源阶段:信任打哪儿来?

来源阶段里,智能体要先读技能元数据、能力描述、使用条件和接口信息,据此搭出一个后续可挑可用的能力空间,这一阶段的关键词就是“准入控制”。技能可能把来源造假,扮成可信组件;也可能把风险藏进自然语言说明、脚本、依赖包、配置文件或外部资源当中。危险能力一旦过了准入这道关,就可能长期蛰伏,等合适的任务来触发。这跟传统软件供应链里的依赖投毒很像,只不过智能体场景下技能多以自然语言描述为主,查起来更难。
编排阶段:潜伏的风险是怎么被点着的?
到了编排阶段,智能体要理解用户请求、检索长期记忆、挑选技能、构造计划并准备工具调用,用户、记忆、技能几路信息就在同一个上下文里碰头。单拎出来看,某个技能也许是良性的,某段记忆也许无害;可一旦它们被拼到一起,就可能凑出越权链路。比如一次平常的记忆检索,会把几周前写进去的污染内容重新激活;几个良性技能组合起来,也可能意外拿到超出预期的权限。风险到这一步就不只是“被看见”了,它开始实打实地改变智能体的决策逻辑和控制流。
执行阶段:风险怎样变成现实的后果?
执行阶段智能体要靠工具跟外部环境打交道:访问网页、调用API、运行代码、操作文件、查询数据库,乃至控制计算机和移动设备。有个风险点常被忽略:环境返回的信息并不是天然可信的。网页里的隐藏文本、弹窗、终端输出、搜索结果,甚至MCP(Model Context Protocol)工具的响应,都可能夹带提示注入内容。智能体一旦把这些观察结果当成高优先级指令,风险就从内部决策变成了真实的外部动作。攻击者不用直接碰模型,只要控制住智能体将要读取的环境内容,就有可能劫持它的行为。
持久反馈:执行完了,风险还没完
传统安全评测常把任务结束当作终点,可对通用智能体来说,执行结果可能被写进长期记忆、沉淀成新技能,或者留在项目工件里。这些状态未来还会重新进入来源或编排阶段,形成“反向污染”。说白了,一次安全失败未必只困在当前会话里,它可能成为智能体下一轮行为演化的起点。智能体越具备自我演化能力,这种持久性风险就越该警惕。
四类主要攻击面
顺着生命周期这条主轴,综述又归纳出四类彼此耦合的主要攻击面。
1. 技能供应链:能力本身就是载体
技能让通用智能体迅速获得新本事,可也把软件供应链风险带了进来。风险不只在这类声明式文件里,辅助脚本、依赖库、配置、检索数据库和本地缓存里同样可能藏着东西。SKILL.md
更隐蔽的是“组合攻击”:单个技能本身并不恶意,几个技能一组合,却形成了未授权访问、隐私泄露或破坏性执行路径。有些攻击还会在当前会话里改写技能,等到未来会话或特定触发条件才启动后门。比如研究就从生命周期角度展示了技能攻击如何跨阶段构造,并持续影响智能体。SkillHarm
2. 用户侧攻击:从人工越狱走向自动化红队
用户能靠有害请求、角色扮演、编码混淆、多轮诱导以及优化生成的越狱提示,驱使智能体去执行危险任务。
跟传统LLM越狱不一样,面向智能体的攻击已经不满足于让模型吐出违规文本,而是想诱导它走完一条包含多次工具调用的真实攻击链。近几年,攻击方法也从人工模板、启发式搜索,慢慢发展成能规划、能反思、能持续优化攻击策略的“智能体化红队”。也就是说,攻击者也在拿AI找AI的软肋。
3. 长期记忆:投毒一次,长期起作用
智能体的长期记忆一般会被自动检索出来,当作可信上下文参与后面的决策。连续性因此变强,可一旦被投毒,影响也会一直留着。攻击者的路子有两条:直接污染知识库、RAG语料和记忆索引;或者借普通对话、网页内容、环境观察,让智能体自己把错误信息写进去。更难防的是“后门型记忆”,平时不吭声,只在特定主题、特定查询或特定上下文模式出现时才触发,发现起来极难。
4. 外部环境:数据就是指令
会浏览网页、操作电脑、调用工具的智能体,环境观察对它来说既是数据,也可能被当成指令。恶意网页、隐藏文本、GUI弹窗、文件内容、终端输出、API返回和MCP响应,都有可能劫持后续推理。这类“间接提示注入”攻击,让智能体一碰到不可信环境就格外脆弱。
安全评测:从“看答案”转向“看过程”
风险从文本蔓延到行为,安全评测要盯的对象也得跟着变。早先的安全基准,主要看模型有没有生成有害回答;到了智能体这里,评测还要往下看:
- 它调用了哪个工具?
- 参数是怎么构造的?
- 中间哪一步开始偏离用户目标?
- 有没有受到环境注入的影响?
- 最终是否真的改了文件、泄露了信息,或者改变了系统状态?
综述把相关评测归成三条主线:
- 领域专用智能体安全评测:覆盖工具调用、Web浏览、计算机和移动设备操作等具体环境。
- 通用智能体安全评测:重点看技能介导的行为安全,以及恶意技能检测。
- 离线轨迹审计:靠完整交互历史或候选动作,找出风险步骤并解释因果链。例如,
AgentAuditor面向完整轨迹做安全审计,而则把注意力进一步放到动作执行前的步骤级工具调用风险上。ToolSafe
评测的重心正在挪:从“任务最后有没有出事”,转到“风险出现在哪一步、为什么出现、能不能在执行前就发现”。
安全防御:搭一条全生命周期控制链
按生命周期里的干预位置来分,论文把防御方法归纳成三层。
输入与上下文过滤:把住入口
技能风险扫描、提示注入和越狱检测、记忆写入与检索护栏,共同构成这一层。做法是在不可信内容进入智能体决策上下文前,先把恶意指令、异常依赖、伪造来源和被污染的记忆挑出来。这是头一道防线,图的是压掉噪声、挡住明显威胁。
决策与控制完整性:守住大脑
光靠输入过滤还不够。多条本身无害的信息凑到一起,照样可能拼出一个危险决定。有一类办法在模型之外动手:重搭上下文、把不可信数据隔开、约束信息流以及工具依赖;另一类则把信任优先级训练进模型策略里,靠指令层级训练、偏好优化和安全工具使用对齐来实现。说白了,就是给智能体配一个“理性检查器”,免得它在复杂局面下失控。
运行时监控与执行约束:把好最后一道门
等智能体已经产出计划或候选动作,运行时防御就有活干了:执行之前,它可以查整个计划、查某一次工具调用,也可以查累积起来的轨迹,然后决定是拦下、修正、让用户确认,还是再做一轮验证。
换言之,安全机制不再只在回答结束后充当“裁判”,它开始变成贯穿执行过程的“控制器”。举个例子,智能体想去删一个系统关键文件,运行时监控能把这个操作截住,并要求用户再确认一次。
未来挑战:自我演化带来的不确定性
智能体一旦开始攒经验、更新记忆、造工具、改写技能,甚至调整自己的工作流,生命周期安全的问题只会被放得更大。
近期研究已经看到几种情况:自进化可能让恶意影响被永久写进去、并在一次次迭代中传下去;能力往上走的过程中,可能出现偏离预期目标的“错误进化(misevolution)”;即便经验攒下了,智能体也未必能忠实理解、忠实使用这些经验。
所以,固定数据集、静态护栏、一次性的对齐,都很难一直覆盖住不断变化的攻击面。针对这个难题,综述给出了一个面向未来的安全闭环:
- 风险生成:自动搭建可执行、可验证、还能持续演化的对抗环境与安全数据。
- 风险诊断:顺着长程轨迹,把风险来源、关键步骤、工具参数和因果链找出来。
- 安全演化:把新攻击和失败轨迹转成训练反馈,让安全策略能不断更新。
这个闭环里,对抗生成管的是发现未知风险,细粒度归因管的是讲清风险怎么形成,持续安全演化则把诊断结果变成新的防护能力。
换个说法,未来的智能体不光要能自我改进,还得在改进途中不断发现、诊断、修复自己的安全弱点。智能体安全不该只是输出末端的一道门,它更应是一条控制链,从能力来源、决策形成、动作执行一直贯到持续演化。
《Pandora's Toolbox》想推动的,恰恰是从“单点漏洞修补”转向“全生命周期安全治理”。这需要技术研究者出力,也离不开开发者、用户和安全专家一起参与,通用智能体才能在给我们强大能力的同时,保持安全可靠。