10|攻击如何跨越 Context、阶段与时间

最简单的 Prompt Injection 在同一轮 Context 中完成:不可信文档进入模型,模型立即改变行为。真实 Agent 往往包含多轮推理、多个 Tool、多个模型和持久化状态,攻击内容可能先被加工、转存或隐藏,在之后的阶段才激活。

传播方式决定了攻击链的可见性、持续时间和影响范围。

Cross-context Injection

Cross-context Injection 指攻击内容从一个上下文进入另一个上下文,并在新上下文中继续影响模型。

text 复制代码
网页正文
  → 搜索 Agent 摘要
  → 摘要交给规划 Agent
  → 规划结果交给执行 Agent

如果系统只在最初的网页读取阶段标记内容,后续摘要被当作"内部 Agent 输出"重新信任,就会发生 Context Laundering:内容经过可信组件后失去原始 Provenance,但其指令语义仍然保留。

flowchart LR W[Untrusted Web] --> A1[Search Agent] A1 --> S[Generated Summary] S --> A2[Planning Agent] A2 --> T[Tool Proposal]

Generated Summary 不是新的可信 Source。它是包含派生内容的中间产物,应该继承原始数据的信任标签。

Tool Result Injection

Agent 调用 Tool 后,结果通常会重新进入下一轮 Context。Tool Result 因此既是输出,也是新的输入 Source。

text 复制代码
LLM
  → call fetch_page(url)
  → Tool 返回网页正文
  → 正文进入下一轮 Context
  → 模型改变计划

即使 Tool 本身完全按设计工作,返回数据仍可能由攻击者控制。安全分析不能把"来自合法 Tool"误认为"返回内容可信"。

json 复制代码
{
  "tool": "fetch_page",
  "execution_trust": "trusted_tool",
  "content_trust": "untrusted_external_data"
}

执行组件可信与数据内容可信是两个不同属性。

Stored Prompt Injection

当攻击内容被写入知识库、Memory、代码仓库、工单或共享文档,并在以后被重新检索,就形成持久化传播。

text 复制代码
攻击者一次写入
  → 内容被持久化
  → 多个任务检索
  → 多个 Agent 或用户受到影响

Stored Injection 的风险取决于:

text 复制代码
Persistence    内容保存多久
Reach          哪些用户、Agent 或租户会读取
Trigger        什么检索条件会让它进入 Context
Privilege      读取它的 Agent 拥有什么能力
Cleanup        删除原始入口后,派生副本是否仍存在

如果内容被摘要后写入 Memory,即使原始恶意文档已经删除,派生内容仍可能继续触发。这也是为什么 Provenance 需要覆盖派生数据。

Multi-stage Prompt Injection

多阶段攻击不会在第一段内容里直接给出最终操作,而是将意图拆开,让不同步骤分别看起来合理。

text 复制代码
Stage 1
让 Agent 读取某个内部资源。

Stage 2
让 Agent 将内容保存为草稿或 Memory。

Stage 3
在之后的任务中诱导 Agent 调用外部写 Tool。

单独审查每一步时,读取、保存和发送都可能符合某种业务用途。风险来自跨步骤组合,以及系统没有把早期 Source Provenance 传播到最终 Sink。

flowchart LR S1[Untrusted Instruction] --> R[Sensitive Read] R --> M[Memory / Draft] M --> S2[Later Context] S2 --> W[External Write]

Multi-agent 传播

多 Agent 系统常将输出交给下一个 Agent:研究 Agent 负责收集资料,规划 Agent 负责制定步骤,执行 Agent 负责调用 Tool。

text 复制代码
Research Agent:能接触不可信网页
Planning Agent:能决定任务步骤
Execution Agent:拥有高权限 Tool

职责拆分只有在信任和权限也被拆分时才有安全价值。如果执行 Agent 无条件信任 Planning Agent 的自然语言输出,攻击内容仍能跨 Agent 传播。

安全接口应传递结构化的操作申请和 Provenance,而不是把上游输出直接当作新的高权限指令。

python 复制代码
OperationProposal(
    action="create_draft",
    arguments={...},
    requested_by="planning_agent",
    originating_sources=["external_web"],
    user_intent_id="task-123",
)

传播图需要同时记录内容和状态

仅记录文本流向仍然不够。多阶段 Agent 还会改变状态:

text 复制代码
Conversation State
Task Plan
Memory
Draft
Temporary File
Approval State
Tool Cache
Agent-to-Agent Message

任何后续会重新进入决策流程的状态,都可能成为新的 Source。Threat Model 需要明确状态的写入者、读取者、作用域、生命周期和原始 Provenance。

传播控制的重点

对抗复杂传播应在整个生命周期保留和使用信任信息。

text 复制代码
入口处
记录 Source 与攻击者控制程度。

转换时
派生内容继承原始 Provenance。

跨 Agent 时
传递结构化请求,而不是默认信任自然语言输出。

写入状态时
记录写入主体、来源、Scope 和 TTL。

到达 Sink 前
重新检查完整数据流和指令来源。
相关推荐
tyung17 分钟前
znet 数据编解码:字节流怎么变成消息
后端·网络协议·go
码视野41 分钟前
基于 Spring Boot + Vue3 的【高校化学实验室安全准入考试与危化品配伍排查系统】设计与实现(含PRD/三端高保真源码/大屏)
前端·人工智能·spring boot·后端·安全·vue3
LXMXHJ1 小时前
springboot项目测试
java·spring boot·后端·测试
叫我:松哥1 小时前
基于Flask的教师评教管理系统,支持学生和教师两种角色登录
数据库·后端·python·数据挖掘·flask
JuiceFS1 小时前
如何通过 S3 和 WebDAV 协议访问 JuiceFS?
运维·人工智能·后端
65岁退休Coder2 小时前
LangGraph v1.2.9 核心概念 & 流程控制
后端·python·langchain
程序员鱼皮2 小时前
爆火的《牛来》模型正式发布!DeepSeek 的排名又下降了。。
前端·后端·ai编程
灯澜忆梦2 小时前
【基于GO的Web开发15】gin路由和路由组
前端·后端·golang·gin
陈老老老板3 小时前
2026 Web Scraping 教程:用 Codex + Bright Data 构建 Agent 原生数据采集流程
后端