概要

オープンソースのPythonリアクティブノートブック「Marimo」に、認証なしでリモートコード実行(RCE)が可能な重大脆弱性(CVE-2026-39987、CVSS 4.0スコア: 9.3)が発見された。影響を受けるのはバージョン0.20.4以前(0.23.0未満)の全バージョンで、脆弱性アドバイザリ(GHSA-2679-6mx9-h9xc)が公開された2026年4月8日21:50 UTCからわずか9時間41分後の4月9日07:31 UTCに、実際の攻撃が観測されている。Sysdigの脅威研究チームは、公開されたPoC(概念実証コード)が存在しない段階での攻撃であることを確認しており、攻撃者はアドバイザリのテキストのみから機能するエクスプロイトを構築したと指摘している。

技術的な詳細

脆弱性の根本原因は、WebSocketエンドポイント間での認証実装の非対称性にある。通常のWebSocketエンドポイント /wsWebSocketConnectionValidator.validate_auth() を呼び出して適切に認証を行っていたが、ターミナル機能のエンドポイント /terminal/ws は実行モードとプラットフォームサポートのチェックのみを行い、認証検証を完全にスキップしていた。攻撃者はこのエンドポイントへWebSocket接続を確立するだけでPTY(疑似端末)とシェルを取得でき、Marimoプロセスの権限で任意のコマンドをインタラクティブに実行できる状態だった。Endor Labsはこれを「1リクエストでroot権限を取得」と表現している。

実際の攻撃観測

Sysdigが観測した攻撃は人間主導の手動偵察スタイルで進行した。攻撃者(IP: 49.207.56.74)は90分以内に4回接続し、最初のセッションで動作確認(id コマンド実行など)を行い、3回目のセッションではわずか3分でディレクトリ列挙、.env ファイルからのAWSアクセスキー抽出、SSHキーの探索を完了させている。Endor Labsが調査したサンプルでは、インターネット上でアクセス可能な186インスタンスのうち16%(約30件)が未認証WebSocketアップグレードに応答しており、パッチ未適用のまま残存するインスタンスは数十〜数百件に上る可能性があるとしている。

修正と対策

修正はバージョン0.23.0(PR #9098)で提供されており、pip install --upgrade "marimo>=0.23.0" による即時アップグレードが強く推奨される。加えて、VPNやプライベートネットワーク、認証プロキシによるMarimoの編集モード保護、公開インスタンス上の環境変数・.env ファイルの監査と認証情報のローテーション、/terminal/ws への予期しない接続のモニタリングといった多層防御も推奨されている。Sysdigは「攻撃者が広く普及したプラットフォームのみを狙うという前提は誤りであり、人気度に関わらず重大なアドバイザリが公開されたインターネット公開アプリケーションはすべてターゲットになる」と警鐘を鳴らしており、セキュリティ侵害の時間枠が「日単位」から「時間単位」に圧縮されていることを改めて示す事例となった。