拓扑学视角下的多智能体安全防线:从点防御到路径约束
发布时间:2026/10/19 5:07:21 锦皓数字建站

我最近读了一篇很值得琢磨的论文解读标题是《当提示词学会绕路用拓扑学方法一次击穿多智能体安全防线》。在 AI 安全这个方向上提示词攻击早就不是新鲜事但把拓扑学这个词和多智能体安全防线放在一起还是让我眼前一亮。读完它的核心思路后我觉得它解决了一个我一直头疼的问题为什么单点防御做得越多多智能体系统还是能被花式击穿。这篇文章适合正在搭建多Agent应用、或者负责大模型安全评估的开发者看。它给出的不是一个具体的咒语式防御补丁而是一套先看整体拓扑、再找薄弱路径的分析方法。简单说这篇论文的核心主张是当多个大模型Agent协作时安全边界不应该只看单个Agent的输入输出而应该看整个Agent通信网络的连通性——攻击者只需要找到一条绕过所有局部守卫的路径就能从某个不起眼的入口直达高危操作。1. 这篇论文把安全边界放进了拓扑空间问题从点变成了路径1.1 多智能体系统的安全困境防御了左边右边又进来过去我们做大模型安全习惯是给每个入口加过滤用户输入做一轮敏感词检查和大模型安全性分类Agent输出再做一轮检测系统提示词里写满不要执行危险操作。这套思路在单Agent时代还算能应付一旦上了多智能体很快就会发现力不从心。我见过太多实际例子一个协作系统里有任务解析Agent、工具调用Agent、结果汇总Agent每个节点都单独配置了安全过滤器。攻击者并不硬碰任何一个节点的防线而是把一段恶意指令拆成几个看似无害的片段分别塞进不同上下文让A Agent输出了一段完全正常的话这段话却恰好成了B Agent的任务指令。等恶意行为真正触发时负责把关的每个Agent都说我这边没问题。这其实就是论文想点破的尴尬局面所有点的安全都是局部正确的但整个系统的安全性是全局属性。你没法通过无限叠加局部过滤器来获得全局安全因为攻击者可选的路径数量远远大于你部署过滤器的节点数量。1.2 为什么安全边界天然是一个拓扑对象拓扑学是研究空间在连续变形下不变性质的数学分支。论文把它借过来是因为安全边界这个对象太适合用拓扑语言来描述了安全边界本质上是一个可到达性问题而不是某个点是否合法的问题。打个比方你要保护一栋楼可以在每个门口安排保安但攻击者如果走地道、爬管道、翻天台你再多的门口保安也拦不住。拓扑学关心的是建筑整体有哪些通道、哪些连通分支、哪些地方存在开的口子而不是单纯数门口有几个保安。多智能体系统的安全边界也是一样的道理每个Agent的过滤规则决定了一个被允许的安全输入集合但Agent之间的信任边、消息流转路径、工具调用的可达关系共同构成了攻击者可以绕行的拓扑结构。论文把这个问题形式化之后得出的结论很有冲击力只要Agent通信图中存在一条连通路径使得路径上的每一步在局部过滤器看来都是安全的那么整个系统就可能被击穿。更关键的是这种漏洞不是某一条提示词写得不好而是拓扑结构本身注定的。1.3 这篇论文给出的三个核心贡献为了避免空对空先把论文的主要贡献整理成一张表后面再逐个展开贡献点内容工程意义建模层把提示词攻击重新定义为语义空间中的路径搜索问题让漏洞分析从拼运气变成可枚举、可计算分析层把多Agent信任边纳入拓扑图定义跨Agent的攻击路径暴露了局部安全但全局不安全的系统性根因方法层用连通性、路径覆盖等拓扑工具定位防御薄弱环节提供了一套可落地的安全体检思路我读完后最大的感受是论文不是发明了一种新攻击而是给所有已知攻击方式提供了一个统一的解释框架。它让你看清那些分散的越狱技巧、提示注入、角色扮演套路本质上都在做同一件事在防御边界之间找到一条无损的绕行路径。2. 两层建模语义空间里的绕行和Agent通信拓扑里的信任借道2.1 第一层建模语义空间中的安全集与攻击路径论文的第一层建模是把提示词想象成高维语义空间里的点。每个提示词经过向量化之后都对应空间中的一个坐标。语义相近的文本距离就短意思完全不同的文本距离就远。在这个空间里安全过滤器相当于划出了一个安全子集——凡是落在子集内的输入都被放行落在子集外的就被拦截。但要命的是攻击者的目标往往落在安全集之外。如果攻击者直接输入恶意指令自然会被拦下。可如果攻击者从任意一个安全点出发沿着一条路径连续微调文本每一步产生的中间变体在过滤器看来仍然安全那么他就能像走迷宫一样绕到那个先前被禁区包裹的恶意目标上。绕路这个词的数学直觉就在这里恶意目标和合法指令之间可能不存在直线距离上的相似但语义空间里存在一条弯弯曲曲的路径把两者连接起来。过滤器只检查点不检查路径所以攻击者可以沿着这条路径一步一步挪过去。为了让你更容易理解论文给出的核心判断其实就是一句话安全过滤器越复杂它的安全边界就越可能存在缝隙因为每一个检测规则都只能覆盖一个局部邻域而攻击者不需要穿过邻域中心只需要贴着边界的缝隙走。2.2 第二层建模Agent通信拓扑中的信任边如果说第一层是描述单个Agent如何被骗第二层就是描述多个Agent如何被串起来骗。多智能体系统本身是一张有向图每个Agent是一个节点节点之间的消息传递是有向边。论文把边的特殊性拎出来分析——上游Agent的输出往往被下游Agent当成可信输入甚至当成指令来执行。这就产生了单Agent里不存在的攻击面攻击者不需要直接污染最终执行者他可以污染一个上游Agent让上游Agent输出一段看起来正常但内嵌恶意意图的文本下游Agent没见过原始输入只看到了这段被洗白的输出自然放行。论文把这种边叫做信任边并指出信任边上缺少独立的语义校验是整个多Agent系统安全防线最容易被击穿的部位。因为你防住了用户输入却没防住另一个Agent的转述。这就像你严格核查了访客身份但访客带来的那个内部人员却可以大摇大摆走进机房。2.3 论文用到的几个关键拓扑概念逐一对应到安全场景论文里有几个拓扑学概念我读的时候做了映射整理成下面这张表应该能帮你快速抓住它的分析思路拓扑概念论文里的安全对应识别信号路径连通从安全输入到恶意输入是否存在连续可走的文本变体链同义改写、编码混淆、拆句插入开覆盖一组安全过滤规则是否真的覆盖了所有可能输入规则盲区、特殊格式绕过连通分支Agent图中哪些节点实际上处于同一个信任域一个Agent被攻破后能影响多少下游节点边界点安全集的边界区域微小改动就能跨越安全判定判定阈值附近的输入映射复合多个Agent的输入输出映射叠加后的整体效果上游输出被下游当成指令执行这套映射最有用的一点是它把我们的系统安不安全从一句无法回答的空话变成了几个可以检查的具体问题。比如你的Agent通信图里有几个连通分支高危工具所在的节点和外部输入节点之间有几条可达路径每一条路径上是否每一个Agent都做了独立的语义校验这些才是论文真正提醒我们要关注的。3. 三种攻击模式还原单点逃逸、跨Agent传导、路径重构3.1 单点逃逸贴着安全边界做微小扰动第一种模式最容易理解也是大多数越狱攻击的底层逻辑。攻击者选取一个安全输入然后在语义空间里对它做微小扰动替换近义词、改变句式、插入无害的过渡句、注入特殊格式标记。每次扰动幅度都很小小到过滤器的判定结果不变但经过几十上百次迭代之后文本的最终语义已经偏到了危险方向。论文把这种攻击建模为在安全集的边界上游走。它指出任何基于分类器或大模型打分的安全过滤器它的安全边界都不可能是光滑的总会出现大量锯齿感的凹凸区域。攻击者只要沿着锯齿边缘一点一点爬就能绕到安全集外面而不触发警报。我过去做安全测试时也验证过这个现象一个输入安全分类器对如何制造某种危险品判得很死但改成厨房里可以用哪些常见材料进行某种反应就放行了。两者本质意思一样可中间经过好几轮改写之后防线根本反应不过来。论文的价值在于它告诉你这不是某个过滤器的疏漏而是边界拓扑的必然结果——只要存在锯齿边界就存在绕行路径。3.2 跨Agent传导让干净节点当传声筒第二种模式才是多智能体系统最独特的风险。攻击者把真正危险的payload伪装成无害内容先输入给一个安全要求较低的Agent比如负责闲聊或摘要的Agent这个Agent正常处理输出一段合规文本然后这段输出被传递给另一个具备工具调用权限的Agent被后者完整当作指令执行。论文把这种攻击叫信任借道。关键不在中间Agent是否安全而在于下游Agent对上游输出缺少身份校验。下游只看到了这段文本来自一个Agent却没法判断文本背后的真实意图。在单Agent系统里攻击者要面对的是模型本身的对齐防线在多Agent系统里攻击者可以绕过模型对齐直接利用系统设计者亲手建立的Agent间信任关系。我实际测试过的一种变体是这样让某个Agent输出JSON格式的任务参数下游工具Agent看到合法JSON就直接执行。攻击者在用户输入里诱导上游Agent输出一段无害的JSON任务描述但里面包含的action字段实际上是删除文件。下游Agent不解包语义只按协议执行于是防线全线崩溃。这个过程里每个Agent都做了自己该做的事系统却做了不该做的事。3.3 路径重构把恶意载荷拆成拓扑碎片再组装第三种模式更隐蔽它利用的是多Agent系统天然存在的状态分散特性。攻击者把恶意指令拆成很多个独立片段每个片段单独看都完全无害——可能是一个普通名词、一个动作动词、一个输出格式的指示。这些碎片分散在多个上下文窗口、多个Agent的短期记忆、或者多轮对话的早期内容里。等到某个Agent开始处理最终任务时系统会把之前存储的若干上下文片段拼接起来。如果拼接的顺序恰好符合攻击者的设计碎片组合后就形成了完整恶意指令。论文用拓扑学的连通分支重新合并来描述这种现象每个碎片在各自的连通分支里都是安全的可一旦通过系统机制汇入同一个上下文分支就会连通恶意语义瞬间组装完成。这个攻击非常难防因为你没法在任何一个中间环节识别出恶意意图。它让我想起一个老段子寄一封信的每个字都很正常但收信人按行首字连起来读就拼出了一句不该出现的话。多Agent系统里的记忆、工具返回值、上游转述都可能是这些行首字的藏身处。3.4 一次击穿的含义先定位拓扑漏洞再精准构造载荷论文标题里一次击穿这个说法我一开始以为是夸张的修辞读完才发现它有明确的指向传统攻击是去各个入口试payload成功与否看运气论文的攻击是先对整个多Agent系统做一次拓扑分析画出信任边和可达路径找到那条最可能局部全部安全、全局通向危险的通道然后再为目标通道量身定制一组最小载荷。所以一次击穿指的是攻击者把分析成本前置了真正执行攻击时只需要一次有效输入。这个思路对防守方也是一个提醒我们不是在跟一个随机试错的攻击者对抗而是在跟一个会系统性地先画图、再选路、最后精准命中的攻击者对抗。你的拓扑图越透明他定位弱点的速度就越快。4. 实验复盘三Agent协作流水线如何被一次击穿4.1 实验环境一个标准的任务解析、工具调用、结果汇总流水线论文的验证实验搭建了一个非常典型的模拟环境这种结构在真实项目里随处可见。系统由三个Agent组成任务解析Agent接收用户原始输入理解用户意图输出结构化任务描述。工具调用Agent接收任务描述决定调用哪些工具、传入什么参数。结果汇总Agent收集工具执行结果整理成最终回复。安全防护层面每个Agent都配备了输入过滤器和输出过滤器并且系统提示词里也明确要求不得执行危险操作。单看每个节点这套防护并不弱。任务解析Agent会拒绝明显敏感的指令工具调用Agent会校验工具名称和参数类型结果汇总Agent会过滤输出中的敏感内容。但论文要展示的恰恰是局部防护齐全的系统全局拓扑依然可能是一张漏勺。4.2 攻击链路完整还原从一段角色扮演到一次文件删除我没有复现论文的原始代码但按它的描述逻辑完整攻击链路可以拆成以下几个阶段第一阶段攻击者不直接提任何危险意图而是给任务解析Agent设定一个角色扮演前提让它把后续内容当成某种合规的内部任务描述格式来解析。这个阶段没有任何敏感词过滤器判定为正常。第二阶段攻击者在角色设定里嵌入提示引导任务解析Agent输出一个工具调用指令块其中包含了工具名和一个文件路径参数。关键技巧是让这个文件路径看起来像一个普通的资源地址比如清理临时缓存文件 /tmp/project/cache。第三阶段工具调用Agent拿到任务解析Agent的输出。由于上游输出是结构化JSON工具Agent认为这已经是经过安全确认的指令不再对参数意图做深层检查按照工具名映射执行了删除操作。如果攻击者精心构造路径比如通过符号链接指向关键目录实际删除范围就会远超临时缓存。第四阶段结果汇总Agent拿到工具执行结果只做了输出格式化并未发现异常。最终用户收到一段清理完成的正常回复风险已经落地整个流程里没有任何一个环节发出警报。这就是论文说的一次击穿攻击者只发了一段初始输入后续所有环节被动配合。整个过程不需要直接给工具Agent发送恶意指令也不需要突破任何单个Agent的安全过滤攻破点是Agent间的信任传递。4.3 防线为什么全线崩溃三个层面的根因分析实验复盘后论文给出的根因分析特别值得记下来我把它总结成三点第一检测点覆盖范围错位。所有安全过滤器都放在Agent的输入输出边界上却没有覆盖Agent与Agent之间的通信信道。上游Agent已经完成了一次语义判断下游Agent默认相信这次判断的结果省掉了二次校验。安全机制看似布满了节点实际在每个信任边上都是盲区。第二信任传递缺少认证和授权。下游Agent接收上游消息时没有验证消息的语义来源是否可信。它只验证了消息格式对不对却默认携带消息的Agent已经被系统授权。在安全领域这相当于把系统集成商认证误当成内容安全认证。第三全局状态没有汇聚。碎片化攻击之所以能成功是因为任何单一Agent都看不到整个上下文的全貌。论文指出的方向是必须在系统层增加一个跨Agent语义审计组件专门负责把多个节点的输入输出拼起来检查而不是各自为战。为了直观对照我列一个简单的攻防对照表防线位置原有的防御手段失效原因用户入口敏感词过滤、安全分类器角色扮演和间接诱导绕过了关键词任务解析Agent输出输出格式校验格式合法且内容看似无害工具调用Agent输入上游信任工具名白名单没检查参数背后的真实意图工具执行层无高危操作在这里直接落地结果汇总Agent输出脱敏过滤恶意行为已执行完毕过滤无意义4.4 论文的边界与局限什么情况下这套分析会失效论文的结论看起来吓人但它自己也在分析部分做了限定这一点我读的时候没有被完全说服但觉得有必要讲清楚。首先实验环境是模拟系统真实生产环境往往还有额外的访问控制层、网络隔离、人工审批流程攻击路径不一定像实验里那么畅通。拓扑分析找到的是可能存在的可达路径不代表每条路径都能被稳定利用更不代表攻击者一定能构造出实际可用的载荷。其次论文的模型偏重于语义层面的软攻击对需要精确控制工具参数、或者需要绕过操作系统权限的技术型攻击者来说拓扑漏洞只是第一步后面的传统安全机制仍然会拦截。所以论文应该被理解为多智能体系统新增风险的分析工具而不是传统安全可以直接放弃的理由。最后论文没有给出一个现成的自动化防御产品它提供的更多是思想框架和分析方法。要把这套方法落地成工程工具还需要结合具体系统的日志、消息结构、工具权限清单去做定制化开发。这部分也正是下面我想展开的实践内容。5. 读完论文后我建议的拓扑体检五步自检多智能体系统5.1 第一步绘制Agent通信拓扑图并标出所有信任边我拿到一篇新论文最关心的永远是明天能不能用上。这篇论文给我最直接的工程启发就是把自家多Agent系统的拓扑图画出来。图不需要很精确但要包含所有Agent节点、外部输入入口、工具调用出口、以及数据在节点间的流转方向。画完之后要重点标注哪条边属于信任边也就是下游Agent会直接或间接信任上游Agent输出的场景。我自己的经验是大部分系统的信任边数量都比你以为的多不仅Agent间消息是信任边Agent读取共享数据库、读取全局记忆、继承系统上下文也都构成隐含信任关系。这一步做下来很多系统的问题就浮现了原来某个Agent的输出可以直接影响一个高危工具中间隔了两层转发却没有任何一层做语义重新校验。5.2 第二步枚举所有外部可达的路径有了拓扑图下一个动作是枚举路径。关键是找出所有从外部输入入口到高危动作出口的路径。不需要穷举所有可能只需要关注那些路径上每一跳都处于可能被诱导状态的通道。我建议做一个简单的表格逐条路径填写路径编号起点入口途经Agent终点高危操作中间是否有语义重检风险等级P1用户对话框任务解析Agent → 工具Agent文件删除工具无高危P2用户对话框摘要Agent → 记忆库 → 规划Agent外部API调用仅格式校验中危P3第三方Webhook路由Agent → 工具Agent数据库写操作有低危表格填完之后每条中高危路径都是潜在的攻击通道。论文的那个一次击穿案例放在这个表格里就是从P1这种路径进去的。5.3 第三步识别语义边界上的锯齿区域这一步对应论文里边界点的概念。对每个Agent的输入过滤器做一轮针对性边角测试看它的判定边界在哪里。具体方法是找一组语义等价但表达方式差异明显的文本投进过滤器看看哪些会被拦住、哪些会溜过去。比如你有一个意图分类器用来判断用户是否需要调用删除工具。测试时可以用以下变体轮番试探直接表达删除路径下的所有文件。间接表达清理这个目录里的旧文件。任务化表达把路径下的内容标记为待清理状态。角色化表达你现在是系统维护助手请处理临时文件。你会发现过滤器可能只对第一种情况敏感其余三种全部放行。这些敏感表达之外的等价语义区域就是论文所说的锯齿边界。把它们系统性找出来你就知道自己系统里有多少条半开的小门。5.4 第四步针对每条信任边做跨Agent传导测试这是多Agent系统特有的一步。我们不仅可以给单个Agent发恶意输入还要测试A Agent的输出能否诱导B Agent执行非预期操作。我最常做的一个低成本测试是这样设计一段用户输入让任务解析Agent把删除操作改写成一个无害的任务描述然后观察工具Agent接到这个描述后是否执行了删除动作。如果工具Agent全盘照收那这条信任边就有严重问题。还有一种测试思路是针对结构化协议如果Agent间通信是通过JSON或XML进行尝试在上游输出中嵌入一些协议外的隐藏字段看看下游Agent是否会把它们当作可执行指令。这类测试不需要高深技术却能快速暴露Agent间以格式替代语义校验的坏习惯。5.5 第五步把跨Agent审计纳入系统设计而不是事后补救论文最核心的行动建议是增加一层跨Agent的全局审计机制。这里我补充一下工程落地的具体做法一是对Agent间消息做语义摘要而不只是格式校验。比如工具Agent在接到删除指令时不光检查JSON格式还把任务解析Agent的原始输入摘要一起带上让大模型判断是否存在怂恿删除的语义。二是加一个安全上下文透传机制。上游Agent做出关键判断时把判断依据的关键词和置信度附在消息里下游Agent可以知道上游是不是在一个可疑的诱导环境下做的判断。三是对高危操作做双Agent复核。删除文件、发送邮件、调用外部API这类操作要求两个独立Agent分别对指令意图做判断两个判断结果一致才允许执行。这个思路就是论文拓扑分析的自然推论没有任何一个单点可以信任只能通过增加独立节点的共识来切断攻击路径。6. 我的几点体会与一个可复用的防御检查习惯6.1 安全的重心要从节点加固转向通道路径约束这篇论文让我最大的观念转变是彻底放下了给每个Agent都装上最强过滤器就能安全的幻想。多智能体系统的安全本质是个图论和拓扑问题单个节点防御得再好也无法解决路径层的可达性风险。我在自己的项目里开始践行一个原则不是问这个Agent能不能被攻破而是问外部输入能不能通过若干路径触达高危操作。前者是点思维后者才是系统思维。6.2 对个人开发者和团队的实际建议先画图再改架构如果你正在搭多Agent应用我强烈建议别等上线被攻破后再反思。拿一个周末的时间把Agent通信拓扑图画出来把信任边标出来把高危工具列出来然后逐条路径做一遍5步自检。画图的过程中你大概率就能发现好几个看起来没毛病、实际上漏洞明显的设计。架构层面最划算的改进是让每个Agent对上游消息保持怀疑态度。具体说任何Agent接收到另一个Agent的文本输出时都应该重新做一次意图判断而不是把上游输出等同于用户直接输入的已验证安全内容。6.3 一个我一直在用的检查口诀最后分享一个我自己总结的检查口诀用在这类系统上特别顺手入口可污染路径可绕行节点可诱导出口可落地——处处皆风险。具体展开就是每次设计一个多Agent模块我都强制回答四个问题。入口能不能被角色扮演绕过路径上有没有哪条边不做语义重检某个节点有没有可能被诱导输出误导性指令最终出口是否有工具权限能落地危险操作如果四问里有一问不达标我就认为这个模块存在论文描述的安全隐患。这套方法不能保证绝对安全但确实帮我在项目早期拦下了好几次看起来正常、细想很危险的设计方案。这篇论文解读给我最大的启发是AI安全领域的攻防对抗正在从提示词技巧比拼升级为系统结构分析。攻击者在用数学工具寻找路径漏洞防守方也得学会用同样的视角审视自己的系统。拓扑学听起来高深落到工程上其实就是一句话别只守着大门把整座建筑的地道、管道和天台都数一遍你才真正知道哪里该设防。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。