Marimo Python notebook の脆弱性 CVE-2026-39987 が FIX :未認証 RCE の恐れ

Critical Marimo RCE Flaw Could Let Attackers Execute Malicious Code Remotely

2026/05/18 gbhackers — 新たに公表された Marimo Python notebook フレームワークの、深刻な脆弱性 CVE-2026-39987 (CVSS:9.8) が、サイバー・セキュリティ・コミュニティ全体で強い懸念を引き起こしている。この脆弱性は WebSocket エンドポイントを露出させており、認証を必要としない攻撃者による、リモートからの任意のコマンド実行が可能になるだけではなく、システム・レベルのシェルの生成や、インフラ全体の侵害につながる可能性がある。

Marimo RCE の脆弱性

Resecurity によると、この脆弱性は “/terminal/ws” WebSocket エンドポイントに存在しており、疑似ターミナル (PTY) シェルへのアクセスを許可する前の、認証の強制に不具合が生じている。簡潔に言えば、WebSocket ハンドラにおけるアクセス制御チェックの欠如により、このエンドポイントへ到達可能な者であれば、誰でも基盤システムへの直接的なコマンドライン・アクセスを取得できる状態にある。

@router.websocket("/terminal/ws")
async def websocket_endpoint(websocket: WebSocket) -> None:
    await websocket.accept()
    child_pid, fd = pty.fork() # Spawns system shell

他の保護されたエンドポイントとは異なり、このエンドポイントでは認証が完全に省略されているため、接続後の攻撃者は対話型シェル環境へと直接接続し、事実上の認証前リモート・コード実行 (RCE) を実現できてしまう。

Attack flow (Source: Resecurity)
Attack flow (Source: Resecurity)

Marimo は、データ・サイエンス/AI プロトタイピング/内部分析用途で広く使用されているが、これらの環境は以下のような特徴を持つケースが多い。

  • API キーや認証情報などの機密データを保持している。
  • 高権限で実行されている (コンテナ内で root として実行される場合を含む)。
  • 内部サービス/データベース/クラウド・システムに接続している。

そのため、この脆弱性は特に危険である。単一のアプリケーションの侵害に留まらず、環境全体が危険にさらされる可能性がある。

セキュリティ研究者によると、この脆弱性を悪用して、すでに NKAbuse マルウェアを展開する攻撃が確認されている。ペイロードが Hugging Face Spaces 上でホストされているため、攻撃者は単純な WebSocket クライアントを悪用して接続し、容易にコマンドを実行できる。

攻撃フローの例は以下の通りである。

  • 接続先:ws://target:2718/terminal/ws
  • 認証不要
  • 実行コマンド例:id、whoami、cat /etc/passwd
  • 完全なシェル・アクセスを取得

基本的な Python エクスプロイト例は以下の通りである。

import websocket
ws = websocket.WebSocket()
ws.connect("ws://target:2718/terminal/ws")
ws.send("id\n")
print(ws.recv())
ws.close()

この最小限の操作のみで、脆弱なシステムが完全に侵害される可能性がある。

影響を受けるシステム

バージョン 0.23.0 未満の Marimo を実行している、すべてのデプロイメントが影響を受ける。これらのビルドでは、”/terminal/ws” WebSocket エンドポイントに適切な認証機能が存在しないため、未認証ユーザーが対話型シェルを取得可能となる。

特にリスクが高いのは、データ・サイエンスや、ML/AI プロトタイピング、内部分析用途で使用されている、インターネットへ公開された Marimo インスタンスである。とりわけ、”0.0.0.0″ にバインドされ、信頼されていないネットワークから到達可能なコンフィグで危険性が高まる。

また、コンテナ化またはクラウド環境上で動作する、高権限実行されている Marimo サーバにおいて、AI プラットフォーム/リバース・プロキシ/共有 “.env” ファイルなどの機密サービスやシークレットと同一環境で運用されている場合も、侵害時の影響範囲が拡大する。

緩和策

組織に対して強く推奨されるのは、Marimo を直ちにバージョン 0.23.0 以降へアップグレードすることである。このバージョンでは “/terminal/ws” エンドポイントへ適切な認証が導入され、未認証 RCE 条件が解消されている。

パッチ適用が完了するまでの間は、Marimo へのアクセスを信頼済みネットワークのみに制限する必要がある。具体的には、VPN /プライベート・サブネット/認証付きリバース・プロキシの背後へ配置し、編集モードや terminal エンドポイントをインターネットへ直接公開しないことが求められる。

さらに、非 root 実行および最小権限コンテナ設定を強制し、漏洩した可能性のある認証情報をローテーションする必要がある。それに加えて、”/terminal/ws” に関連する不審な WebSocket 接続やシェル操作を監視し、持続化やラテラル・ムーブメントの兆候を積極的に調査することも重要である。