脆弱性・CVE速報深刻度: 緊急

Prefab UI 0.14.0〜0.20.2 の Generative UI サンドボックスが破られ、サーバー上でファイルの読み書きとコード実行のおそれ(CVE-2026-120338、CVSS 10.0): 0.21.0 で修正

目次(6)

CVE-2026-120338

NVD は 2026-11-01 に、Python 製の UI 生成ライブラリ「Prefab UI(prefab-ui)」の CVE-2026-120338 を登録しました。0.14.0 から 0.20.2 までの版では、Generative UI(利用者や LLM が書いた Python コードを実行して画面を作る機能)のサンドボックスが、隔離の役目を果たしていません。コードを渡せる人は、サーバーの OS ユーザーの権限でファイルを読み書きでき、Python の仮想環境に .pth ファイルを書き込むことで、コード実行を居座らせることもできます。登録元(CNA)は JFrog で、CVSS v3.1 は 10.0(最高値)です。0.21.0 で修正されています。

何が起きるか

  • Generative UI は、渡された Python コードを Pyodide(WebAssembly にした Python)で、Deno のサブプロセスの中で動かします。「信頼できないコード(LLM が書いた UI を含む)の隔離」と説明されている機能です。
  • 0.14.0〜0.20.2 では、起動時に Deno へ読み取り・書き込み・ネットワークの権限を制限なしで与え、さらに実行側が Deno の API を JavaScript のグローバルに残したままでした。Pyodide の js モジュールはそのグローバルを経由できるため、Python のコードから Deno のファイル読み書きの関数を直接呼べます。
  • その結果、コードを渡せる人はサーバーの OS ユーザーとしてファイルを読み書きできます。仮想環境の site-packages に .pth ファイルを書けば、次に Python が起動するたびに実行されるコードを残せます。
  • 遠隔からの典型的な経路は、FastMCP の GenerativeUI プロバイダーです。このプロバイダーは MCP のツール generate_prefab_ui を登録し、ツールの code 引数をそのままサンドボックスへ渡します。認証を設定していない FastMCP サーバーでは、サーバーへ届く任意のクライアントがこのツールを呼べます。認証がある場合も、ツールの呼び出しを許された任意のクライアントが対象です。
  • 前提条件は 2 つです。Generative UI は任意で有効にする機能であること、サーバーに Deno が入っていることです。0.20.2 で再現が確認されたと、CNA は書いています。
  • 実際の悪用は確認していません。具体的なコードは載せません。

修正の状況

  • 修正版は 0.21.0 です。ランタイムと Prefab のソースを読み込んだあと、コードを受け付ける前に Deno の読み取り・書き込み・ネットワークの権限を取り消します。プロセスは --no-prompt で起動し、権限の再要求で許可が戻らないようにしています。起動時のネットワークは cdn.jsdelivr.net だけに限ります。修正は GitHub の PrefectHQ/prefab のコミット 030f074(プルリクエスト 538)です。
  • PyPI では 0.21.0 が 2026-10-26 に公開され、同日中に 0.21.1 も公開されています(2026-11-02 時点の最新は 0.21.1)。0.21.1 の変更内容と、この問題との関係は確認していません。
  • GitHub のセキュリティアドバイザリ(GHSA-595q-jv4r-q7j9)が参照に挙がっています。回避策は確認できていません。

数値と出典(2026-11-02 時点)

項目内容
CVECVE-2026-120338
影響版prefab-ui 0.14.0 以上 0.21.0 未満(0.14.0〜0.20.2)
修正版0.21.0
CWECWE-94(コードインジェクション)、CWE-269、CWE-693
CVSS v3.110.0 CRITICAL(AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)。JFrog(CNA)の値
NVD の状態Received(NVD 自身の評価は未実施)
EPSS公開直後のため未算出(2026-11-02 に FIRST の API を確認、該当データなし)
KEV掲載なし(CISA の JSON、カタログ版 2026.10.30 で確認)

severity を critical とした理由

CVSS v3.1 は最高値の 10.0 で、認証が無ければネットワーク越しに、操作なしでサーバー上のファイル読み書きとコード実行の足場に届きます。この機能は「信頼できないコードの隔離」を目的としているため、隔離が働かない影響は設計の前提を崩します。一方で、Generative UI は任意で有効にする機能で、Deno の導入が必要なため、該当するサーバーは限られます。EPSS は未算出で、KEV にも載っていませんが、評価が公開直後で出ていないだけの可能性があります。修正版が出ていることも踏まえ、該当する環境にとっての影響の大きさを重視して critical としました。

対応として考えられること

  1. prefab-ui を使っているか、とくに FastMCP の GenerativeUI プロバイダー(ツール generate_prefab_ui)を有効にしていないかを確認します。
  2. 該当する場合は 0.21.0 以降へ更新します(最新は 0.21.1)。
  3. 更新までの間は、Generative UI を無効にする、またはツールを外部から呼べないようにすることが考えられます(推定。効果は確認していません)。
  4. 認証なしで公開していた期間がある場合は、サーバー上のファイルの改変と、仮想環境の site-packages にある不審な .pth ファイルを調べます(推定)。
  5. サーバーを動かす OS ユーザーの権限を最小限にし、読み書きできる範囲を絞ります(推定)。

未確認の点

  • 実際の悪用は確認していません。
  • 0.21.1 の変更内容と、0.21.0 の修正が完全かどうかは確認していません。
  • 0.14.0 より前の版が影響を受けるか、FastMCP 側に別途の対応があるかは確認できていません。
  • NVD 自身の評価は未実施(Received)です。CVSS は JFrog(CNA)の値です。

この記事について

出典

この記事を共有