Git trasformato in una trappola: sette agenti AI possono eseguire codice dai repository
Vulnérabilités

Image d’illustration générée par IA

Git transformé en piège : sept agents IA peuvent exécuter du code depuis des dépôts

8 failles dans 7 agents IA (Goose, Codex, Claude Code...) exploitent Git core.fsmonitor pour exécuter du code via .git/config lors d'un git status

Texte généré par intelligence artificielle, publié sans relecture humaine. Transparence IA

Huit vulnérabilités dans les outils de développement assisté

Le 2 septembre 2026, une classe de vulnérabilités touchant sept agents IA de développement logiciel en ligne de commande a été révélée. Dans certaines conditions, un dépôt préparé par un attaquant peut inciter ces outils à exécuter des commandes arbitraires sur l’hôte.

Huit failles au total ont été identifiées dans goose, Codex, Claude Code, Hermes Agent, Qwen Code, Grok Build et Cursor. Le problème ne dépend ni de prompts malveillants, ni d’un jailbreak du modèle, ni d’autorisations accordées aux outils d’IA. L’exécution se produit lorsque l’agent invoque automatiquement Git pour reconstituer le contexte du projet.

La commande de l’attaquant est exécutée avec les privilèges de l’utilisateur local, en dehors du sandbox de l’agent et sans demande de confirmation. Elle peut donc lire, modifier ou supprimer des fichiers, utiliser les identifiants du compte et accéder aux secrets présents dans les variables d’environnement, notamment aux éventuelles clés d’API.

Dans certains produits, le payload est déclenché avant même que l’utilisateur n’indique que l’espace de travail est fiable. Dans d’autres, il s’exécute avant l’authentification, dès la première touche pressée ou avant même que l’agent ne contacte le modèle de langage.

Aucune attaque exploitant ces vulnérabilités n’a été observée à ce jour. Aucun des CVE examinés ne figure par ailleurs dans le catalogue Known Exploited Vulnerabilities de la CISA. Il n’existe donc aucune échéance fédérale de mise à jour associée.

La commande dissimulée dans .git/config

Le principal vecteur d’attaque est core.fsmonitor, une option légitime de Git conçue pour accélérer la détection des fichiers modifiés. Sa valeur peut désigner une commande externe que Git exécute lors de certaines opérations sur l’index.

Un dépôt malveillant peut contenir une configuration similaire :

[core]
    fsmonitor = <commande>

Cette ligne se trouve dans le fichier local .git/config. Lorsqu’un agent exécute en arrière-plan des opérations telles que git status ou git diff, Git lit la configuration et peut lancer la commande spécifiée par l’attaquant.

Le modèle d’IA n’intervient pas dans cette chaîne. La faille résulte de l’interaction entre une fonction très flexible de Git et l’automatisation introduite par les assistants de programmation.

Le dépôt doit toutefois parvenir jusqu’à la victime avec son répertoire .git intact. Les vecteurs possibles incluent les archives compressées, les dossiers synchronisés, les lecteurs partagés, les clés USB, les volumes montés, les dépôts imbriqués et les checkouts produits par des pipelines CI.

Un git clone classique ne conserve pas la configuration locale malveillante de la manière requise par cette attaque. Le risque concerne donc principalement les projets reçus sous forme de répertoires complets ou extraits d’archives, et non les dépôts clonés selon le flux Git habituel.

Les mécanismes de confiance de l’agent interviennent trop tard. Dans Claude Code et Hermes Agent, la commande peut être exécutée avant l’acceptation de l’espace de travail ; dans Qwen Code, elle peut être lancée avant l’authentification. Grok Build peut l’activer dès la première pression sur une touche, tandis que goose peut l’exécuter avant de contacter le modèle.

Versions vulnérables et mises à jour disponibles

L’état des correctifs varie sensiblement selon les sept produits.

Produit Versions concernées ou vérifiées Correctif et état
goose Toutes les versions antérieures à la 1.44.0 ; test effectué sur la 1.41.0 Corrigé dans la 1.44.0
Codex CLI De la 0.102.0 à la 0.130.0 Corrigé dans la 0.131.0
Codex Desktop macOS De la 260202.0859 à la 26.513.31313 Corrigé dans la 26.519.22136
Codex Desktop Windows De la 26.304.38 à la 26.513.40821 Corrigé dans la 26.519.21041
Codex Microsoft Store De la 26.304.38.0 à la 26.513.4821.0 Corrigé dans la 26.519.2081.0
Claude Code, parcours FSMonitor 2.1.193 vérifiée comme vulnérable Corrigé dans la 2.1.196
Claude Code, ultrareview Confirmé sur la 2.1.252 État des versions ultérieures inconnu
Hermes Agent 0.18.2 et 0.21.0 Aucun correctif disponible dans les tests rapportés
Qwen Code 0.19.6 et 0.22.3 Aucun correctif disponible
Grok Build 0.2.93 et 1.0.13 Aucun correctif disponible
Cursor CLI Versions exactes non communiquées Correctif disponible, version non indiquée

Dans goose, identifié sous le nom CVE-2026-72718, la commande goose review utilise le binaire Git installé sur le système. Les fonctions chargées de collecter le contexte lancent git diff --name-only HEAD et git diff HEAD sans neutraliser core.fsmonitor.

