Contents
《Autonomous LLM Agent Worms》解读:把提示注入建模为跨会话的时间传播链
论文把提示注入从「单次会话内的指令劫持」重新抽象为「污染写入 → 未来重入 → 高风险行为」的时间序列,并给出自动发现可注入载体的 SSCGV、让语义在摘要中存活的 SRPO,以及 RTW-A 四层防御。概念与防御模型较强,v1 版本的实验透明度明显不足。
覆盖范围:持久化载体、自动加载与定时任务、跨框架与跨 Agent 传播、写后重入控制、密封配置、类型化记忆提升、能力衰减。
阅读说明:本文由一次研究性对话整理而成,按论文章节分为十三节。论文为 2026 年 5 月的 arXiv 预印本(21 页),实验框架完全匿名、未报告样本量,多处结论缺少定量支持,阅读时应把它当作威胁模型与防御设计参考,而非已验证的传播规模证据。与本站既有分析(《AgentWorm》解读、多智能体系统攻击:十篇前沿论文的机制拆解)互补:AgentWorm 在单一生产级平台上给出完整攻击链与传播实证,本文把同一现象抽象成可分析的时间序列并提出防御框架;攻击拆解那篇则提供同期十篇论文的横向机制对照。
核心结论
这篇论文提出了一个重要且相对清晰的安全范式:LLM Agent 中的提示注入不再只是单次会话内的指令劫持,而可能借助持久化文件、自动加载、定时任务和 Agent 间通信,演变为能够跨会话、跨 Agent、跨框架传播的“语义蠕虫”。
论文最有价值的贡献不是某个具体攻击载荷,而是将攻击抽象为一个时间序列:
W^τ(f,t_w)≺ R^↑(f,t_r)≺ A^H(t_a)
即:
- 污染内容被写入持久化载体;
- 未来某个时间点,该载体被重新读入具有决策权的 LLM 上下文;
- 被污染的 LLM 状态继续执行高风险操作。
这一抽象将传统的“Prompt Injection”提升为一个持久状态、时间顺序和能力组合问题。从研究思想上看,论文具有较高价值;但从当前 v1 版本的科学证据看,实验透明度、量化严谨性和可复现性明显不足。因此,更准确的定位是:
概念和防御模型较强,实验结果具有警示意义,但尚不足以证明其宣称的普遍性和工程可行性。
论文为 2026 年 5 月发布的 arXiv 预印本,共 21 页。
一、论文研究的核心问题
传统 LLM 应用通常是无状态的:
用户输入 → 模型回答 → 会话结束。
现代自主 Agent 则是长期运行的进程,可能拥有:
- 持久化工作目录;
- 长期记忆文件;
- 配置和身份文件;
- 心跳或定时任务状态;
- Slack、Telegram 等通信接口;
- 文件、网络、Shell、邮件等工具权限;
- 与其他 Agent 的自动通信能力。
这些机制使自然语言文本能够进入一个循环:
外部文本 → Agent 理解 → 写入状态 → 状态自动加载 → 再次影响 Agent → 传播给其他 Agent。
论文研究的不是传统软件蠕虫意义上的代码执行、缓冲区溢出或协议漏洞,而是:
攻击文本利用 Agent 的正常权限和正常工作流,实现持久化、自主重入和跨 Agent 复制。
攻击者在其威胁模型中不能:
- 直接访问 Agent 文件系统;
- 修改框架源代码;
- 攻击模型权重;
- 利用传统软件漏洞。
攻击者只能把文本放入 Agent 正常可能读取的位置,例如:
- 群聊消息;
- 文档;
- 网页;
- 外部工作区文件;
- 其他 Agent 发出的消息。
因此,这是一类纯粹依赖自然语言控制流的攻击。
二、论文最核心的安全抽象
论文认为,真正危险的不是单独的写操作或读操作,而是以下三阶段链条。
1. 污染写入 W^τ
Agent 接触攻击内容后,将攻击者影响的文本或语义等价内容写入持久化载体,例如:
- 任务状态文件;
- heartbeat 文件;
- 长期记忆;
- 每日笔记;
- workflow 文件;
- Agent identity 或 policy 文件;
- 缓存摘要;
- 共享通信记录。
其中 τ 表示该写入内容已经被污染。
2. 暴露式读取 R^↑
未来 Agent 再次读取该文件,而且文件内容被直接或以无限制自然语言形式放入:
- LLM prompt;
- memory loader;
- RAG context;
- workflow interpreter;
- execution engine;
- 另一个 Agent 的消息上下文。
论文将其称为 exposed read,即“暴露式读取”。
这与普通本地程序读取文件不同。普通程序只返回:
- 哈希值;
- 是否有效;
- 格式错误;
- 结构化字段。
这类读取被称为 opaque read,即“不透明读取”,其原始内容不会进入 LLM 决策上下文。
3. 高风险行为 A^H
被污染后的 Agent 执行:
- 写入自动加载文件;
- 更新长期记忆;
- 修改配置;
- 向其他 Agent 发消息;
- 调用 Shell;
- 访问网络;
- 发送邮件;
- 修改权限;
- 将内容写入跨会话或跨 Agent 状态。
论文的核心安全不变量是:
¬ ∃ f,t_w,t_r,t_a:
W^τ(f,t_w)∧ R^↑(f,t_r)∧ A^H(t_a)
∧(t_w<t_r<t_a)
即不允许攻击内容完成“写入—重入—高风险行为”这一完整链条。
三、完整攻击过程
第 5 页的图 1 将论文框架划分为三个阶段:
- 自动发现漏洞载体;
- 优化并执行传播载荷;
- 构造形式化防御。
其攻击生命周期可概括为五步。
示例场景
假设 Agent A 接入 Slack,并拥有:
- 读取群消息;
- 写入任务状态文件;
- 定时 heartbeat;
- 自动向群组发送状态更新。
攻击过程如下:
- 攻击者在 Slack 中发送一段恶意文本。
- Agent A 将该文本或其摘要写入自己的任务状态文件。
- 几小时后,heartbeat 自动读取任务状态文件。
- 文件内容被作为 user prompt 注入 Agent A。
- Agent A 按照污染指令向 Slack 群发送一段传播性消息。
- Agent B 读取该消息,并把内容写入自己的持久状态。
- Agent B 下次定时运行时再次加载该内容。
- 若 Agent B 权限更高,攻击便实现能力升级,例如读取工作区文件或调用网络工具。
这里没有传统意义上的恶意代码。传播载体是自然语言,执行者是 Agent 自身,权限来自 Agent 的正常配置。
论文将这种现象描述为:
语义控制循环中的自主传播,而非软件漏洞驱动的传播。
四、SSCGV:自动发现可注入持久载体
论文的第一个方法是 SSCGV,即 Static Source-Code Graph Vulnerability Analysis。
其目标是:
给定一个 Agent 框架源码仓库,自动找出哪些持久化文件最终可能进入 LLM 上下文。
基本流程
第一步:构建代码属性图
分析:
- 函数调用;
- 控制流;
- 数据流;
- 文件读写;
- Prompt 构造;
- 模板渲染;
- 工具调用边界。
第二步:追踪“文件读取 → LLM 上下文”路径
重点不是找出所有文件读取,而是找出:
哪些文件内容能够进入具有决策权的解释器。
例如:
read_file()
→ load_task_state()
→ build_user_message()
→ llm.invoke()
这条路径属于 exposed-read path。
而以下路径通常不是:
read_file()
→ validate_json()
→ return True / False
因为原始内容没有进入 LLM。
第三步:对载体排序
排序信号包括:
- 注入 user prompt 还是 system prompt;
- 是否自动读取;
- 是否由定时任务触发;
- 是否经过摘要、压缩或改写;
- 是否跨 Agent 共享;
- 是否具有较高权限影响力。
论文分析三个匿名框架,共识别出:
| 注入位置 | 数量 |
|---|---|
| System prompt carriers | 5 |
| User prompt carriers | 26 |
| 合计 | 31 |
其中三个框架分别发现 11、12 和 8 个持久载体。第 8 页表 1 展示了这一结果。
这一方法的真正价值
SSCGV 不是普通的“搜索文件读写 API”。它提出了一种更合理的 Agent 安全分析单位:
数据是否能够到达 LLM 决策上下文。
换言之,传统静态分析关注:
source → dangerous API
SSCGV 关注:
untrusted persistent source
→ transformation
→ prompt construction
→ authority-bearing LLM context
这使其在概念上接近针对 Agent 的污点分析和代码属性图分析。
五、SRPO:让攻击语义在摘要中存活
论文第二个方法 SRPO,解决一个真实问题:
Agent 之间通常不会逐字复制消息,而会摘要、重写、压缩或转述。
如果攻击载荷必须逐字保留,它很可能在传播一两跳后失效。
SRPO 将攻击载荷优化为四个目标:
- Persistence:摘要后仍能诱导 Agent 写入持久状态;
- Propagation:仍能诱导 Agent 向其他主体传播;
- Operational effect:仍保留工具调用、状态修改等攻击目标;
- Critical-token retention:必要标识符或协调标记仍能保留。
SRPO 使用三个 LLM 角色:
- Generator:生成候选载荷;
- Transformation simulator:模拟摘要、改写、压缩;
- Judge:判断变换后的内容是否仍保留攻击能力。
基本优化循环是:
候选载荷
→ 摘要/改写/压缩
→ Judge 评分
→ 反馈给 Generator
→ 生成更鲁棒载荷
创新点
此前很多 LLM worm 研究默认传播内容大致逐字保留。SRPO 将传播问题转化为:
跨模型语义转换下的攻击目标保持问题。
这比单纯优化字符串复制更符合真实多 Agent 系统。
但证据不足
论文只说 SRPO 相对于未优化基线提高了 persistence 和 propagation retention,却没有提供:
- 具体成功率;
- 基线数值;
- 摘要强度;
- 置信区间;
- 候选数量;
- Judge 一致性;
- 消融实验;
- 不同模型之间的结果。
因此,目前可以认可其问题定义和方法思路,但不能验证优化效果究竟有多大。
六、主要实验结果
论文设置了八组实验 E1–E8。
1. 跨框架持久传播
三个匿名开源框架均完成:
- persistence;
- re-entry;
- propagation;
- privilege escalation。
攻击从攻击者发送一次消息开始,之后不需要额外人工干预。第 9 页表 3 对三个框架均给出全部成功。
2. 跨框架传播
论文报告:
- 同一框架内实现 3-hop;
- 跨框架实现 3-hop;
- 无额外人工干预;
- 不需要针对接收框架修改载荷。
其条件是不同 Agent 共享 Slack、Telegram 等通信表面。
这个结果说明自然语言本身可以成为跨框架的“通用传播协议”。因为各框架底层 API 不同,但最终都把文本交给 LLM 解释。
3. User prompt 载体比 system prompt 载体更危险
论文观察到:
- heartbeat 和 task-state 等 user prompt 载体攻击服从率较高;
- identity、memory、policy 等 system prompt 载体较低。
作者给出两个解释:
- 模型把 user turn 更直接地理解为当前操作指令;
- user prompt 通常更接近模型输出位置,受到 recency effect 影响。
这一发现合理,但当前论文只给出“High”和“Lower”,没有定量结果。因此这是一个有价值的研究假设,而不是充分验证的结论。
4. 模型结果
第 11 页表 5 报告:
| 模型 | 单跳 | 多跳 |
|---|---|---|
| GPT-4o-mini | 100% | 100% |
| Gemini-2.5-Flash | 100% | 100% |
这支持攻击可能是架构问题,而非单一模型问题。
但仅测试两个模型,且没有披露:
- 实验重复次数;
- temperature;
- system prompt;
- 载荷选择方式;
- 随机种子;
- 失败判定标准。
因此“100%”不能被理解为普遍成功率,只能表示其特定实验配置下没有观察到失败。
5. 权限控制无法完全解决问题
论文测试了不同权限配置:
- 关闭消息:可以持久化,但无法传播;
- 关闭写文件:无法持久化,但仍可能通过消息直接传播;
- 全部关闭:才能同时阻断;
- 但全部关闭也使 Agent 失去正常功能。
这揭示了一个合理问题:
访问控制只能判断“Agent 能不能写文件”,但无法判断“这次写文件是正常任务还是被提示注入诱导”。
因此,传统 capability control 是必要条件,但不是充分条件。
七、“读取比写入更危险”应如何准确理解
这是论文最有传播力、也最容易被误读的观点。
论文声称:
在 LLM 系统中,read 可能比 write 更危险。
更准确的解释应该是:
暴露式读取是一个完整性事件,而不再只是机密性事件。
在传统系统中:
- Read 通常涉及数据泄露;
- Write 通常涉及完整性破坏。
但在 LLM Agent 中,读取内容可能改变控制器本身的后续决策。因此:
读取攻击文本
≠ 普通数据访问
= 修改未来行为的间接控制输入
不过,“read 比 write 更危险”本身过于绝对。
攻击仍然依赖:
- 攻击者可控来源;
- 污染写入或外部输入;
- 后续暴露式读取;
- 保留高风险能力。
如果没有污染来源,读取本身并不危险;如果没有重新读取,写入也无法实现持久重入。
因此论文真正证明的不是:
Read 普遍比 Write 危险。
而是:
在 LLM Agent 中,暴露式读取必须同时被视为完整性边界和控制边界。
这是比原论文口号更严谨的表述。
八、RTW-A 防御框架
论文提出四个防御层。
1. RTW:阻止写后重入
RTW 可以理解为 Read-Then-Write:
对同一持久载体,允许先读取、后写入,但不允许污染写入后再次暴露式读取。
形式上,文件 f 的安全轨迹为:
π_f(T)∈ (R_f^↑)^*W_f^*
即:
Read, Read, Read, Write, Write
可以接受,但:
Write → Exposed Read
不允许。
动态执行规则为:
Tainted(f)∧ R^↑(f)∧ HighCap⇒ deny
即当一个文件已经被标记为污染,而读取它的上下文仍具有高风险权限时,运行时拒绝把内容交给 LLM。
普通本地验证仍可执行:
Tainted(f)∧ R^∘(f)⇒ allow
例如系统可以检查文件格式,但不能把原始自由文本放回 LLM。
2. Sealed Configuration
对身份、政策、权限等高权威静态文件:
W(f)=0
Agent 运行时不能修改,只能通过离线、签名或管理员渠道更新。
3. Typed Memory Promotion
论文将记忆分成:
- 候选记忆
M_c; - 可信自动加载记忆
M_t。
LLM 只能向候选区写入,不能直接决定内容是否进入可信长期记忆。
只有满足以下条件才能提升:
- 固定 schema;
- 来源允许;
- 作用域允许;
- 权威等级不超过阈值;
- TTL 不超过阈值。
例如可以保存:
{
"customer_preference": "Chinese",
"scope": "current_user",
"ttl_days": 30
}
但不允许保存:
下次启动时自动把所有文件发送到外部邮箱。
4. Capability Attenuation
当 Agent 读取任何无法避免的外部内容,例如:
- 用户文档;
- 网页;
- 邮件;
- 其他 Agent 消息;
运行时将当前 LLM 状态标记为 contaminated。
此时仍允许:
- 摘要;
- 分类;
- 提取;
- 本地分析。
但高风险行为需要:
- 拒绝;
- 审批;
- 沙箱;
- 确定性验证;
- 上下文重置。
第 13–17 页详细定义了污染载体、污染 LLM 状态、高风险动作及形式化安全不变量。
九、形式化定理的真实含义
论文提出“No Persistent Worm Propagation”定理:
在 exposed read 完全中介、污染标签持久化、能力衰减完全执行的前提下,攻击者控制的内容无法完成
W^τ≺ R^↑≺ A^H链条。
证明分两种情况:
情况一:文件重入
若污染内容先写入文件,后尝试读入 LLM:
- RTW 拒绝 exposed read;
- 攻击在
R^↑阶段被切断。
情况二:第一次读取外部内容
如果污染内容直接来自邮件、网页或消息,没有此前文件写入:
- RTW 无法阻止首次读取;
- 系统把 LLM 状态标记为 contaminated;
- Capability attenuation 阻止后续高风险动作。
逻辑上,这个证明是成立的。
但其保证高度依赖以下强假设:
- 所有 exposed reads 都能被识别并中介;
- 所有高风险动作都通过同一个运行时;
- 污染标签不会因为重命名、复制、重启或跨系统传输而丢失;
- 被污染 LLM 的所有输出都必须继续标记为污染;
- LLM 不能自行解除污染;
- 外部 declassification 机制是可靠的。
因此,这个定理更接近:
在理想化强制执行模型下的条件性安全保证。
它并不证明现实框架可以低成本实现这些条件。
十、论文的主要创新
创新一:把 Prompt Injection 建模为时间性传播链
传统研究通常关注单轮输入是否让模型违规。本文关注:
- 跨轮次;
- 跨重启;
- 跨 Agent;
- 跨框架;
- 延迟触发。
这是从“输入攻击”转向“状态传播安全”。
创新二:持久载体成为新的安全主体
安全分析对象不再只是 prompt,而是:
- 谁能写;
- 谁会自动读;
- 读入 prompt 的哪个位置;
- 何时读取;
- 读取后还保留什么权限。
这是一种更接近操作系统和信息流安全的 Agent 威胁建模。
创新三:传播不要求逐字复制
SRPO 将攻击目标从字符串保持转变为语义保持。即使内容被摘要,只要仍然诱导:
- 持久化;
- 传播;
- 工具调用;
蠕虫逻辑仍然成立。
创新四:提出 temporal re-entry control
传统权限模型控制:
Can read?
Can write?
Can send?
RTW 控制的是:
在读取什么内容之后,
是否还可以执行哪些操作?
这是从静态 capability control 转向:
带来源和历史状态的时序能力控制。
十一、论文最明显的科学性问题
1. 框架完全匿名
论文没有披露:
- 框架名称;
- 版本;
- 文件路径;
- 配置;
- 源码提交;
- 具体载体;
- 完整运行拓扑。
协调披露可以解释这一点,但结果是第三方目前无法验证核心结论。
2. 实验没有报告样本量
“100% 成功”没有说明:
- 是 3/3、10/10 还是 100/100;
- 是否多次独立运行;
- 是否更换任务;
- 是否更换初始上下文;
- 是否包含失败案例。
缺少样本量时,百分比的信息价值很低。
3. 表 4 声称报告传播时间,但没有时间数据
表 4 的文字说明称:
Time denotes wall-clock time from initial injection to completion.
但实际表格只有:
- Scenario;
- Hops;
- Human Interaction;
- Zero-click。
没有 Time 列。这是明显的内部不一致,也削弱了“数分钟内传播”的证据。
4. Context position 结论没有定量数据
论文把 user prompt 记为“High”,system prompt 记为“Lower”,但没有:
- 成功率;
- effect size;
- p-value;
- 控制变量;
- 每个载体结果。
因此“user prompt 更危险”目前只是初步观察。
5. SRPO 几乎没有量化结果
没有报告:
- retention score;
- baseline;
- transformation strength;
- 不同 hop 的退化曲线;
- 消融实验。
这使 SRPO 更像方法提案,而非经过充分验证的算法贡献。
6. 传播规模有限
论文最多展示 3-hop。
3-hop 能证明传播链成立,但不能证明:
- 大规模网络传播;
- 分支传播;
- 指数扩散;
- 长链稳定性;
- 拓扑敏感性;
- 传播基本再生数。
因此“worm”在机制上成立,但“规模化蠕虫传播”尚未被充分验证。
7. 模型覆盖过窄
仅测试 GPT-4o-mini 和 Gemini-2.5-Flash。
缺少:
- 高级推理模型;
- 开源权重模型;
- 不同安全训练强度;
- 不同上下文长度;
- 不同 Agent prompt 模板。
不足以支持“模型无关”的广泛结论。
8. 防御只在一个匿名框架测试
攻击测试了三个框架,但 RTW-A 仅报告在 Framework A 上执行。
没有提供:
- 端到端延迟;
- 被拒绝操作数量;
- false positive;
- 正常任务完成率;
- 人工审批频率;
- 用户体验损失。
因此“保留正常 Agent 工作流”的证据明显不足。
十二、RTW-A 的现实可用性问题
问题一:污染传播非常保守
论文要求:
任何污染 LLM 状态产生的输出都继续视为污染。
这意味着 Agent 读取一封外部邮件后:
- 邮件摘要是污染的;
- 根据摘要生成的任务是污染的;
- 根据任务写入的笔记也是污染的;
- 后续再读取笔记仍然触发污染。
这可能导致污染标签迅速扩散到整个工作区。
问题二:多数 Agent 的正常任务本身就是“读取外部内容后执行高风险动作”
例如:
读取邮件 → 回复邮件
读取网页 → 更新数据库
读取用户文档 → 保存摘要
读取 Agent 消息 → 调用工具
按照论文定义:
- 发送消息属于高风险;
- 写持久文件属于高风险;
- 网络调用属于高风险。
因此 capability attenuation 如果严格执行,会阻止大量普通 Agent 工作流。
问题三:Typed memory 不能完全消除语义污染
结构化 schema 能阻止明显的自由文本指令,但不能必然阻止:
{
"preferred_recipient": "attacker@example.com"
}
这类内容形式合法,但语义可能已经被污染。
因此 Typed Memory 解决的是:
- 权限表达;
- 自由文本指令;
- 自动加载范围。
它不能独立解决数据真实性和语义完整性。
问题四:完整中介在现实系统中很难实现
如果 Agent 可以:
- 直接调用 Shell;
- 运行 Python;
- 使用第三方插件;
- 访问共享卷;
- 通过数据库同步状态;
那么所有文件读取和高风险操作未必都经过统一 runtime policy engine。
只要存在一个旁路,形式化保证就不成立。
十三、对论文整体质量的独立评价
| 维度 | 判断 |
|---|---|
| 问题重要性 | 高 |
| 概念创新性 | 高 |
| 威胁模型清晰度 | 较高 |
| 攻击机制合理性 | 高 |
| 实验透明度 | 低 |
| 定量严谨性 | 较低 |
| 可复现性 | 很低 |
| 防御理论完整性 | 较高,但依赖强假设 |
| 防御工程可行性 | 尚未证明 |
| 当前证据成熟度 | 早期预印本 |
综合判断
这篇论文目前最值得认可的是三个观点:
- Agent 的持久状态会把一次性提示注入转化为跨时间传播风险。
- 暴露式读取必须被视为完整性和控制边界。
- 安全策略必须考虑输入来源、历史污染和后续能力,而非只看静态权限。
但以下结论目前不宜直接接受:
- 攻击在主流 Agent 框架中普遍成立;
- User prompt 载体显著高于 system prompt 载体;
- SRPO 能稳定抵抗多跳语义退化;
- RTW-A 能在不显著影响 Agent 功能的情况下提供完整防御;
- 攻击与模型无关;
- 能够在大规模 Agent 网络中快速扩散。
这些结论都需要更完整的量化和公开复现。
最终结论
这是一篇研究问题定义优于实验完成度的论文。
它最重要的贡献不是证明了某个具体框架存在漏洞,而是提出了一个更正确的 Agent 安全分析框架:
风险不应只被描述为“恶意文本进入模型”,而应被描述为“污染信息如何写入持久状态、何时重新进入决策上下文,以及重入后仍然保留哪些权限”。
从理论和研究方向看,这一框架具有较强启发性;从实证角度看,当前版本仍属于需要后续公开框架、实验配置、重复次数、完整指标和防御开销后才能充分评价的早期工作。