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.
Sources
Cet article est une réécriture originale fondée sur les sources ci-dessous.
CVE traitées dans cet article
- CVE-2026-50522CRITICAL9.8Deserialization of untrusted data in Microsoft Office SharePoint allows an unauthorized attacker to execute code over a network.
- CVE-2026-63077CRITICAL9.8In JetBrains TeamCity before 2026.1.3, 2025.11.7 unauthenticated remote code execution was possible via the agent polling protocol
- CVE-2026-33824CRITICAL9.8Double free in Windows IKE Extension allows an unauthorized attacker to execute code over a network.
- CVE-2026-55040CRITICAL9.1Weak authentication in Microsoft Office SharePoint allows an unauthorized attacker to bypass a security feature over a network.
- CVE-2019-1068HIGH8.8A remote code execution vulnerability exists in Microsoft SQL Server when it incorrectly handles processing of internal functions, aka 'Microsoft SQL Server Remote Code Execution Vulnerability'.
- CVE-2026-55607HIGH8.8Claude Code is an agentic coding tool. From 2.1.38 until 2.1.163, Claude Code's worktree handling allowed creation of worktrees named ".git" and navigation to worktrees outside the sandbox context, enabling git directory confusion attacks. By exploiting symlink manipulation and git fsmonitor execut
- CVE-2021-43891HIGH7.8Visual Studio Code Remote Code Execution Vulnerability
- CVE-2022-24346HIGH7.8In JetBrains IntelliJ IDEA before 2021.3.1, local code execution via RLO (Right-to-Left Override) characters was possible.
- CVE-2026-19592HIGH7.3OpenAI Codex CLI for Windows, macOS, and Linux and Codex Desktop for Windows and macOS automatically collected Git repository metadata without disabling the repository-local core.fsmonitor setting. If a user opens or uses an attacker-prepared repository whose preserved .git/config sets core.fsmonito
- CVE-2026-68820HIGH7.0Use after free in Windows Ancillary Function Driver for WinSock allows an authorized attacker to elevate privileges locally.
- CVE-2026-72718goose is general-purpose AI agent that runs on your machine. Prior to 1.44.0, the `goose review` command runs the system `git` executable to gather the diff for review without stripping attacker-controlled Git configuration. A malicious repository whose `.git/config` sets [`core] fsmonitor = <comman
