prompt-poisoning-recovery · ZH · 2026-10-27

提示词注入劫持了聚合站上的 agent:怎么发现、怎么止损、怎么把这次运行救回来

当 LLM API 聚合站上的 agent 遭遇提示词注入攻击时,可能触发工具循环劫持等异常行为。本文提供按严重度分级的处置手册,帮助开发者从请求日志中识别攻击痕迹、快速隔离止损,并安全恢复运行,避免重复付费。

识别:请求日志中的工具循环劫持信号

当 agent 被提示词注入攻击后,最常见的表现是工具调用陷入异常循环。在聚合站的请求日志中,你可以观察到以下模式:

  • 同一工具被高频连续调用:同一个函数名在短时间内反复出现,且参数高度相似或完全一致。
  • 参数中出现外部可控内容:例如工具参数里包含了来自用户输入或网页抓取内容的片段。
  • 响应内容异常重复:模型返回的文本或 tool_calls 结构呈现固定模板,缺乏正常的推理变化。
  • 跨后端一致性缺失:如果同一 prompt 在不同后端(如 Claude、GPT)上表现差异巨大,可能说明某个后端对注入的抵抗力较弱。

这些信号可以按严重度分级:

  • 低:偶发的重复调用,但整体任务仍在推进。
  • 中:工具调用频率明显异常,但尚未影响其他用户或产生额外费用。
  • 高:循环持续超过预期步数,或开始调用敏感工具(如文件读写、网络请求)。

止损:隔离异常运行与阻断循环

一旦确认发生劫持,立即执行以下隔离措施:

  1. 暂停该 API key 的所有请求:在聚合站控制台中暂时禁用 key,防止攻击者继续利用。
  2. 终止当前 agent 会话:在客户端强制结束会话,并记录会话 ID 与相关请求日志。
  3. 检查工具权限:确认被循环调用的工具是否具有过高权限(如执行系统命令、访问外部 API),必要时在工具层临时禁用该工具。
  4. 清理上下文:从会话历史中移除可疑的注入内容,避免恢复运行时再次触发。

注意:隔离操作应尽量在聚合站层面完成,而不是仅依赖客户端,以确保所有后端请求都被阻断。

恢复:安全重启运行并避免重复付费

在隔离后,按以下步骤恢复运行:

  1. 审计日志:从聚合站导出本次攻击相关的请求记录,识别被重复调用的工具和产生的费用。聚合站通常按请求计费,你可以根据日志确认哪些请求由劫持循环产生。
  2. 重置会话状态:清除 agent 的短期记忆或对话历史,确保注入内容不被带入新运行。
  3. 使用同一 key 重启:在确认隔离措施生效后,重新启用 key,并启动新的会话。建议先以最小化工具集运行,观察是否再次出现异常。
  4. 费用控制:如果聚合站支持,可以为该 key 设置预算或速率限制,防止循环再次产生大量请求。对于已产生的重复费用,可联系聚合站客服说明情况,部分平台可能提供调整。

各后端可辨识的痕迹

不同后端对提示词注入的响应可能不同,留意以下痕迹:

  • Claude:可能更倾向于拒绝执行可疑指令,但在被绕过时,工具调用参数会包含明显的拼接痕迹。
  • GPT:可能更易陷入循环,日志中会出现大量结构相同的 tool_calls。
  • DeepSeek 等开源模型:可能对注入内容更敏感,响应中可能出现重复的指令回显。

这些痕迹有助于判断攻击来源和影响范围,但不应作为唯一依据。

预防建议

  • 在工具调用层增加参数校验和频率限制。
  • 对用户输入和外部内容进行严格的转义与隔离。
  • 定期审查聚合站日志,设置异常调用告警。