Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ROPE — Cadre de défense appliquant une politique d'origine routée pour prévenir l'injection indirecte de prompts dans les agents LLM utilisant des outils, avec des vérifications d'origine déterministes et des bancs d'essai de référence pour évaluer le succès des attaques et la rétention d'utilité. | Kitploit
Outils/GitHubGitHub/xhowenma/rope
Outils DéfensifsAnalyse des VulnérabilitésArticles et RechercheApprentissage et ÉducationSécurité de l'IA
GitHubxhowenma/rope

ROPE

Voir le dépôt
7il y a 3 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Cadre de défense appliquant une politique d'origine routée pour prévenir l'injection indirecte de prompts dans les agents LLM utilisant des outils, avec des vérifications d'origine déterministes et des bancs d'essai de référence pour évaluer le succès des attaques et la rétention d'utilité.

Partager

ROPE : Application de la politique d'origine routée

Code source de notre article :

ROPE : Application de la politique d'origine routée contre l'injection indirecte d'invites par Xinhang Ma, Chaowei Xiao, William Yeoh, Ning Zhang, Yevgeniy Vorobeychik

Résumé

L'injection indirecte d'invites (IPI) insère des instructions dans le contenu qu'un agent LLM utilisant des outils lit, orientant l'agent vers des appels d'outils nuisibles. Les défenses les plus solides sont au niveau système, exploitant des techniques telles que le filtrage d'outils conditionné par la tâche pour empêcher l'exécution d'outils malveillants, et le contrôle de flux d'informations pour éviter l'exécution d'outils avec des paramètres non fiables. Cependant, à mesure que les agents deviennent plus capables, les utilisateurs délèguent davantage à l'automatisation. Par conséquent, les séquences d'exécution d'outils et les valeurs de paramètres sont de plus en plus déterminées à l'exécution et ne peuvent pas être filtrées de manière fiable en utilisant uniquement les informations contenues dans la requête utilisateur sans perte d'utilité significative. Nous présentons ROPE (Routed Origin Policy Enforcement), qui s'ancre dans une notion structurelle de confiance : une valeur ne peut atteindre un outil modifiant l'état que si elle provient de manière infalsifiable de l'utilisateur, d'une source que l'utilisateur a explicitement nommée, ou des enregistrements faisant autorité de l'utilisateur lui-même. L'application est alors un contrôle d'origine déterministe sur un ensemble audité de paramètres d'outils sensibles, et la seule dépendance à un modèle de langage implique uniquement la requête utilisateur de confiance, hors de portée de l'attaquant. Notre approche admet deux garanties prouvables : 1) à chaque étape d'une trajectoire, aucune valeur dont la seule origine est un contenu inscriptible par l'attaquant n'atteint un paramètre protégé par l'origine, et 2) aucune reformulation d'une injection ne modifie une décision d'admission. Grâce à une évaluation expérimentale approfondie, nous montrons que sur quatre modèles d'agents sur des suites d'agents à tâches ouvertes, ROPE maintient le taux de réussite d'attaque à 1,6–2,6 % tout en conservant 82–100 % de l'utilité propre non défendue, dépassant significativement les défenses au niveau système de pointe en termes d'utilité tout en atteignant une sécurité comparable ou meilleure sur des flux de travail dynamiques complexes. De plus, nous montrons que l'optimisation de l'injection contre ROPE est largement inefficace, tandis que les attaques à long horizon qui vainquent les défenses système précédentes atteignent un taux de réussite nul dans notre cas.

Structure du dépôt

