腾讯对 DeepSeek Harness 注入 14560 次攻击:文件隐藏字符得手 25.5%

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 元数据、表格),再走解析提取路径。这个区别后面被证明是决定性的。

结果

维度RuleJudgeLLMJudge
全局完全成功率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 等提示边界方案)没有被对比评估,结论只指出控制点在哪、没测哪种防御实际有效。

术语

原文与代码

相关论文

全部论文解读