Pourquoi la fusion de zn surpasse les garde-fous zero-shot contre l'injection de prompt : résultats du benchmark v1.1
Toute passerelle d'agents qui touche aux appels d'outils finit par devoir répondre à la même question : quelle est la qualité de votre détection d'injection de prompt, mesurée sur des données que le fournisseur n'a ni entraînées ni ajustées ? Cet article publie nos chiffres et la méthodologie qui les sous-tend. Aucun superlatif au-delà de ce que les données permettent.
Le benchmark
Le benchmark v1.1 est une suite figée de 217 vecteurs : 138 vecteurs d'attaque (injection directe d'instructions, contournements de type jailbreak et charges utiles qui traversent les contextes) et 79 vecteurs bénins (flux de travail ordinaires de développeurs, qui doivent passer sans modification). La suite est versionnée dans le dépôt, et chaque résultat ci-dessous a été obtenu en faisant passer les mêmes fichiers dans chaque système, sans réglage des prompts ou des seuils par système après avoir vu les résultats.
Deux points de fonctionnement sont présentés pour chaque détecteur :
- FPR : taux de faux positifs sur les 79 vecteurs bénins.
- FNR : taux de faux négatifs sur les 138 vecteurs d'attaque.
Le point méthodologique que nous jugeons le plus important a été fixé avant l'évaluation : la règle du seuil identique. Chaque système est évalué avec un seul seuil de décision, appliqué de la même manière dans toute la suite. Nous ne réglons pas les seuils par système pour avantager ses points forts, et nous ne relançons pas avec d'autres coupures jusqu'à ce qu'un chiffre nous convienne.
Nos chiffres principaux
Le détecteur fusionné de zn, l'ensemble livré aujourd'hui dans la passerelle, mesure :
{
"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."
]
}
En clair : environ 1 appel bénin sur 79 est signalé, et environ 1 vecteur d'attaque sur 11 passe. Ce sont les chiffres du chemin fusionné précisément (détection sacrificielle et heuristiques qui votent ensemble), et non ceux d'un composant isolé.
Méthodologie de la figure : chaque barre indique le FNR sur les mêmes 138 vecteurs d'attaque, à un seul point de fonctionnement. La barre en pointillés reproduit une affirmation publiée sur la distribution d'évaluation de Meta ; elle est dessinée en contour pour distinguer visuellement l'affirmation de la mesure. Les barres pleines sont nos mesures sous la règle du seuil identique décrite ci-dessus, sans réglage par système. Les détecteurs sans matrice de confusion publiée sur cette suite sont exclus de la figure plutôt qu'estimés. Chaque chiffre est reproductible à partir de la suite présentée dans la section suivante.
Ce que nous avons constaté en testant PromptGuard-2
Nous avons évalué PromptGuard-2 de Meta comme signal candidat. Meta annonce environ 97,5 % de rappel pour un taux de faux positifs de 1 % pour cette classe de modèles. Cette affirmation est peut-être exacte sur la distribution d'évaluation interne de Meta.
Elle ne se transpose pas à la nôtre. Sur le benchmark v1.1, PromptGuard-2 mesure environ 47 % de rappel à notre point de fonctionnement fixe, et environ 21 % sous la règle plus stricte du seuil identique, où son score doit franchir la même barre que tous les autres systèmes de la suite. Ces deux chiffres sont très éloignés de la valeur publiée.
Il s'agit d'un constat de non-transposition d'une affirmation, et non d'une accusation. Les benchmarks publiés reflètent leurs propres distributions ; les corpus d'injection diffèrent beaucoup par la densité de paraphrases, le mélange de langues et la quantité de contexte bénin qui entoure chaque charge utile. Notre suite penche vers un trafic réaliste d'agents multitours, qui semble un cas plus difficile pour ce modèle. Quiconque déploie PromptGuard-2 devrait reproduire les deux évaluations sur sa propre distribution avant de se fier à l'un ou l'autre jeu de chiffres.
Un hommage là où les données l'exigent : pg2-86m reste le concurrent zero-shot le plus fort que nous ayons testé. Son segment jailbreak dédié affiche un FNR de 8,33 %, meilleur que celui de certains systèmes commerciaux que nous avons testés, et rappelle utilement que « zero-shot » ne signifie pas « faible ». C'est dans les catégories d'injection hors jailbreak que son rappel mesuré s'effondre par rapport aux affirmations ; la fusion de zn offre une couverture plus régulière sur l'ensemble des 138 vecteurs d'attaque.
Reproduire l'exécution
La suite est livrée avec la passerelle, afin que vous puissiez la pointer vers votre propre déploiement plutôt que de vous fier aux nôtres :
# 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
Le rapport contient un verdict par vecteur, avec les scores des détecteurs attachés. Les désaccords avec nos agrégats sont donc vérifiables vecteur par vecteur, au lieu d'être débattus de façon globale.
Ce que nous ne revendiquons PAS
Pour rester honnêtes, trois choses que ces chiffres n'établissent pas :
- Une supériorité universelle. Nous avons testé les systèmes à notre disposition sur une seule distribution de 217 vecteurs. D'autres suites classeront les systèmes différemment, et nous nous y attendons.
- La robustesse adversariale. Ce sont des vecteurs statiques. Des attaquants adaptatifs capables d'interroger le détecteur changent complètement le problème.
- PromptGuard-2 est mauvais. Le constat porte sur la non-transposition, propre à une distribution, d'une affirmation de rappel précise, mesurée sous un protocole de seuil précis. Sur la distribution de Meta, leurs chiffres pourraient se reproduire exactement.
Pourquoi la fusion
Les détecteurs à signal unique présentent des modes de défaillance corrélés à leur distribution d'entraînement. zn fusionne plusieurs signaux indépendants (détection sacrificielle, heuristiques structurelles et scoring par modèle) parce que des erreurs non corrélées se divisent au lieu de s'additionner : quand le classifieur manque une famille de paraphrases, la couche heuristique perçoit toujours l'anomalie de forme de la charge utile. Le FNR de 9,42 % à 1,27 % de FPR est ce que cette division permet d'obtenir sur cette suite.
Si vous faites tourner des agents face à du contenu non fiable, exécutez la suite vous-même. Les chiffres ci-dessus sont reproductibles à partir du dépôt, et nous les mettons à jour à chaque montée de version du benchmark.