Security Assessment of DeepSeek Harness with A.I.G: Evaluating Resistance to Indirect Prompt Injection
Zonghao Ying, Xiangfan Wu, Huiyu Wu, Xing Zheng, Huangsheng Cheng, Xiaorong Shi, Jing Guo
cs.CR
2026-08-17
腾讯朱雀实验室用 AI-Infra-Guard 对 DeepSeek Harness 跑了 14560 次受控间接提示注入:整体完全成功率 5.6%,但文件模式下的隐藏 Unicode 通道达 25.5%,skills 通道 16.0%,输出型目标与真实工具动作成功率相差 14 倍。
用工具的 agent 经常要读用户没写过的东西:网页、邮件、文档、技能插件。这些内容是任务必需的,也可能夹带与用户指令竞争的恶意指令。模型一旦照做并调用了敏感工具,后果是真实的:发邮件、执行命令、转账。这就是间接提示注入(indirect prompt injection),与直接注入的区别在于恶意指令藏在数据里而不是用户消息里。
这篇报告问的问题很具体:DeepSeek Harness(DSH)这个开源插件式 agent 框架,在被投毒内容喂进来之后,真实运行时里有多少比例会走到敏感动作?之前的安全基准(InjecAgent、AgentDojo)测的是抽象任务集,这项工作把完整的载体、措辞矩阵压到一个未修改的真实 runtime 上。
评估用腾讯的 AI-Infra-Guard(A.I.G)驱动真实 DSH TypeScript runtime:不替换 agent loop、工具注册表、模型适配器和会话事件路径,通过适配器启动 npx tsx 驱动,接收 JSONL 会话事件,映射成 trace。六种源工具(网页抓取、文档读取、邮件读取、知识检索、技能加载、聊天消息)返回投毒内容,八种被追踪的汇点工具(发邮件、提交表单、执行命令、转账等)只记录调用与参数、不产生真实副作用。后端模型 deepseek-v4-flash。
矩阵规模:16 个间接内容通道 × 文本/文件两种载体模式 × 35 个 payload 目标 = 1120 个基础用例,套上 1 个未修改基线加 12 种攻击方法,共 14560 次受控执行。每个 trace 用两个判分器:RuleJudge(确定性规则,查污点是否到达工具结果、汇点是否被调、关键参数是否匹配)和 LLMJudge(语义判断,读完整 trace 给 FULL/PARTIAL/FAILURE)。
文件模式不是把文本粘进去,而是构造真实格式的载体(HTML、邮件、PDF 元数据、表格),再走解析提取路径。这个区别后面被证明是决定性的。
| 维度 | RuleJudge | LLMJudge |
| 全局完全成功率 | 5.6%(819/14560) | 5.3% |
| 部分服从 | 2.0% | 7.3% |
| 隐形 Unicode @文件模式 | 25.5% | - |
| 隐形 Unicode @文本模式 | 0.0% | - |
| skills 通道(文本/文件) | 14.3% / 16.0% | - |
| fake-completion @文本模式 | 16.6% | 17.0% |
| naive 基线 @文本模式 | 5.5% | 5.7% |
| 输出型 canary 目标 | - | 35.7% |
| 需汇点动作的目标 | - | 2.5% |
三条主要发现。
载体形态改变攻击面。隐形 Unicode 在文本模式下 0% 得手,文件模式下 25.5%(116/455 次)得手,因为只有真实文件表示和提取路径才会把隐藏字符送到模型眼前。用纯文本近似测试会完全漏掉这类漏洞。文件模式整体完全成功率 6.2% 也高于文本模式的 5.1%,记录到的汇点调用 387 次 vs 254 次。
输出服从与动作成功是两码事。只要求把 canary 字符串打进输出的目标,LLMJudge 判 35.7% 完全成功;要求真实调用敏感工具并匹配参数的目标只有 2.5%,差 14 倍。把两者混成一个「攻击成功率」会同时高估和低估风险。
规则命中需要语义校验。混淆攻击(obfuscation)在 RuleJudge 下 13.6% 完全成功,LLMJudge 只给 9.1%/8.8%,缺口是「机械信号出现了但 trace 并未证明 agent 完成了攻击意图」的情形。fake-completion(伪造任务已完成的上下文)两个判分器给分接近(16.6%/17.0%),是最强的攻击方法:流水线式措辞会改变模型对任务状态的理解。
对部署 agent 系统的人来说,这篇的实操价值是把防御焦点从「模型抗不抗提示词」移到三个具体位置。代码层面,DSH 的 tool result 会以 additionalContexts 形式直接进入模型上下文,任何控制返回内容的插件、技能、检索连接器都在模型可见输入的边界上;好消息是 DSH 暴露了单调 guard、pre-execute 监听、审批和沙箱钩子,部署可以也应该在敏感汇点前挂独立授权。管理层面,skills 通道 16% 的得手率把技能、工具描述、MCP 集成划进了提示注入威胁模型,该按代码类资产管理:来源、版本、权限审查。测试层面,改了提示词、解析器、模型或策略后应该重跑源到汇的回归矩阵,而不是做一次性检查。
方法论上,源-汇 trace 加双判分器的设计可以直接搬去测任何 agent 框架,A.I.G 和实验代码已开源。
作者自己标注的边界:所有汇点都是本地模拟,记录的调用代表「意图尝试动作」而非真实后果;百分比是该受控配置下的描述性测量,不是对 DSH 或任何模型普适的漏洞率。只测了一个模型后端(deepseek-v4-flash)、一个 commit(2026 年 8 月 13 日),换模型、换版本的迁移性未知。评估框架与被测目标分属腾讯与 DeepSeek 两家,跨厂商测试的动机需要读者自行权衡。防御措施(Spotlighting、StruQ 等提示边界方案)没有被对比评估,结论只指出控制点在哪、没测哪种防御实际有效。