En bref

  • CVE-2026-39987 (CVSS 9.3) : l'endpoint WebSocket /terminal/ws de Marimo expose un terminal interactif sans aucune authentification
  • Marimo versions 0.20.4 et antérieures sont affectées — mettre à jour vers la version 0.23.0 minimum
  • Exploitation active confirmée moins de 10 heures après la publication de l'advisory, avec exfiltration de credentials observée

Les faits

Une vulnérabilité critique d'exécution de code à distance pré-authentification a été découverte dans Marimo, un notebook Python open source de plus en plus populaire dans les communautés data science et machine learning. Référencée CVE-2026-39987 avec un score CVSS de 9.3, cette faille réside dans l'endpoint WebSocket /terminal/ws qui expose un terminal interactif PTY complet sans aucune vérification d'authentification. Contrairement à d'autres endpoints WebSocket de Marimo comme /ws qui appellent correctement la fonction validate_auth() pour vérifier l'identité de l'utilisateur, l'endpoint /terminal/ws se contente de vérifier le mode d'exécution et la compatibilité de la plateforme avant d'accepter les connexions, ignorant totalement la couche d'authentification. La rapidité d'exploitation est particulièrement alarmante : selon les chercheurs de Sysdig, un attaquant a construit un exploit fonctionnel à partir de l'advisory publique et a commencé à l'utiliser en production moins de neuf heures après la divulgation. Dans un cas documenté par un honeypot Sysdig, l'attaquant s'est connecté à l'endpoint vulnérable, a effectué une reconnaissance manuelle deux minutes plus tard, puis est revenu six minutes après pour exfiltrer des fichiers contenant des credentials et des clés SSH. L'opération complète a duré moins de trois minutes.

Marimo est un outil de développement interactif qui permet de créer des notebooks Python réactifs et reproductibles. Son adoption croissante dans les équipes de data engineering et de machine learning en fait une cible intéressante pour les attaquants, car ces environnements contiennent souvent des accès à des bases de données de production, des clés API de services cloud et des datasets sensibles. Cette vulnérabilité illustre parfaitement la tendance de fond des attaques ciblant les outils de développement pour accéder aux environnements de production. Elle rappelle aussi que le temps de réponse face aux vulnérabilités critiques doit se mesurer en heures et non en jours. Les équipes qui utilisent des notebooks interactifs en réseau doivent impérativement revoir leur exposition, comme le souligne la feuille de route cybersécurité française 2026 sur la sécurisation des environnements de développement.

Impact et exposition

Toutes les instances Marimo versions 0.20.4 et antérieures accessibles en réseau sont vulnérables. L'exploitation est triviale : une simple connexion WebSocket à l'endpoint /terminal/ws suffit pour obtenir un shell interactif complet avec les privilèges du processus Marimo. Dans les environnements typiques de data science, le processus Marimo s'exécute souvent avec des privilèges élevés et dispose d'accès directs aux bases de données, aux buckets de stockage cloud et aux registres de modèles ML. L'impact va donc bien au-delà du seul serveur Marimo : credentials exfiltrées, accès aux données de production, et potentiel de mouvement latéral vers l'infrastructure cloud. Le pattern d'attaque observé — reconnaissance puis exfiltration ciblée de credentials en moins de trois minutes — montre que les attaquants sont déjà organisés pour exploiter ce type de faille de manière industrielle. Les organisations exposant des instances Marimo sur des réseaux partagés ou accessibles depuis Internet sont les plus à risque, d'autant plus que des outils similaires comme aws-mcp-server ont récemment montré des failles comparables.

Recommandations

  • Mettre à jour Marimo vers la version 0.23.0 ou supérieure immédiatement
  • Si la mise à jour n'est pas possible, bloquer ou désactiver l'accès à l'endpoint /terminal/ws via un reverse proxy ou un pare-feu applicatif
  • Auditer les credentials et clés SSH présentes sur les serveurs exécutant Marimo — les considérer comme potentiellement compromises si l'instance était exposée
  • Effectuer une rotation des secrets et tokens API accessibles depuis les environnements Marimo vulnérables
  • Restreindre l'accès réseau aux instances Marimo par VPN ou liste blanche d'adresses IP

Alerte critique

Exploitation active confirmée en moins de 10 heures après la divulgation. Les attaquants ciblent spécifiquement les credentials et les clés SSH. Si votre instance Marimo était accessible en réseau, considérez tous les secrets présents sur le serveur comme compromis et procédez à leur rotation immédiate.

Mon instance Marimo est derrière un VPN, suis-je quand même vulnérable ?

Si votre instance Marimo n'est accessible que via VPN, le risque d'exploitation externe est significativement réduit mais pas nul. Un attaquant ayant compromis un poste VPN ou un autre service du réseau interne pourrait toujours atteindre l'endpoint vulnérable. La mise à jour vers la version 0.23.0 reste indispensable, même derrière un VPN. Le principe de défense en profondeur exige de ne jamais considérer le périmètre réseau comme seule protection.

Comment détecter si mon instance Marimo a été exploitée via CVE-2026-39987 ?

Recherchez dans les logs réseau des connexions WebSocket entrantes sur le chemin /terminal/ws provenant d'adresses IP non reconnues. Vérifiez les logs système du serveur pour des commandes de reconnaissance (whoami, id, ls, cat) exécutées via le processus Marimo. Contrôlez l'intégrité des fichiers de credentials (.env, config, SSH keys) et vérifiez les horodatages d'accès aux fichiers sensibles. Si des connexions suspectes sont détectées, considérez le serveur comme compromis.

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits de sécurité ciblés pour identifier et corriger vos vulnérabilités avant qu'elles ne soient exploitées.

Demander un audit