Retour à l'accueil

RCE dans Marimo CVE-2026-39987 : exploit en 9 heures

RCE critique CVE-2026-39987 dans Marimo permet un accès root pré-auth via /terminal/ws. Exploit assemblé en 9 heures sans PoC, Sysdig a enregistré l’attaque sur honeypot. Recommandations : mise à jour, rotation des secrets, protection réseau.

Marimo RCE : root via WebSocket sans mot de passe — exploit en 9 heures
Advertisement 728x90

RCE critique dans Marimo : exploitation en 9 heures sans PoC public

La vulnérabilité critique CVE-2026-39987 (CVSS 9,3) affectant les versions de Marimo antérieures à 0.23.0 permet un accès root non autorisé via WebSocket. Sysdig a détecté la première attaque seulement 9 heures et 41 minutes après la publication de l'avis le 8 avril 2026. Les attaquants ont développé un exploit à partir de la description technique seule—sans PoC public—et ont exfiltré des secrets d’un honeypot en moins de trois minutes.

Le point faible réside dans le point d’entrée /terminal/ws : il ne contient pas l’appel à validate_auth() présent dans /ws. Une simple poignée de main WebSocket donne accès à un shell PTY avec privilèges au niveau du processus. Dans les images Docker par défaut, cela signifie un accès root, ainsi qu’une exposition des clés API OpenAI, Anthropic et Google Gemini stockées dans les fichiers .env.

Détails techniques de la vulnérabilité

Marimo utilise les WebSockets pour des connexions persistantes : /ws gère l’interface réactive et les cellules du notebook, tandis que /terminal/ws pilote le terminal intégré. Ce dernier endpoint ne vérifie que les indicateurs de mode terminal et la prise en charge du PTY système—aucune authentification par jeton de session n’est effectuée.

Google AdInline article slot

La validation au niveau réseau s’effectue automatiquement. En conséquence, tout client distant peut se connecter et exécuter des commandes avec les privilèges du serveur. GHSA-2679-6MX9-H9XC classe cette faille comme CWE-306 (absence d’authentification pour des fonctions critiques). La correction apportée dans la PR #9098 ajoute le contrôle manquant validate_auth().

Les déploiements Docker amplifient le risque : les processus s’exécutent en tant que root, et les secrets sont stockés dans des fichiers .env ou ~/.aws/credentials. Une compromission entraîne un accès total aux facturations LLM, aux modèles et aux jeux de données.

Chronologie de l’attaque et indicateurs

  • 00:00 : Avis publié.
  • 09:41 : Première connexion à /terminal/ws observée dans le honeypot Sysdig.
  • <3 min : Navigation dans le système de fichiers, lecture de .env, des clés SSH, des configurations cloud.
  • ~1 heure : L’attaquant revient pour vérifier la persistance.

Aucun mineur ni backdoor n’a été déployé—ce qui indique une opération ciblée menée par un attaquant en temps réel. Surveillez le trafic WebSocket via les proxies (nginx access.log, Caddy stdout). Activité suspecte : connexions depuis des IP externes vers /terminal/ws après le 8 avril 2026.

Google AdInline article slot

Chemins courants de découverte de secrets :

  • .env
  • ~/.ssh/id_rsa, ~/.ssh/id_ed25519
  • ~/.aws/credentials
  • ~/.config/gcloud/
  • ~/.bash_history

Modèle d’exploitation dans les outils IA

Marimo (20k étoiles GitHub) est largement utilisé à Stanford, Mozilla AI, OpenAI et BlackRock. Les déploiements couvrent Docker, Hugging Face Spaces et CoreWeave. Cela marque la troisième RCE en quelques mois :

  • Langflow CVE-2026-33017 — exploit dans les 20 heures.
  • Flowise CVE-2025-59528 (CVSS 10,0) — exploité après le correctif.
  • Marimo CVE-2026-39987.

Les chaînes d’outils IA (notebooks, pipelines) sont souvent traitées comme des outils de développement—ce qui mène à une segmentation faible, une surveillance insuffisante et des privilèges excessifs. La réalité : accès productif aux modèles, aux données et aux systèmes de facturation.

Google AdInline article slot

Mesures de protection et étapes d’audit

Mettez à jour immédiatement :

  • Exécutez marimo --version pour confirmer une version ≥ 0.23.0.
  • Pour Docker : reconstruisez l’image en utilisant un utilisateur non root (USER).

Si votre port était exposé après le 8 avril, une compromise est probable. Prenez ces mesures :

  • Renouvelez les secrets : clés LLM, identifiants cloud, clés SSH.
  • Auditez les logs de facturation OpenAI/Anthropic/Google pour des requêtes inconnues.
  • Utilisez ss -tlnp | grep LISTEN pour vérifier si Marimo, Jupyter ou Flowise écoutent sur 0.0.0.0.
  • Lancez avec marimo edit --host 127.0.0.1 et ajoutez une protection via proxy inverse (auth nginx, OAuth2 Caddy).
  • Suivez les avis via GitHub Security Advisories, osv.dev et CISA KEV.

Points clés

  • Vitesse d’attaque : 9h41 entre l’avis et l’exploitation—typique pour les vulnérabilités bien documentées.
  • Accès root par défaut : Marimo Docker nécessite une personnalisation explicite de l’utilisateur.
  • Les secrets sont la cible : les fichiers .env contenant des clés LLM sont des cibles privilégiées.
  • Tendance RCE dans l’IA : Troisième RCE consécutif—appel à des pratiques de sécurité production.
  • Détection : surveillez les logs de /terminal/ws dans les proxies ; audit des schémas d’utilisation LLM.

— Editorial Team

Advertisement 728x90

Lire ensuite