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) を実現できてしまう。
Marimo は、データ・サイエンス/AI プロトタイピング/内部分析用途で広く使用されているが、これらの環境は以下のような特徴を持つケースが多い。
- API キーや認証情報などの機密データを保持している。
- 高権限で実行されている (コンテナ内で root として実行される場合を含む)。
- 内部サービス/データベース/クラウド・システムに接続している。
そのため、この脆弱性は特に危険である。単一のアプリケーションの侵害に留まらず、環境全体が危険にさらされる可能性がある。
セキュリティ研究者によると、この脆弱性を悪用して、すでに NKAbuse マルウェアを展開する攻撃が確認されている。ペイロードが Hugging Face Spaces 上でホストされているため、攻撃者は単純な WebSocket クライアントを悪用して接続し、容易にコマンドを実行できる。
攻撃フローの例は以下の通りである。
- 接続先:ws://target:2718/terminal/ws
- 認証不要
- 実行コマンド例:id、whoami、cat /etc/passwd
- 完全なシェル・アクセスを取得
基本的な Python エクスプロイト例は以下の通りである。
import websocketws = 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 接続やシェル操作を監視し、持続化やラテラル・ムーブメントの兆候を積極的に調査することも重要である。
訳者後書:Marimo の脆弱性 CVE-2026-39987 は、プログラムの実装ミスが原因で発生したものです。具体的には、特定の WebSocket ハンドラにおいて本来おこなうべきアクセス制御のチェックが漏れており、認証機能が完全に省略されていました。この不具合により、エンドポイントへ到達できる人なら誰でも、システムのシェルを直接操作できてしまう状態になっています。ご利用のチームは、ご注意ください。よろしければ、Marimo での検索結果も、ご参照ください。

You must be logged in to post a comment.