为什么 zn 的融合方案优于零样本提示注入防护:benchmark v1.1 结果

zn9 分钟阅读

任何接触工具调用的智能体网关,迟早都要回答同一个问题:你的提示注入检测效果究竟如何?这个问题需要用供应商既未训练也未调优过的数据来衡量。本文公布我们的数字以及得出这些数字的方法。除非数据支持,我们不使用任何夸张的表述。

基准测试

benchmark v1.1 是一个固定的套件,包含 217 个向量:138 个攻击向量(直接指令注入、越狱式覆盖,以及跨上下文的载荷)和 79 个良性向量(必须原样通过的常规开发者工作流)。该套件在仓库中进行了版本管理。下文所有结果,都是将相同的文件输入每个系统得到的,并且在看到结果之后,没有再对每个系统的提示或阈值进行调整。

每个检测器都报告两个运行点:

  • FPR:在 79 个良性向量上的误报率。
  • FNR:在 138 个攻击向量上的漏报率。

我们认为最重要的方法论要点在评估前就已确定:统一阈值规则。每个系统都在同一个决策阈值下评估,并且在整个套件中以相同方式应用。我们不会为了让某个系统的优势更明显而针对其单独调整阈值,也不会在数字看起来不错之前换用不同的截断值反复运行。

我们的主要数据

zn 的融合检测器(即目前网关中发布的集成方案)测得:

{
  "suite": "prompt-injection-benchmark-v1.1",
  "vectors": { "total": 217, "attack": 138, "benign": 79 },
  "fused_detector": {
    "false_positive_rate": 0.0127,
    "false_negative_rate": 0.0942,
    "threshold_rule": "identical-threshold"
  },
  "notes": [
    "FPR computed over all 79 benign vectors.",
    "FNR computed over all 138 attack vectors.",
    "No per-vector or per-system threshold tuning."
  ]
}

直白地说:大约 每 79 个良性调用中有 1 个被标记,大约 每 11 个攻击向量中有 1 个漏过。这些是融合路径本身的数字(牺牲性检测与启发式规则共同投票),而不是任何单一组件的数字。

在同一 217 个向量上,误报率(FPR)不高于 1.4% 的运行点处漏报率(FNR)的水平条形图。虚线轮廓的条形表示 Meta 针对 PromptGuard-2 模型类别在其自有分布上宣称的约 2.5% FNR,并标注为宣称值;实心条形表示我们测得的 PromptGuard-2 在统一阈值规则下的约 79% FNR;绿色实心条形表示 zn 融合检测器的 9.42% FNR。

图表方法说明:每个条形都报告同一 138 个攻击向量在单一运行点上的 FNR。虚线条形复现了 Meta 自身评估分布上的已发表宣称,以轮廓形式绘制,以便在视觉上将宣称与测量区分开;实心条形是我们在上文所述统一阈值规则下、未对系统做任何调整的测量结果。在本套件上没有已发表混淆矩阵的检测器不纳入图表,而不做估算。每个数字都可以按下一节的说明从该套件中复现。

测试 PromptGuard-2 时的发现

我们将 Meta 的 PromptGuard-2 作为候选信号进行了评估。Meta 报告该模型类别在 1% 误报率下约 97.5% 的召回率。这一宣称在 Meta 的内部评估分布上可能确实成立。

但它没有迁移到我们的分布上。在 benchmark v1.1 上,PromptGuard-2 在我们固定的运行点测得约 47% 的召回率;在更严格的统一阈值规则下(其分数必须达到套件中所有其他系统所要求的同一标准),则约为 21%。这两个数字都远低于已发表的数值。

这是一项关于宣称不可迁移的发现,而非指控。已发表的基准反映的是各自的分布;注入语料库在改写密度、语言混杂程度以及每个载荷周围良性上下文的多少上差异很大。我们的套件更偏向真实的多轮智能体流量,这对该模型而言似乎是更难的测试。任何打算部署 PromptGuard-2 的人,在相信任何一组数字之前,都应当在自己的数据分布上复现这两项评估。

数据所要求的客观评价是:pg2-86m 仍然是我们测试过的最强零样本竞争者。它的专用越狱子集 FNR 为 8.33%,优于我们测试过的一些商业系统,也提醒我们:"零样本"并不等于"弱"。它的实测召回率相对于宣称值大幅下降,是在非越狱的注入类别上;而 zn 的融合方案在全部 138 个攻击向量上的覆盖更为稳定。

复现运行过程

该套件随网关一同提供,因此你可以将它指向自己的部署,而不必完全依赖我们的结果:

# Run the v1.1 suite against a gateway endpoint.
# Writes per-vector verdicts plus aggregate FPR/FNR to the report file.
zn bench run --suite ./benchmarks/prompt-injection-v1.1 \
  --target http://localhost:8080/mcp \
  --report out/bench-v1.1.json

报告包含每个向量的判定结果,并附带检测器分数,因此任何与我们汇总数字的分歧都可以逐向量审计,而不是只在汇总层面争论。

我们不主张的内容

为保持诚实,以下三点是这些数字无法证明的:

  1. 普遍优越性。 我们在一个 217 向量分布上测试了我们能获得的系统。其他套件很可能会给出不同的排名,我们对此也有预期。
  2. 对抗鲁棒性。 这些是静态向量。能够查询检测器的自适应攻击者会使问题完全不同。
  3. PromptGuard-2 很差。 这一发现是:在特定的阈值协议下测得,某一项具体召回率宣称在特定分布上不可迁移。在 Meta 的分布上,他们的数字可能会被完全复现。

为什么采用融合

单一信号检测器的失效模式与其训练分布相关。zn 融合了多个相互独立的信号(牺牲性检测、结构启发式规则和基于模型的评分),因为不相关的错误会相互分担而不是叠加:当分类器漏掉某一类改写时,启发式层仍然能看到载荷形态上的异常。在这个套件上,1.27% 的 FPR 对应 9.42% 的 FNR,正是这种分担所带来的结果。

如果你让智能体处理不可信内容,请自行运行该套件。以上数字可以从仓库中复现,每次升级基准版本时我们都会更新它们。

Share