Quels modèles d'IA refusent le travail de sécurité

BenchmarksPar l'équipe SwarmAttacker chez JolocorpPublié 6 min de lectureMis à jour

Couverture en graphique à barres : taux de refus de 16 modèles d'IA sur des requêtes de sécurité offensive, deux proches de 100%, sept à 0%

Regarder la vidéo · 9:23

Vidéo

J'ai testé toutes les IA pour le hacking — Opus 5 a perdu

Taux de passage sur 411 requêtes de sécurité offensive signalées

Part des requêtes de chaque modèle qui sont passées. Les modèles à poids ouverts laissent tout passer ; les modèles Claude et OpenAI les plus stricts n'en laissent presque rien passer. Survolez une colonne pour voir la répartition des refus.

100%
Logo DeepSeek
DeepSeek V4 Pro
100%
Logo DeepSeek
DeepSeek V4 Flash
100%
Logo Z.ai
GLM-5.2
100%
Logo OpenAI
gpt-oss-120b
100%
Logo MiniMax
MiniMax M3
100%
Logo NVIDIA
Nemotron Ultra
100%
Logo Moonshot AI
Kimi K3
99.5%
Logo OpenAI
GPT-5.6 Luna
98.3%
Logo OpenAI
GPT-5.4
97.5%
Logo Anthropic
Claude Sonnet 5
96%
Logo OpenAI
GPT-5.6 Terra
96%
Logo OpenAI
GPT-5.5 · 26 juil.
94%
Logo Anthropic
Claude Opus 4.8
53.8%
Logo OpenAI
GPT-5.5 · 15 juin
14%
Logo Anthropic
Claude Fable 5
3.2%
Logo OpenAI
GPT-5.6 Sol
0%
Logo Anthropic
Claude Opus 5
A accompli la tâcheRefusé par le modèle lui-mêmeBloqué par un filtre de la plateforme

Pointez un agent de pentest autonome vers une cible réelle et il envoie des milliers de requêtes qu'un filtre de sécurité ne peut pas distinguer proprement d'une attaque. SwarmAttacker se fait refuser sur beaucoup d'entre elles, c'est pourquoi la gestion des refus a fini par devenir l'élément le plus important du système. Cela nous a aussi laissé un actif inhabituel : un corpus de 411 requêtes réelles que notre modèle de production a effectivement refusées, tirées directement d'exécutions de benchmark en conditions réelles contre la suite de sécurité web XBOW. Ce ne sont pas des prompts synthétiques. Chacune est le tour exact, en pleine mission, où un filtre de contenu a bloqué un agent en train d'exploiter une application.

Nous avons donc posé une question simple : rejouer ces mêmes 411 requêtes à travers seize modèles frontière et à poids ouverts, et voir qui les rejette. La métrique est le taux de rejet, la part des requêtes qu'un modèle a soit refusées par écrit, soit vu bloquées par un filtre de la plateforme.

Le clivage est net. Deux modèles frontière fermés, Claude Opus 5 et GPT-5.6 Sol d'OpenAI, rejettent presque tout : 100 % et 96.8 %. Et l'ensemble des modèles à poids ouverts, DeepSeek V4, GLM-5.2, gpt-oss-120b, MiniMax M3, Nemotron Ultra, Kimi K3, n'en refuse aucune. Pas une seule requête sur 411, pour chacun d'eux.

100 %
rejetées par Claude Opus 5
96.8 %
rejetées par GPT-5.6 Sol
0 %
pour chaque modèle à poids ouverts

Ce n'est pas une histoire de laboratoires occidentaux prudents contre laboratoires ouverts imprudents. C'est plus précis que cela. Le refus cyber agressif est concentré dans une poignée de modèles individuels, Opus 5, Sol, tandis que leurs propres frères se comportent de façon complètement différente. GPT-5.4, GPT-5.6 Terra et GPT-5.6 Luna d'OpenAI se situent tous à 4 % ou moins. Le refus est dans le modèle, pas chez l'éditeur.

Chaque colonne est une exécution complète des 411 requêtes, répartie en trois. Le vert est la part que le modèle a simplement faite : il a accompli la tâche. L'ambre est le modèle qui refuse avec ses propres mots. Le rouge est un filtre de la plateforme qui bloque la requête avant même que le modèle ne réponde. Lu ainsi, le champ des poids ouverts est un mur de vert uni, et les deux refuseurs frontière sont un mur de rouge. Parmi les modèles stricts, le mécanisme est le même : Sol, Opus 5, Fable 5, Terra et GPT-5.5 en production sont presque entièrement des blocages rouges de plateforme, tandis que GPT-5.4 et Luna ne montrent qu'un filet d'ambre, aucun filtre, juste le modèle lui-même qui décline. Seuls Opus 4.8 et Sonnet 5 mélangent les deux. Survolez une colonne pour la répartition exacte.

