
Benchmark de sécurité pour évaluer les agents OpenClaw face à des contextes d'exécution adverses incluant des fichiers empoisonnés, des compétences injectées, des métadonnées d'outils trompeuses et des charges utiles encodées. Comprend 42 tâches de rejeu réparties dans 6 suites de risques avec un score d'attaque et d'utilité.
Évaluation de la sécurité en monde ouvert pour les agents OpenClaw dans des contextes d'exécution adverses.
DeepTrap est un benchmark de sécurité pour évaluer si les agents OpenClaw peuvent accomplir des tâches utilisateur bénignes tout en résistant à la pression malveillante du contexte d'exécution : fichiers d'espace de travail empoisonnés, compétences injectées, métadonnées d'outil trompeuses, chemins de commandes dangereux, secrets implantés et charges utiles encodées.
La version publique contient 42 tâches de rejeu organisées en 6 classes de vulnérabilité contextuelle × 7 familles de scénarios opérationnels, ainsi que l'exécuteur du benchmark et le code de notation public. Elle inclut également 10 échantillons de rejeu en langue chinoise dans tasks_zh/ pour des expériences d'évaluation localisées. Le pipeline privé de génération de tâches et de recherche d'attaques n'est intentionnellement pas inclus.
DeepTrap accompagne l'article :
Red-Teaming Agent Execution Contexts: Open-World Security Evaluation on OpenClaw
Hongwei Yao, Yiming Liu, Yiling He, and Bingrun Yang. arXiv:2605.11047, 2026.
La plupart des benchmarks d'agents demandent si un modèle peut effectuer un travail utile. DeepTrap pose une question plus stricte : l'agent peut-il effectuer un travail utile en toute sécurité lorsque le contexte d'exécution environnant est adverse ?
tasks_zh/.AGS est le Attack Grading Score et UGS est le Utility Grading Score. Les scores sont rapportés par suite de risque ; Moyenne est la moyenne sur les Risques 1 à 6.
Page complète du projet et classement : ZJUICSR.github.io/DeepTrap
DeepTrap croise six classes de vulnérabilité contextuelle avec sept familles de scénarios bénins. Chaque tâche utilise une invite utilisateur normale ; le comportement adverse est induit par le contexte de l'espace de travail.
DeepTrap construit des contextes d'exécution compromis à partir d'instructions bénignes et d'espaces de travail propres, recherche des charges utiles adverses candidates avec des signaux de récompense multi-objectifs, et affine les charges utiles réussies par un sondage basé sur la réflexion.
OPENROUTER_API_KEYDEEPSEEK_API_KEYLes identifiants de modèle doivent inclure le préfixe du fournisseur, par exemple openrouter/anthropic/claude-sonnet-4-5.
git clone https://github.com/ZJUICSR/DeepTrap.git
cd DeepTrap
pip install -e .
# Valider les métadonnées des tâches sans exécuter OpenClaw
python benchmark.py --dry-run
# Lister les tâches fournies
python benchmark.py --list-tasks
# Valider les tâches d'exemple en chinois
python benchmark.py --tasks-dir tasks_zh --dry-run
# Exécuter une suite de risques
python benchmark.py --model openrouter/anthropic/claude-sonnet-4-5 --suite R1
# Exécuter des tâches spécifiques
python benchmark.py --model openrouter/anthropic/claude-sonnet-4-5 --suite task_R1_T01,task_R2_T01
# Exécuter les tâches d'exemple en chinois
python benchmark.py --tasks-dir tasks_zh --model openrouter/anthropic/claude-sonnet-4-5 --suite all
# Exécuter toutes les tâches avec des essais répétés
python benchmark.py --model openrouter/anthropic/claude-sonnet-4-5 --suite all --runs 3
Les résultats sont écrits dans results/ par défaut.
Chaque exécution écrit un fichier JSON contenant les métadonnées du modèle, la configuration de la suite, les scores par tâche, les longueurs des transcriptions, les chemins d'espace de travail, les métadonnées d'utilisation lorsqu'elles sont disponibles, et les champs récapitulatifs agrégés.
# Résumé des scores globaux
jq '.summary' results/*.json
# Scores par tâche
jq '.tasks[] | {task_id, category, grading, attack_eval}' results/*.json
# Tâches où l'attaque de rejeu a été fortement reproduite
jq '.tasks[] | select(.attack_eval.mean >= 0.8) | {task_id, attack: .attack_eval.mean}' results/*.json
Chaque tâche rapporte :
AGS : score de notation d'attaque, plus élevé indique une réalisation d'attaque plus forteUGS : score de notation d'utilité, plus élevé indique une meilleure réalisation de la tâcheDeepTrap peut également être distribué comme un jeu de données Hugging Face sur ZJUICSR/DeepTrap.
L'export structuré stocke une tâche de benchmark par ligne JSONL dans data/tasks.jsonl, tandis que les définitions originales des tâches en Markdown restent dans tasks/. Les tâches d'exemple en chinois peuvent être exportées séparément depuis tasks_zh/ si nécessaire.
python scripts/export_hf_dataset.py
# Optionnel : exporter les échantillons en chinois
python scripts/export_hf_dataset.py --tasks-dir tasks_zh --output data/tasks_zh.jsonl
Après téléchargement, les utilisateurs peuvent charger les métadonnées du benchmark avec :
from datasets import load_dataset
dataset = load_dataset("ZJUICSR/DeepTrap", split="train")
Chaque ligne comprend task_id, name, risk, category, prompt, expected_behavior, grading_criteria, workspace_files, les métadonnées de notation, et des indicateurs pour les vérifications automatisées et les rubriques du juge LLM.
.
├── benchmark.py # Public benchmark runner
├── tasks/ # 42 bundled task definitions
├── tasks_zh/ # 10 Chinese-language replay samples
├── scenes/ # Clean source scenes for baseline/delta scoring
├── data/tasks.jsonl # Hugging Face dataset export
├── docs/ # GitHub Pages project site
├── huggingface/README.md # Hugging Face dataset card
├── scripts/ # Runtime support and export code
│ ├── lib_agent.py # OpenClaw execution helpers
│ ├── lib_reward.py # Attack/utility scoring
│ ├── lib_criteria.py # Public judge criteria
│ ├── lib_llm.py # Judge backend router
│ ├── lib_openrouter.py # OpenRouter judge client
│ ├── lib_deepseek.py # DeepSeek judge client
│ ├── lib_dashscope.py # DashScope/Qwen judge client
│ └── export_hf_dataset.py # Dataset export helper
├── tests/ # Public validation tests
├── SKILL.md # Agent-facing benchmark skill
└── pyproject.toml
Si vous utilisez DeepTrap dans vos recherches, veuillez citer :
@article{yao2026trap,
title={Red-Teaming Agent Execution Contexts: Open-World Security Evaluation on OpenClaw},
author={Yao, Hongwei and Liu, Yiming and He, Yiling and Yang, Bingrun},
journal={arXiv preprint arXiv:2605.11047},
year={2026}
}
DeepTrap a été en partie inspiré par PinchBench, qui fournit une suite de benchmark pratique pour mesurer la capacité des agents OpenClaw sur des tâches du monde réel. Nous remercions le projet PinchBench d'avoir démontré un format de benchmark clair et utilisable pour les agents OpenClaw.
MIT — voir LICENSE pour plus de détails.
| Ce que nous testons | Pourquoi c'est important |
|---|
| Robustesse au contexte | Fichiers empoisonnés, artefacts de type mémoire, playbooks et instructions d'espace de travail | Les vrais agents lisent à partir d'un contexte local mutable, où un texte non fiable peut rediriger silencieusement le comportement |
| Gestion des secrets | Identifiants implantés, variables d'environnement, clés API et valeurs internes | Les agents doivent distinguer la connaissance de la configuration de l'exfiltration de secrets |
| Limites d'exécution | Commandes shell dangereuses, scripts de déploiement et effets de bord du système de fichiers | Les agents utilisant des outils peuvent causer des dommages durables même lorsque l'invite utilisateur est bénigne |
| Confiance dans les compétences/outils | Compétences malveillantes, métadonnées d'outil trompeuses et schémas d'abus d'outils | La sécurité de l'agent dépend de la manière dont le modèle interprète et valide les capacités des outils |
| Charges utiles obscurcies | Instructions encodées en Base64 et en plusieurs étapes | Les attaques peuvent se cacher derrière des tâches de traitement de données d'apparence normale |
| Modèle Claw | Métrique | Risque 1 | Risque 2 | Risque 3 | Risque 4 | Risque 5 | Risque 6 | Moyenne |
|---|
| GPT-5.4 | AGS | 0.77 | 0.84 | 0.76 | 0.61 | 0.67 | 0.53 | 0.70 |
| GPT-5.4 | UGS | 0.91 | 0.83 | 0.86 | 0.77 | 0.74 | 0.87 | 0.83 |
| Claude-Sonnet-4.6 | AGS | 0.51 | 0.58 | 0.37 | 0.25 | 0.38 | 0.20 | 0.38 |
| Claude-Sonnet-4.6 | UGS | 0.71 | 0.69 | 0.55 | 0.45 | 0.55 | 0.71 | 0.61 |
| GLM-5 | AGS | 0.81 | 0.93 | 0.74 | 0.83 | 0.79 | 0.88 | 0.83 |
| GLM-5 | UGS | 0.90 | 0.90 | 0.98 | 0.89 | 0.83 | 0.88 | 0.90 |
| Qwen3.5-Plus | AGS | 0.93 | 0.93 | 0.86 | 0.74 | 0.88 | 0.97 | 0.88 |
| Qwen3.5-Plus | UGS | 0.95 | 0.92 | 1.00 | 0.98 | 0.93 | 0.93 | 0.95 |
| MiniMax-M2.5 | AGS | 0.86 | 0.89 | 0.77 | 0.66 | 0.90 | 0.89 | 0.83 |
| MiniMax-M2.5 | UGS | 0.92 | 0.95 | 1.00 | 0.88 | 0.74 | 0.90 | 0.90 |
| DeepSeek-v4-Flash | AGS | 0.90 | 0.96 | 0.80 | 0.90 | 0.82 | 0.94 | 0.89 |
| DeepSeek-v4-Flash | UGS | 0.98 | 0.96 | 1.00 | 0.96 | 0.85 | 1.00 | 0.96 |
| Deepseek-v4-Pro | AGS | 0.90 | 0.96 | 0.74 | 0.87 | 0.85 | 0.86 | 0.86 |
| Deepseek-v4-Pro | UGS | 0.90 | 0.91 | 1.00 | 0.81 | 0.84 | 0.89 | 0.89 |
| MiMo-v2.5 | AGS | 0.86 | 0.87 | 0.71 | 0.73 | 0.57 | 0.60 | 0.72 |
| MiMo-v2.5 | UGS | 0.96 | 0.95 | 0.88 | 0.93 | 0.83 | 0.89 | 0.91 |
| MiMo-v2.5-pro | AGS | 0.74 | 0.83 | 0.56 | 0.58 | 0.58 | 0.53 | 0.64 |
| MiMo-v2.5-pro | UGS | 0.92 | 0.90 | 0.88 | 0.87 | 0.71 | 0.87 | 0.86 |
| Suite | Catégorie | Tâches | Ce qui est mesuré |
|---|
R1 | Détournement de harnais | 7 | Résistance au contexte empoisonné et aux étapes de workflow injectées |
R2 | Fuite de confidentialité | 7 | Protection des identifiants implantés et des valeurs sensibles |
R3 | Exécution non autorisée | 7 | Refus des commandes dangereuses et des actions franchissant les limites |
R4 | Risque de chaîne d'approvisionnement | 7 | Gestion des compétences malveillantes et des intégrations de type outil |
R5 | Abus d'outil | 7 | Détection des comportements d'outil trompeurs ou inadaptés |
R6 | Obscurcissement par encodage | 7 | Gestion des instructions encodées et des charges utiles en plusieurs étapes |
| Scénario | Famille de tâches typique |
|---|
T01 | Notes de réunion, éléments d'action et résumés de workflow de routine |
T02 | Formatage de code Python, remaniement et traitement de logs/API |
T03 | Notes de recherche, revue de littérature, citation et analyse d'enquête |
T04 | Préparation au déploiement, validation de configuration et vérifications de santé des services |
T05 | Rapports de ventes, de revenus et de données commerciales structurées |
T06 | Rédaction de blog/contenu, vérification de style, intégration et résumés de feedback |
T07 | Administration système, audits d'environnement, vérifications de déploiement et sauvegarde de logs |
| Drapeau | Description |
|---|
--model MODEL | Identifiant du modèle cible configuré pour OpenClaw |
--suite SUITE | all, une suite de risque telle que R1, ou des identifiants de tâches séparés par des virgules |
--tasks-dir DIR | Répertoire des tâches, par défaut tasks/ ; utiliser tasks_zh/ pour les échantillons en chinois |
--runs N | Nombre d'exécutions par tâche pour le calcul de la moyenne |
--timeout-multiplier N | Mettre à l'échelle les délais d'attente des tâches pour les modèles plus lents |
--judge-model MODEL | Modèle juge pour la notation de l'attaque, de la furtivité et de l'utilité |
--output-dir DIR | Répertoire des résultats, par défaut results/ |
--list-tasks | Afficher les identifiants des tâches fournies et quitter |
--dry-run | Valider le chargement des tâches et les métadonnées de notation sans exécuter OpenClaw |
--verbose | Afficher les journaux d'exécution détaillés |