PickleScan の脆弱性 CVE-2025-10155/10156/10157 が FIX:悪意の PyTorch モデルと任意のコード実行

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 にモデルが読み込まれた際に、悪意のコードを実行できることだ。

Official documentation of Python’s pickle module with a user warning
Official documentation of Python’s pickle module with a user warning

1つ目のバグ CVE-2025-10155 を悪用する攻撃者は、ファイル拡張子を変更するだけでスキャンを回避できる。

悪意の pickle ファイルを PyTorch 形式の拡張子 (.bin/.pt など) に変更すると PickleScan が混乱し、コンテンツの分析に失敗する可能性がある。ただし PyTorch は、そのファイルを読み込み、実行してしまう。

CVE IDVulnerability NameCVSS ScoreSeverity
CVE-2025-10155File Extension Bypass9.3Critical
CVE-2025-10156CRC Bypass in ZIP Archives9.3Critical
CVE-2025-10157Unsafe Globals Bypass9.3Critical

2つ目のバグ CVE-2025-10156 を悪用する攻撃者は、ZIP ファイル内の CRC (整合性チェック) 値を破損させることで、ZIP アーカイブの処理方法を操作できる。

したがって、攻撃者は、PickleScan のクラッシュや失敗を引き起こせるが、PyTorch は同じ破損したアーカイブからモデルを読み込む可能性がある。それにより、マルウェアが侵入する経路が生じる。

Proof of Concept – how file extension allows to bypass detection
Proof of Concept – how the file extension allows bypassing detection

3つ目のバグ CVE-2025-10157 を悪用する攻撃者は、asyncio などの危険なモジュールのサブクラスまたは内部インポートを介して、PickleScan が指定する “安全でない” モジュールのブロック・リストを標的にできる。

攻撃者は “危険” ラベルをすり抜け、”疑わしい” とマークされるが、任意のコマンド実行が可能になる。

数多くのプラットフォームや企業が、主要な防御層としての PickleScan に依存しているため、これらの脆弱性は AI モデルに対して深刻なサプライチェーン・リスクをもたらす。

Catalog provides precise information about the model and the evidences found inside
The catalog provides precise information about the model and the evidence found inside

2025年6月29日の時点で JFrog チームは、PickleScan のメンテナーたちに、これらの欠陥を報告した。それを受けた PickleScan は、2025年9月2日にバージョン 0.0.31 をリリースし、この問題に対処している。

ユーザーに対して強く推奨されるのは、速やかなアップグレードにより、安全でない Pickle ベースのモデルを修正することだ。さらに言えば、サンドボックス/Safetensor などの安全なフォーマット/安全なモデル・リポジトリなどの、階層化された防御策を使用する必要がある。