CVE-2026-39987 : Marimo expose un terminal WebSocket sans auth, exploité en 9h41 pour déployer NKAbuse
CVE-2026-39987 (CVSS 9.3) : le notebook Python Marimo expose /terminal/ws sans authentification. Exploité en 9h41 après divulgation, 662 événements, NKAbuse déployé via un espace Hugging Face typosquat. CISA KEV le 23 avril. Correctif : 0.23.0.

Contexte
Marimo est un notebook Python réactif open source, plébiscité dans les workflows data science et IA pour sa reproductibilité et son interface moderne. Le 8 avril 2026, GitHub publie l'advisory GHSA-2679-6mx9-h9xc associé à CVE-2026-39987 : l'endpoint WebSocket de terminal intégré à Marimo ne valide pas l'authentification. Moins de dix heures après la divulgation, la Sysdig Threat Research Team observe les premiers exploits dans la nature — sans code public disponible. La rapidité de l'exploitation révèle que les attaquants scrutent les flux d'advisories en temps réel, prêts à industrialiser l'attaque avant que les équipes aient le temps de patcher.
Points clés
-
Vecteur : WebSocket
/terminal/wssans authentification. L'endpoint de terminal omettait totalement l'appel àvalidate_auth(), contrairement aux autres WebSockets comme/wsqui implémentent correctement la vérification. N'importe quel client pouvait se connecter et obtenir un pseudo-terminal (PTY) complet avec les droits du processus Marimo. -
CVSS 9.3 / Critique. Versions affectées : toutes jusqu'à 0.20.4 inclus. Correctif disponible dans la version 0.23.0.
-
Exploitation en 9h41 min selon Sysdig — sans exploit public. Vol de credentials complété en moins de 3 minutes après connexion.
-
662 événements d'exploitation entre le 11 et le 14 avril 2026, provenant de 11 adresses IP uniques réparties dans 10 pays.
-
Chaîne d'attaque via Hugging Face : les attaquants exécutent un
curl | bashpointant vers un espace Hugging Face nommévsccode-modetx— typosquat délibéré de « VS Code ». Ce script téléchargekagent, un binaire ELF Go, variante inédite de NKAbuse utilisant le protocole P2P NKN (New Kind Network, blockchain-based) pour son canal de commande-et-contrôle. L'usage d'un CDN de confiance des équipes IA comme vecteur de distribution complique les défenses fondées sur des listes blanches de domaines. -
Post-exploitation documentée : un opérateur localisé en Allemagne a testé 15 techniques de reverse-shell, puis extrait des credentials PostgreSQL depuis des variables d'environnement et énuméré schemas et tables. Un second acteur depuis Hong Kong a utilisé des credentials
.envpour cibler Redis, exfiltrant tokens de session et données de cache applicatif. -
CISA KEV le 23 avril 2026 : la faille a été ajoutée au catalogue Known Exploited Vulnerabilities de la CISA. Les agences fédérales civiles américaines (FCEB) ont jusqu'au 7 mai 2026 pour appliquer le correctif.
Mise à jour immédiate
# Mettre à jour marimo vers >= 0.23.0
pip install --upgrade marimo
pip show marimo | grep Version
# Vérifier que l'instance n'est pas exposée publiquement
# Marimo doit être protégé par une authentification externe si accessible sur un réseau
# En local uniquement (127.0.0.1), l'exposition est limitée
marimo run --host 127.0.0.1 notebook.py
Limite et lecture critique
La faille illustre un angle mort récurrent dans les outils de développement : les endpoints « internes » (terminal, debug, inspection) sont souvent conçus pour le confort local sans anticiper les déploiements serveur. Ce problème est amplifié pour les notebooks IA, fréquemment déployés sur des serveurs partagés pour collaborer ou démontrer des pipelines — exactement le scénario d'exposition maximal.
La livraison du payload via Hugging Face mérite aussi une attention particulière : les équipes qui font confiance à ce domaine pour leurs modèles doivent désormais intégrer qu'il peut aussi servir de vecteur d'attaque dans leurs modèles de menace.
The Hacker News — CVE-2026-39987 · Sysdig — Weaponized via Hugging Face · BleepingComputer · NVD — CVE-2026-39987