---
title: "Prefab UI 0.14.0〜0.20.2 の Generative UI サンドボックスが破られ、サーバー上でファイルの読み書きとコード実行のおそれ（CVE-2026-120338、CVSS 10.0）: 0.21.0 で修正"
url: https://n-t-p.io/worldsecurity/articles/prefab-ui-0-21-0-generative-ui-sandbox-deno-permissions-escape-cve-2026-120338-fixed
lang: ja
kind: 速報
category: 脆弱性・CVE
author: World Security 編集部
published: 2026年11月1日
updated: 2026年11月1日
severity: 緊急
cve: CVE-2026-120338
---

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

> **TL;DR:** Python 製の UI 生成ライブラリ prefab-ui の 0.14.0〜0.20.2 は、Generative UI のサンドボックスで Deno の権限を制限せず、Python のコードからサーバーのファイルを読み書きできる（CVE-2026-120338）。FastMCP の generate_prefab_ui 経由では、認証が無ければ届く任意のクライアントが対象。CVSS v3.1 は 10.0（JFrog）、EPSS は公開直後のため未算出、KEV なし。0.21.0 で修正済み。

**要点**
- prefab-ui 0.14.0〜0.20.2 が対象。Generative UI のサンドボックスが Deno に読み取り・書き込み・ネットワークを無制限に与え、Deno の API も Python から呼べる状態だった
- コードを渡せる人は、サーバーの OS ユーザーとしてファイルを読み書きでき、.pth ファイルでコード実行を居座らせられる。FastMCP の generate_prefab_ui 経由では、認証が無ければ届く任意のクライアントが対象
- CVSS v3.1 は 10.0（JFrog の値）。EPSS は公開直後のため未算出、KEV なし、NVD は Received。Generative UI は任意で有効にする機能で、Deno が必要
- 0.21.0 で修正済み（コードを受け付ける前に Deno の権限を取り消す）。PyPI の最新は 0.21.1。回避策は確認できていない
- 実際の悪用と 0.21.1 の変更内容は未確認。更新までの運用上の対策は推定

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 時点）

| 項目 | 内容 |
|---|---|
| CVE | CVE-2026-120338 |
| 影響版 | prefab-ui 0.14.0 以上 0.21.0 未満（0.14.0〜0.20.2） |
| 修正版 | 0.21.0 |
| CWE | CWE-94（コードインジェクション）、CWE-269、CWE-693 |
| CVSS v3.1 | 10.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）の値です。


## 出典
- [NVD CVE-2026-120338](https://nvd.nist.gov/vuln/detail/CVE-2026-120338) — NIST NVD
- [CVE-2026-120338 CVE レコード](https://www.cve.org/CVERecord?id=CVE-2026-120338) — CVE Program
- [GitHub セキュリティアドバイザリ GHSA-595q-jv4r-q7j9](https://github.com/PrefectHQ/prefab/security/advisories/GHSA-595q-jv4r-q7j9) — PrefectHQ
- [修正コミット 030f074](https://github.com/PrefectHQ/prefab/commit/030f074f85e0b1be0dd44b0283185aecb26337a2) — PrefectHQ
- [修正プルリクエスト 538](https://github.com/PrefectHQ/prefab/pull/538) — PrefectHQ
- [prefab-ui 0.21.0（PyPI）](https://pypi.org/project/prefab-ui/0.21.0/) — PyPI
- [FIRST EPSS CVE-2026-120338](https://api.first.org/data/v1/epss?cve=CVE-2026-120338) — FIRST
- [CISA KEV カタログ](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) — CISA

---
出典: World Security（株式会社NTP） https://n-t-p.io/worldsecurity/articles/prefab-ui-0-21-0-generative-ui-sandbox-deno-permissions-escape-cve-2026-120338-fixed