重大度: 高, CVSS 4.0 8.5, CVSS 3.1 7.8(VulnCheck(CNA)によって割り当て)
ベクター(v4.0): CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
ベクター(v3.1): CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
影響を受けるバージョン: uproot <= 5.7.4
修正バージョン: 5.7.5 / コミット c045c28
CWE: CWE-94(コード生成の制御不備、コードインジェクション); 副次的な CWE-95(Eval インジェクション)
報告者: Sai Teja Erukude
CNA: VulnCheck
公開日: 2026年7月18日
uproot 5.7.4 以前は、ROOT の TStreamerInfo メタデータから Python クラスソースを動的に生成し、実行時にコンパイルします。
ファイル由来のストリーマメタデータフィールドの一部は、安全なクォート処理なしで生成された Python ソースに展開されます。細工された ROOT ファイルを提供できる攻撃者は、細工された要素名など、Python 式を破壊するコンテンツをストリーマメタデータに注入できます。
影響を受けるアプリケーションが細工された ROOT ファイルを開き、uproot が対応するリーダーメソッドを生成して呼び出すと、注入された Python 式がホストプロセスのコンテキストで実行される可能性があります。
攻撃者は、影響を受ける uproot のコードパスで攻撃者が制御する ROOT ファイルを開いたり処理したりするアプリケーションにおいて、任意の Python コードを実行できる可能性があります。
アプリケーションによっては、以下が可能になります:
問題は、ROOT ストリーマメタデータに対する uproot の生成ソースパスにあります。
PoC は、ExploitTarget クラス用の細工された TStreamerInfo メタデータを含む ROOT ファイルを作成します。細工されたストリーマ要素名は生成された式から抜け出し、無害な pathlib 呼び出しを注入します。
報告された動作は次のとおりです:
TStreamerInfo メタデータを読み取る。ExploitTarget の Python クラスソースを生成する。read_members メソッドを呼び出すと、注入された式が実行される。root_file_builder.py は、細工されたストリーマメタデータを持つ malicious_tstreamerinfo.root を作成します。
run_poc.py は、uproot でファイルを開き、ファイル由来の ExploitTarget クラスの生成を強制し、生成された read_members メソッドを呼び出して、マーカーファイルの証拠を検証します。
ローカルのテスト環境でのみ実行してください:
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python -B run_poc.py
脆弱なバージョンで期待される出力:
uproot_version: 5.7.4
file_backed_element_name_contains_payload: True
class_code_contains_injected_pathlib_call: True
expected_exception: True
exception_type: DeserializationError
marker_exists: True
marker_contents:
executed through uproot generated read_members
success: True
ペイロードは意図的に無害です。ローカルマーカー文字列を書き込むだけです:
executed through uproot generated read_members
シェルを起動したり、ネットワークサービスに接続したり、シークレットを読み取ったり、データを削除したり、PoC ディレクトリ外のファイルを変更したりすることはありません。
uproot 5.7.5 以降にアップグレードしてください。
直ちにアップグレードできない場合:
TStreamerInfo メタデータを検証または拒否する。| 日付 | 出来事 |
|---|---|
| 2026年5月20日 | VulnCheck に脆弱性を提出 |
Sai Teja Erukude によって発見・報告され、VulnCheck を通じて調整されました。
| 2026年5月20日 | VulnCheck がアウトリーチを開始。CVE-2026-9147 が暫定的に割り当てられる |
| 2026年7月5日 | パッチを含む uproot 5.7.5 がリリース |
| 2026年7月18日 | CVE-2026-9147 が公開 |