GitHub Advisory Databaseに、setuptoolsのWindows向け処理に関する脆弱性情報が掲載されています。細工したwheelを従来型の処理でインストールすると、本来の配置先の外にファイルを作成できる問題です。資料には掲載日がなく、対象バージョンや修正版も記載されていません。
Windowsの従来型インストール処理が対象
脆弱性の識別子は「GHSA-xmj3-9gf7-h52w」です。対象はWindows上のsetuptoolsによる従来型のwheelインストール処理で、問題の呼び出し経路は「Wheel.install_as_egg」から始まります。関連するソースファイルは「setuptools/wheel.py」です。
wheelは、パッケージを配布するための形式です。今回の問題では、その中にある「.dist-info/namespace_packages.txt」というメタデータが攻撃に使われます。ドライブ指定を含む絶対パスにより、本来の配置先が無視されます。
アドバイザリーによると、既存のwheel名やZIP内のパスの検査では、このメタデータを検証しません。確認すべきなのは、ファイル名の検査があるかだけではなく、該当するインストール経路を使っているかどうかです。
日本での提供は発表には書かれていません。国内環境を確認する際も、まず資料に示されたWindowsと処理経路の条件で切り分ける必要があります。
作成できるのは内容を変更できないファイル
作成されるファイル名は「init.py」です。攻撃者は作成先を左右できますが、ファイルの内容は変更できません。また、ファイル作成にはインストールを実行するプロセスの権限が使われます。
このため、配置先の問題と実行権限を分けずに確認することが重要です。インストール処理がどの権限で動くかは、書き込み可能な範囲を確認する手掛かりになります。一方、今回の資料から、任意の内容を書き込める問題と読み替えることはできません。
再現試験では、配置先の外へのファイル作成が例外なく完了しています。ただし、作成先の親ディレクトリが既に存在する必要がありました。処理がエラーなく終了したことだけでは、本来の配置先以外にファイルができていないとは判断できません。
影響する会社・しない会社
- 影響する: Windowsでsetuptoolsの従来型wheelインストール処理を使い、Wheel.install_as_eggに至る環境がある会社です。開発担当や委託先に、利用経路の確認を依頼する必要があります。
- 影響する: 上記の処理で外部から受け取ったwheelを扱う会社は、取得元とインストール実行権限を優先して確認する対象です。対象バージョンの範囲は発表には書かれていません。
- 影響しない: Windows上で該当する処理を使う環境がない会社は、資料に示された発生条件には当たりません。ただし、特定のバージョンを安全と判断できる情報は資料にありません。