Le même modèle a refusé 46 % un jour et 4 % le lendemain

La découverte la plus inconfortable concerne GPT-5.5, le modèle qui a généré ce corpus au départ, ce qui explique pourquoi il apparaît deux fois dans le graphique ci-dessus. En production le 15 juin, l'exécution qui a produit le corpus, il a bloqué 190 des 411, soit 46.2 %, chacun un blocage de la politique cyber de la plateforme. Rejouez les prompts identiques à travers le même modèle le 26 juillet et le taux de rejet s'effondre à 4 %. Mêmes poids, mêmes prompts, six semaines d'écart.

C'est pourquoi les deux sont datés et affichés côte à côte : le chiffre n'est pas une propriété fixe du modèle. Qu'une requête soit bloquée dépend fortement du chemin de service, du contexte environnant et de ce à quoi ressemblait le filtre ce jour-là, il n'a donc de sens qu'avec une date attachée. Un corpus existe parce que GPT-5.5 a refusé ces requêtes en juin, et pourtant les rejouer en juillet reproduit à peine le refus. Pour quiconque construit par-dessus un filtre de sécurité, ce non-déterminisme est le vrai casse-tête : vous ne pouvez pas prédire, requête par requête, si le même modèle vous aidera.

À quel moment d'une exécution les refus se déclenchent-ils vraiment ?

Le corpus montre aussi quand, dans une exécution, une requête est signalée, et ce n'est pas là où vous le devineriez. Le modèle refuse rarement une question posée à froid. Deux fois sur trois, il réagit à ce qu'un outil vient de lui renvoyer.

Ce qui se passait au moment où une requête a été signalée

Sur l'ensemble des 411 tours signalés. Le blocage se déclenche juste après qu'une sonde a fait remonter quelque chose, pas sur une instruction nouvelle.

67.2%
Sortie d'outil
16.3%
Réflexion du planner
9%
1re étape du spécialiste
6.1%
Worker lancé
1.5%
Étape de reconnaissance

67 % des signalements tombent juste après une sortie d'outil, l'agent vient de récupérer un mot de passe, une base de données, un fichier de configuration ou un flag{…}, et c'est l'étape suivante qui déclenche le filtre. La découverte est le déclencheur. C'est aussi pourquoi vous ne pouvez pas réduire ces transcriptions pour économiser des tokens en coupant la sortie d'outil : le secret exfiltré est précisément ce qui a causé le blocage.

Ce que cela signifie pour quiconque construit un outil de sécurité

Si vous construisez un outil de sécurité autorisé, le choix du modèle n'est pas une erreur d'arrondi, c'est la différence entre un système qui fonctionne et un système qui refuse la moitié de son propre travail. Les modèles à poids ouverts feront le travail sans se plaindre. Parmi les modèles fermés, l'écart au sein d'un même éditeur est plus grand que l'écart entre éditeurs, et le comportement de blocage est assez instable pour qu'un benchmark soit la seule façon honnête de savoir où se situe un modèle donné.

C'est pourquoi SwarmAttacker tourne sur GPT-5.4 comme modèle principal résistant aux refus et traite la gestion des refus comme un composant de premier ordre plutôt que comme une réflexion après coup. Quand le filtre vous rejette sur deux tiers de vos requêtes à l'instant où vous trouvez quelque chose, l'agent autour du modèle doit être construit pour s'y attendre.

Méthode : 411 requêtes que notre modèle de production a refusées et qui ont survécu à une nouvelle tentative sur le même modèle, rejouées une fois par modèle (GPT-5.5 est montré à deux dates, le 15 juin et le 26 juillet). Claude Fable 5 est une exécution agentique avec outils activés sur un échantillon de 40 requêtes, où sa barrière cyber se déclenche bien plus que lors d'un appel simple sans outils. Le taux de rejet compte les refus et les blocages de plateforme sur les requêtes ayant atteint le modèle ; les erreurs de transport sont exclues. Les réponses complètes ont été conservées et auditées indépendamment pour détecter les refus manqués.