PickleScan 0-Day Vulnerabilities Enable Arbitrary Code Execution via Malicious PyTorch Models
2024/12/04 CyberSecurityNews — 機械学習モデルをスキャンして悪意のコードを検出する、人気のオープンソース・ツール PickleScan に、深刻なゼロデイ脆弱性 CVE-2025-10155/10156/10157 が発見された。PickleScan は Hugging Face をはじめとする AI の世界で広く利用されており、Python の pickle 形式で保存された PyTorch モデルのチェックに使用されている。

Pickle は柔軟性に優れているが、pickle ファイルを読み込むことで任意の Python コードを実行するという性質があるため、危険を伴う。つまり、モデル・ファイルの中に、データの窃取/バックドアのインストール/システムの乗っ取りを行うコマンドを、密かに取り込むことが可能になる。
悪意の PyTorch モデルがコード実行を引き起こす
JFrog のチームが発見したのは、これらの脆弱性を悪用する攻撃者が PickleScan のチェックを回避し、PyTorch にモデルが読み込まれた際に、悪意のコードを実行できることだ。
1つ目のバグ CVE-2025-10155 を悪用する攻撃者は、ファイル拡張子を変更するだけでスキャンを回避できる。
悪意の pickle ファイルを PyTorch 形式の拡張子 (.bin/.pt など) に変更すると PickleScan が混乱し、コンテンツの分析に失敗する可能性がある。ただし PyTorch は、そのファイルを読み込み、実行してしまう。
| CVE ID | Vulnerability Name | CVSS Score | Severity |
|---|---|---|---|
| CVE-2025-10155 | File Extension Bypass | 9.3 | Critical |
| CVE-2025-10156 | CRC Bypass in ZIP Archives | 9.3 | Critical |
| CVE-2025-10157 | Unsafe Globals Bypass | 9.3 | Critical |
2つ目のバグ CVE-2025-10156 を悪用する攻撃者は、ZIP ファイル内の CRC (整合性チェック) 値を破損させることで、ZIP アーカイブの処理方法を操作できる。
したがって、攻撃者は、PickleScan のクラッシュや失敗を引き起こせるが、PyTorch は同じ破損したアーカイブからモデルを読み込む可能性がある。それにより、マルウェアが侵入する経路が生じる。

3つ目のバグ CVE-2025-10157 を悪用する攻撃者は、asyncio などの危険なモジュールのサブクラスまたは内部インポートを介して、PickleScan が指定する “安全でない” モジュールのブロック・リストを標的にできる。
攻撃者は “危険” ラベルをすり抜け、”疑わしい” とマークされるが、任意のコマンド実行が可能になる。
数多くのプラットフォームや企業が、主要な防御層としての PickleScan に依存しているため、これらの脆弱性は AI モデルに対して深刻なサプライチェーン・リスクをもたらす。
2025年6月29日の時点で JFrog チームは、PickleScan のメンテナーたちに、これらの欠陥を報告した。それを受けた PickleScan は、2025年9月2日にバージョン 0.0.31 をリリースし、この問題に対処している。
ユーザーに対して強く推奨されるのは、速やかなアップグレードにより、安全でない Pickle ベースのモデルを修正することだ。さらに言えば、サンドボックス/Safetensor などの安全なフォーマット/安全なモデル・リポジトリなどの、階層化された防御策を使用する必要がある。
AI の学習モデルの安全性をチェックするはずの PickleScan 自体に、深刻な脆弱性が発見されました。その原因は、モデルの保存に使われる Python の pickle 形式の性質にあります。Pickleは柔軟ですが、ファイルを読み込むだけで任意の Python コードを実行できてしまうという危険性が潜んでいます。この性質を悪用する攻撃者は、PickleScan のチェックを回避する三つの脆弱性である、ファイル拡張子の変更/ZIP ファイルの整合性操作/モジュールのブロック・リスト回避を突くことで、悪意のコードを仕込んだモデルを PyTorch に読み込ませ、システムの乗っ取りに至るとされます。ご利用のチームは、ご注意ください。よろしければ、PyTorch での検索結果も、ご参照ください。


You must be logged in to post a comment.