高 风险 子 集 上 攻击 成功 率 从 6.00 % 降到 1.69 %: 腾 讯 朱雀 在 编码 代理 上 回归 九 种 防御
pi 编码代理,模型匿名。9 组高风险组合上,九种防御把配对成功率从 6.00% 降到 1.69%,相对下降 71.8%,没有一种降到 0。离线检测误报为 0,召回最高 17.78%。

本文目录
高风险子集上攻击成功率从 6.00% 降到 1.69%:腾讯朱雀在编码代理上回归九种防御
腾讯朱雀实验室的预印本 pikit: A Composable Toolkit for Indirect Prompt Injection Research and Evaluation。arXiv 为 2609.36817v1。HTML 水印和 abs 页提交日都是 2026 年 9 月 29 日。许可证是 CC BY 4.0。作者是 Zonghao Ying、Xiangfan Wu、Bo Yang、Huiyu Wu、Xing Zheng、Huangsheng Cheng、Xiaorong Shi、Jing Guo,页面单位写 Tencent Zhuque Lab。
pikit 是一套把攻击包装、投递通道和防御拆开登记、再拼成矩阵的间接提示注入评测工具。间接提示注入指指令不写在用户消息里,而藏在 Agent 会去读的外部内容里。这篇的实测对象不是上一篇的 DeepSeek Harness,而是 pi(一个开源的自主编码 Agent),后面接的是匿名化的大模型,跑在近似生产的环境里。模型名字没有公开。
只回归先前矩阵里的高风险组合
论文把更早的 DeepSeek Harness 评估写成对照:那边是 13 种攻击、16 个通道、2 种载体、35 个载荷的全矩阵。作者认为成功率集中在少数攻击-通道组合上,所以这篇防御回归只取基线筛出来的前 9 组攻击-通道-模式。每一组都跑全部 35 个载荷,再对上 9 种预防型防御。计划中的配对是 \(9\times 35\times 9=2835\)。实际完成 2832,完成率 99.89%。每条加了防御的运行用 baseline_run_id 对上同一条基线运行。
攻击成功率定义为满分次数除以有效运行数。有效运行去掉超时和执行错误。满分可以由确定性的规则裁判给出,也可以由可选的语义裁判给出。表 1 没有把两种裁判拆成两列,读的时候不知道 6.00% 里有多少只被其中一个裁判算进去。
九种防御都降了,没有一种降到 0
表 1 的基线成功率按每条防御自己配上的运行来算,所以样本数不完全一样时,基线也不一样。
| 防御 | 样本数 | 基线成功率 | 防御后成功率 |
|---|---|---|---|
| few_shot_warning | 315 | 6.03% | 0.32% |
| instruction_hierarchy | 315 | 6.03% | 0.32% |
| spotlighting | 314 | 6.05% | 0.96% |
| self_reminder | 314 | 5.73% | 1.27% |
| instructional | 315 | 6.03% | 1.90% |
| delimiters | 315 | 6.03% | 1.90% |
| retokenization | 315 | 6.03% | 2.22% |
| sandwich | 315 | 6.03% | 3.17% |
| random_sequence_enclosure | 314 | 6.05% | 3.18% |
| 全部防御 | 2817 | 6.00% | 1.69% |
九行样本数加起来是 2832,和完成数一致。合计行却写成 2817,少 15 次,论文没有解释这 15 次为什么不进合计。合计从 6.00% 降到 1.69%,相对下降 \((6.00-1.69)/6.00=71.8\%\)。few_shot_warning 和 instruction_hierarchy 降到 0.32%。sandwich 和 random_sequence_enclosure 仍在 3.17% 和 3.18%。没有一种是 0。self_reminder 的基线是 5.73%,同为 314 次的 spotlighting 基线是 6.05%,说明少掉的那一次不是随机缺跑,配上的运行集合本身不同。
论文的解释是:把指令优先级写明的防御,在这组高风险样本上强于只加语法边界的防御。这个排序被限定在当前 Agent、这个匿名模型、这批载荷和这 9 组组合里。
离线检测:误报是 0,召回最高 17.78%
另一组不调用模型。检测器在内容进模型之前看原始产物。语料 630 条,配平:315 条来自高风险矩阵的受污产物,315 条良性对照。
| 检测器 | 精确率 | 召回率 | F1 | 误报率 |
|---|---|---|---|---|
| PatternDetector | 0.00% | 0.00% | 0.00% | 0.00% |
| LengthDetector | 100% | 11.11% | 20.00% | 0.00% |
| RepetitionDetector | 100% | 17.78% | 30.19% | 0.00% |
三个检测器的误报率都是 0。PatternDetector 一条受污样本都没报出来。LengthDetector 召回 11.11%,论文写成标出 35 条。RepetitionDetector 召回 17.78%,标出 56 条。315 乘 11.11% 等于 35.0,315 乘 17.78% 等于 56.0,和条数对齐。论文据此说静态签名可以滤掉一部分量大的简单样本,不能单独当边界。
这些数不能被读成什么
6.00% 和 1.69% 是 9 组高风险组合上的配对结果,不是 13 乘 16 乘 2 乘 35 的全矩阵成功率,也不是 DeepSeek Harness 那篇里的 5.6%。全矩阵的大部分组合论文自己说没有成功注入。只测高风险子集,会把防御前后的差放大到这 9 组上,不能倒推其余组合。
71.8% 是相对下降,不是绝对下降。绝对差是 4.31 个百分点。防御后仍有 1.69%。合计样本 2817 和九行之和 2832 对不上。表上的成功率没有区分规则裁判和语义裁判。模型匿名,换一个模型这些百分比没有对照。2832 次完成之外的 3 次计划运行,失败原因没有单列。
检测器的 100% 精确率建立在这 630 条配平语料上,误报为 0 不表示换一批良性文档仍然不误报。召回不超过 17.78%,漏掉的仍是大多数。
讨论里还写:新注册一个通道就会自动和已有的 13 种攻击、2 种模式、9 种防御组合成新格子。那是工具的组合方式,不是这次已经跑完的实验。这次跑完的就是上面两张表。许可证是 CC BY 4.0。这篇只复述评测协议和文中数字。
出处:腾讯朱雀实验室,Zonghao Ying 等,pikit: A Composable Toolkit for Indirect Prompt Injection Research and Evaluation,2026-09-29,https://arxiv.org/abs/2609.36817
觉得有用,转给同事
微信扫码
用微信扫一扫,在手机上打开后即可转发。