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
Manipulating-Web-Agents | Kitploit
Outils/GitHubGitHub/sej2020/manipulating-web-agents
ExploitationSécurité WebArticles et RechercheApprentissage et ÉducationSécurité de l'IAAttaque Adversariale
GitHubsej2020/manipulating-web-agents

Manipulating-Web-Agents

Voir le dépôt
63il y a 1 anPas 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 →
Partager

Manipulation d'agents web autonomes basés sur LLM par attaques par injection indirecte de prompts

Avec l'omniprésence des applications intégrant des LLM, l'étude des risques de sécurité potentiels est cruciale. L'une des vulnérabilités les plus importantes de ces systèmes est leur sensibilité aux attaques adversariales par injection indirecte de prompts. Dans ce dépôt, nous montrons une méthode par laquelle un acteur malveillant pourrait générer un déclencheur universel lui permettant de contrôler les actions d'un agent de navigation web distant dérivé d'un LLM. Nous espérons que la présentation de ces informations aidera les praticiens à prendre conscience de leur vulnérabilité potentielle et inspirera les chercheurs à développer des protections contre ce type d'attaques.

Configuration

Après avoir cloné ce dépôt, les commandes suivantes sont nécessaires pour mettre en place l'infrastructure de navigation web issue de Browser Gym :

root@kitploit:~
conda create -n browser-gym
conda init
conda activate browser-gym
pip install browsergym-core
playwright install chromium
pip install transformers

Les détails peuvent varier selon l'environnement de calcul.

Si vous souhaitez exécuter une procédure d'optimisation de déclencheur universel, vous devrez générer un ensemble de données de sites web et d'objectifs de navigation web. Cela peut être réalisé à l'aide des commandes fournies par le fichier src/actions/mask_dataset.py. Vous devrez également créer quelques clés API et les stocker dans un environnement sécurisé.

  1. Exécutez pip install python-dotenv puis touch .env
  2. Stockez une clé API OpenAI dans le fichier, ainsi que les informations pour un moteur de recherche programmable Google. Suivez les instructions de la première section de ce lien pour configurer votre moteur de recherche. La syntaxe de votre fichier '.env' doit être la suivante :
    root@kitploit:~
    OPENAI_API_KEY=<key>
    GOOGLE_API_KEY=<key>
    GOOGLE_ENGINE_NAME=<name>
    GOOGLE_CX=<engine ID>
    
  3. Exécutez python -m src.dataset.actions.make_dataset get_webs jusqu'à ce que vous ayez un nombre approprié de fichiers json de sites web dans votre dossier de données.
  4. Exécutez python -m src.dataset.actions.make_dataset set_goals pour filtrer les fichiers json des sites web bloqués, rééquilibrer les classes de sites, et soumettre un travail par lots à l'API OpenAI afin de générer des objets d'objectifs pour les sites web restants. Vous devez ajouter l'option --n_batch_splits <int> si vous avez plus de 10 000 fichiers json de sites web.
  5. Lors de l'exécution de la commande set_goals, vos identifiants de lot seront affichés dans le terminal. Exécutez python -m src.dataset.actions.make_dataset get_goals --batch_ids <batch ID 1> <batch ID 2> ... pour écrire les objets d'objectifs dans les fichiers json de sites web correspondants si les travaux par lots sont terminés. Un travail par lot peut prendre 24 heures pour être complété par OpenAI, vous devrez donc peut-être attendre un jour avant que cette commande ne réussisse.

Exécution de la démo 1

La démo n° 1 montre comment un attaquant pourrait héberger un site web contenant un logiciel malveillant intégré dans un lien et forcer un agent de navigation web à cliquer sur ce lien à chaque fois. Un fichier json de site web et un déclencheur pour contrôler la sortie de l'agent web sont stockés respectivement dans les dossiers data/ et triggers/.

Contrôle

L'exécution de python -m src.attack.actions.run_demo lancera un navigateur avec une page web d'exemple et une interface de chat LLM. Le chat LLM vous demandera de fournir un objectif pour l'agent de navigation web. Écrivez une tâche comme « Rechercher un vol pour Chicago » dans la fenêtre. L'agent accomplira la tâche sur l'onglet avec la page web d'exemple comme prévu.

Attaque

Exécutez python -m src.attack.actions.run_demo --trigger_json triggers/zzz_travel_ad_demo_1_trigger_uni_secondary.json pour attaquer l'agent de navigation web sur cette tâche. Un navigateur sera lancé avec la page web d'exemple et l'interface de chat LLM comme auparavant, et, comme auparavant, veuillez écrire un objectif dans la fenêtre de chat. Le processus sera identique à celui du contrôle, la seule différence étant que le déclencheur du fichier zzz_travel_ad_demo_1_trigger_uni_secondary.json sera inséré dans un lien caché sur le site web. Vous devriez constater que cette fois, l'agent web ignore l'instruction que vous avez fournie et clique sur la publicité dans le pied de page !

Optimisation de votre propre déclencheur adversarial

Pour optimiser un déclencheur adversarial afin de contrôler la sortie d'un agent de navigation web sur un site web de votre choix, vous pouvez utiliser le fichier find_narrow_trigger.py. Une fois que vous avez généré un fichier json de site web à l'aide de l'utilitaire de création d'ensemble de données, vous pouvez insérer le texte « {optim_str} » à un endroit de l'arbre ax. Cela indique à la bibliothèque nanogcg que nous allons utiliser que vous souhaitez insérer le déclencheur à cet endroit du site web.

  1. Exécutez pip install nanogcg
  2. Acceptez les conditions d'utilisation des modèles Llama/Mistral sur Hugging Face et créez un jeton d'accès dans les paramètres.
  3. Insérez « {optim_str} » dans l'objet ax_tree du fichier json de données de site web de votre choix.
  4. Exécutez python -m src.attack.actions.find_narrow_trigger. Les options et indicateurs de cet utilitaire en ligne de commande sont les suivants :
root@kitploit:~
-h, --help            show this help message and exit
--json JSON           File and path for the JSON file to find a trigger for.
--target TARGET       The desired output when triggered.
--device DEVICE       Device to run the model on.
--trigger_length TRIGGER_LENGTH
--include_target, --no-include_target
--loss_fn {cw,mm,ce}
--search_width SEARCH_WIDTH
--top_k TOP_K
--model {mistral-7B,mistral-24B,llama2,llama3}
                    The model to use for generation.
--dtype DTYPE         Data type to use for the model.

Pour que l'attaque fonctionne dans notre environnement, la cible de votre optimisation doit être une fonction de l'espace d'actions de navigation web de Browser Gym. Reportez-vous au fichier action_space.txt.

Le déclencheur optimisé sera enregistré dans un fichier json dans le dossier triggers/, dont le nom correspondra au fichier json de données de site web associé. Vous pouvez utiliser ce déclencheur pour exécuter votre propre démo à l'aide de l'utilitaire python -m src.attack.actions.run_demo avec les indicateurs appropriés.

Télécharger l’outil