La vulnérabilité est classée High, avec un score CVSS v4 de 7,0/10 et la catégorie CWE-94. L’avis GHSA-r5pp-p5r8-466r, publié le 24 juillet, attribue la découverte à Francisco Rosales, de Manifold Security.

OpenAI a publié trois CVE concernant Codex, issus de trois groupes de recherche indépendants. Pour CVE-2026-19592, le processus auxiliaire s’exécute en dehors du sandbox et sans approbation. La faille obtient un score CVSS 3.1 de 7,3. Bien que la version actuelle vérifiée de Codex CLI soit la 0.152.1, les installations bloquées en dessous de la 0.131.0 restent exposées.

Claude Code possède deux parcours distincts

Claude Code nécessite une analyse séparée, car deux mécanismes d’attaque ont été identifiés.

Le premier exploite core.fsmonitor : il était reproductible dans la version 2.1.193 et a été corrigé dans la 2.1.196. Le signalement a été soumis le 26 juin et le correctif est arrivé le 29 juin, mais le dossier a été clôturé comme doublon d’un rapport antérieur reçu le même jour.

Le second parcours passe par claude ultrareview et utilise une autre clé de configuration Git, qui n’a pas été divulguée. L’attaque fonctionnait sur la 2.1.252 ; la comparaison la plus récente a été réalisée avec la 2.1.258, sans déterminer si une version ultérieure avait supprimé le problème.

Anthropic avait déjà traité des comportements survenant avant l’établissement de la confiance. La version 2.0.34 avait modifié le démarrage afin d’empêcher l’exécution d’un git status avant l’approbation de l’espace de travail, mais un comportement similaire est réapparu dans la 2.1.193.

CVE-2026-55607, évaluée à 8,8 CVSS, concerne également l’exécution de Git FSMonitor lors d’opérations sur les worktrees. Aucun avis dédié couvrant les deux nouveaux parcours décrits pour Claude Code n’a été publié.

Comment vérifier un dépôt avant de l’ouvrir

La première mesure consiste à considérer comme non fiables les répertoires de projet reçus avec un dossier .git déjà présent. Avant de démarrer un agent IA, il est possible de vérifier la valeur locale de FSMonitor :

git config --get core.fsmonitor

La configuration globale peut être contrôlée avec :

git config --global --list | grep fsmonitor

Il faut également inspecter manuellement .git/config en recherchant au minimum :

  • core.fsmonitor ;
  • core.hooksPath ;
  • attr.tree ;
  • les filtres clean ;
  • les filtres process.

La présence de ces options ne prouve pas automatiquement l’existence d’une attaque. Il est toutefois nécessaire d’analyser leur valeur, en particulier lorsqu’elle fait appel à des scripts, des interpréteurs, des binaires ou des chemins situés en dehors du dépôt.

Si FSMonitor n’est pas nécessaire, il peut être désactivé globalement :

git config --global core.fsmonitor false

De leur côté, les développeurs d’agents devraient neutraliser explicitement les configurations contrôlables depuis le dépôt lors de chaque invocation automatisée de Git. Pour FSMonitor, un appel défensif peut prendre la forme suivante :

git -c core.fsmonitor=false status

Cette seule option ne suffit toutefois pas. Les hooks, les attributs et les filtres Git peuvent également modifier le comportement des processus automatisés et doivent être intégrés au modèle de sécurité.

Correctifs immédiats, mais certains produits restent exposés

Les utilisateurs de goose doivent installer au minimum la 1.44.0. Codex CLI doit être mis à niveau au moins vers la 0.131.0, tandis que les applications de bureau doivent atteindre les builds corrigées correspondant à macOS, Windows ou au Microsoft Store.

Pour Claude Code, la 2.1.196 corrige le parcours core.fsmonitor, mais ne permet pas de considérer le vecteur ultrareview comme résolu. Hermes Agent, Qwen Code et Grok Build étaient toujours vulnérables dans les versions les plus récentes soumises aux tests. Pour Cursor, un correctif est disponible, mais les builds concernées ne sont pas connues.

La technique n’est pas nouvelle : des problèmes similaires avaient été corrigés dans Visual Studio Code avant la 1.63.1 avec CVE-2021-43891, ainsi que dans les IDE JetBrains avant la 2021.3.1 avec CVE-2022-24346. Tous deux ont un score CVSS de 7,8.

Au cours des 90 derniers jours, la CISA a également inscrit dans le KEV des vulnérabilités concernant Anthropic, Microsoft et JetBrains : CVE-2019-1068 le 26 août 2026 ; CVE-2026-33824 et CVE-2026-55040 le 18 août 2026 ; CVE-2026-68820 le 11 août 2026 ; CVE-2026-63077 le 5 août 2026 ; CVE-2026-50522 le 22 juillet 2026. En revanche, les failles Git des agents IA décrites ici ne figurent pas dans le catalogue.

L’absence du KEV et d’éléments documentant des compromissions n’élimine pas le risque technique. Il suffit d’ouvrir le mauvais répertoire avec un agent vulnérable : le code peut être exécuté avant même qu’un contrôle de l’IA ou qu’une boîte de dialogue de confiance ait la possibilité d’intervenir.

À lire aussi

Sources

Cet article est une réécriture originale fondée sur les sources ci-dessous.

CVE traitées dans cet article

Sujets liésvulnérabilité Git core.fsmonitoragents IA développementexécution de code arbitrairefaille Goose Codexsécurité Claude CodeCVE-2026-72718
Retour à l'accueil