CheminContenu
src/rope/La défense : routeur, portée par tâche, compilateur de politique, traceur d'origine, garde d'exécution.
src/rope/scopes/_floor/<suite>.jsonLa table audité des outils/paramètres sensibles par suite (partagée par tous les routeurs).
src/rope/scopes/<router>/<suite>.jsonPortées par tâche en cache pour les trois routeurs évalués (opus, gemini-3-flash, gpt-oss-20b) — rejeu hors ligne des sorties du routeur de l'article.
src/common/Cache de complétion LLM utilisé par le routeur (appels d'entrée de confiance uniquement).
autodojo/Le principal harnais de référence et l'attaque adaptative : il prend directement en charge les six suites évaluées : banking, slack, travel (trois des quatre d'AgentDojo) et github, shopping, dailylife (d'AgentDyn).
agentlab/La référence à long horizon : l'attaque Task-Injection d'AgentLAB et ses traces d'attaque publiées, plus le pilote de rejeu. Voir agentlab/README.md.
runs/Journaux d'exécution ROPE (JSON) pour les quatre modèles d'agents, plus runs/ablation/ (les deux bras à politique fixe) et runs/router/ (les routeurs moins chers, avec et sans serrage), et les scripts qui recalculent les nombres ROPE rapportés à partir de ceux-ci.

Configuration

Python 3.12 avec openai, pydantic, jsonschema, pyyaml (et google-genai pour le chemin Gemini natif). Depuis la racine du dépôt :

root@kitploit:~
export PYTHONPATH=$PWD/autodojo/src:$PWD/src

Reproduire les nombres rapportés à partir des journaux fournis (aucun accès API nécessaire)

root@kitploit:~
cd runs
python aggregate.py         # CU / UA / ASR par suite + totaux (les deux références)
python adaptive_rope.py     # statique vs adaptatif, CU/UA/ASR (attaque AutoDojo, les deux références)
python longhorizon_rope.py  # long horizon (AgentLAB Task-Injection)
python ablation.py          # ablation de politique : toujours entièrement spécifié / toujours action ouverte
python router.py            # routeurs moins chers, avec et sans serrage d'application
python failures.py          # recensement des échecs : chaque réussite d'attaque résiduelle + échecs de tâches propres
python buckets.py           # tables par catégorie (compartiment de sous-spécification)
python router_deviation.py  # comptages de relâchement/resserrement par routeur par rapport au plancher audité

Chaque script recalcule sa table à partir des journaux et l'imprime ; aucun ne contient de valeurs attendues. buckets.py et router_deviation.py nécessitent que PYTHONPATH soit défini comme ci-dessus (ils lisent les définitions de suites et les portées en cache) ; les autres lisent uniquement les journaux JSON fournis.

runs/<model>/<suite>/user_task_*/, runs/ablation/<policy>/<suite>/user_task_*/ et runs/router/<router>[-clamp]/<suite>/user_task_*/ contiennent chacun un JSON par cellule évaluée : none/ (propre), important_instructions/ (attaque statique), autodojo/ (attaque adaptative), et agentlab_longhorizon/ (attaque par étapes à long horizon).

Corrections de notation. Trois oracles de référence ne sont pas fiables pour les défenses bloquant l'exécution. runs/corrections.py répartit les trois renotations basées sur les effets — slack IT5, dailylife IT7, github IT1 — et les agrégateurs les appliquent ; la docstring de chaque module documente l'artefact et le correctif. CU et UA ne sont jamais modifiés.

Exécuter la défense

root@kitploit:~
# configuration du résultat principal (routeur opus en cache, correspondance stricte, non serré) :
python -m rope.run_eval --suite github --attack important_instructions
python -m rope.run_eval --suite github --attack none            # utilité propre
python -m rope.run_eval --suite github --defense passthrough    # référence sans défense

# routeurs moins chers de l'étude de routeur, éventuellement serrés au plancher audité :
python -m rope.run_eval --suite github --router gemini-3-flash --clamp

# routeur en direct (recalculer la portée à l'exécution avec n'importe quel modèle compatible OpenAI) :
python -m rope.run_eval --suite github --router live --router-model openai/gpt-4o-mini --clamp

# attaque adaptative : rejouer les injections optimisées AutoDojo en cache
AUTODOJO_CACHE=$PWD/autodojo/variant_generation/variants/github/openai/gpt-4o-mini/routed/injections.json \
  python -m rope.run_eval --suite github --attack autodojo

# attaque à long horizon : rejouer les traces en cache d'AgentLAB (voir agentlab/README.md)
python agentlab/run_eval.py --suite banking --user-task user_task_0 --injection-task injection_task_0

Variables d'environnement : OPENROUTER_API_KEY (modèle d'agent et routeur en direct ; toutes les exécutions rapportées appellent les modèles d'agents via OpenRouter), ROPE_AGENT_MODEL (par défaut openai/gpt-4o-mini), ROPE_PIPELINE_TAG pour étiqueter les journaux d'exécution (doit contenir un nom de modèle AgentDojo pour que les modèles d'attaque se résolvent).

Les routeurs en cache rendent la défense entièrement déterministe et sans API côté routage : opus couvre les six suites ; gemini-3-flash et gpt-oss-20b couvrent les suites AgentDyn (la portée de l'étude de routeur). Pour évaluer votre propre routeur, mettez-le en cache une fois et réutilisez-le comme un routeur intégré :

root@kitploit:~
python -m rope.cache_router --router my-router --router-model <llm-id> --suite github
python -m rope.run_eval     --router my-router --suite github --attack important_instructions

Remerciements

Ce dépôt intègre ou s'appuie sur : AgentDojo et AgentDyn (suites de référence), AutoDojo (attaque adaptative), et AgentLAB (référence à long horizon et traces d'attaque Task-Injection). Voir les articles respectifs pour plus de détails.

Références

Si vous trouvez ce travail utile, nous apprécions que vous puissiez aimablement citer :

root@kitploit:~
@article{rope,
  title={ROPE: Routed Origin Policy Enforcement against Indirect Prompt Injection},
  author={Ma, Xinhang and Xiao, Chaowei and Yeoh, William and Zhang, Ning and Vorobeychik, Yevgeniy},
  journal={arXiv preprint arXiv:2608.27496},
  year={2026}
}
Télécharger l’outil