重大なMarimo RCE脆弱性により攻撃者が悪意のあるコードをリモートで実行できる可能性

Marimo Pythonノートブックフレームワークで新たに開示された重大な脆弱性は、認証なしに攻撃者が任意のコマンドをリモートで実行できるため、サイバーセキュリティコミュニティ全体で深刻な懸念が生じています。

CVE-2026-39987として追跡されているこの欠陥は、WebSocketエンドポイントを公開しており、これを悪用するとシステムレベルのシェルを起動でき、インフラストラクチャ全体の侵害につながる可能性があります。

Marimo RCE脆弱性

この脆弱性は/terminal/ws WebSocketエンドポイントに存在し、Resecurityによると疑似端末(PTY)シェルへのアクセス権を付与する前に認証を強制しません。

簡単に言うと、このエンドポイントに到達できる誰もが、基盤となるシステムへの直接的なコマンドラインアクセスを取得できます。

この問題は、WebSocketハンドラーのアクセス制御チェックの欠落に起因しています:

@router.websocket("/terminal/ws")
async def websocket_endpoint(websocket: WebSocket) -> None:
    await websocket.accept()
    child_pid, fd = pty.fork() # システムシェルを起動

他の保護されたエンドポイントとは異なり、このエンドポイントは認証を完全にスキップします。接続されると、攻撃者は対話的なシェル環境にアクセスでき、実質的に認証前のリモートコード実行(RCE)を達成できます。

Image

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プロトタイピング、内部分析に使用され、特に0.0.0.0にバインドされていて信頼されていないネットワークからアクセス可能なインターネット公開Marimoインスタンスです。

昇格された特権で実行され、AI プラットフォーム、リバースプロキシ、共有.envファイルなどの他の機密サービスやシークレットと同じ場所にあるコンテナ化またはクラウドホストされたMarimoサーバーは、成功したエクスプロイトの影響を大幅に増幅します。

軽減ステップ

組織は直ちにMarimoをバージョン0.23.0以降にアップグレードする必要があります。このバージョンでは、/terminal/wsエンドポイントに適切な認証が導入され、認証されていないRCE状態が削除されます。

パッチが完全に展開されるまで、防御者はVPN、プライベートサブネット、認証済みリバースプロキシの背後にインスタンスを配置することでMariumアクセスを信頼されたネットワークのみに制限し、編集モードまたはターミナルエンドポイントのインターネットへの直接公開をブロックする必要があります。

セキュリティチームはまた、ルート以外での実行と最小限のコンテナ特権を強制し、公開されている可能性のある認証情報をローテーションし、疑わしいWebSocket接続と/terminal/wsに関連するシェルアクティビティを監視し、侵害されている可能性のあるホストで永続化または横展開をプロアクティブに検出する必要があります。

翻訳元: https://gbhackers.com/critical-marimo-rce-flaw/

ソース: gbhackers.com