重大なPickleScanの脆弱性がAIモデルのサプライチェーンを露呈

PythonのpickleファイルおよびPyTorchモデルをスキャンするために広く利用されているツール「PickleScan」に影響する、3件の重大なゼロデイ脆弱性がサイバーセキュリティ研究者によって発見されました。

いずれの欠陥もCVSSスコアは 9.3で、攻撃者がモデルスキャンの保護策を回避し、悪意ある機械学習モデルを検知されないまま配布できる可能性を示しています。

JFrog Security Research Teamは、これらの脆弱性について、12月2日に公開されたアドバイザリで説明しています。

3つの重大な欠陥

1つ目の欠陥であるCVE-2025-10155は、単純なファイル拡張子による回避に関するものでした。研究者は、悪意あるpickleファイルの名前を.binや.ptといった一般的なPyTorch拡張子に変更すると、PickleScanがファイル種別を誤分類し、PyTorch専用の解析ロジックに引き渡してしまうことを突き止めました。スキャナーが内容検査よりも拡張子を優先していたため、この不一致によりスキャンが失敗する一方で、PyTorchは通常どおりファイルを読み込んでしまいました。

2つ目の問題であるCVE-2025-10156は、PickleScanとPyTorchがZIPアーカイブを処理する方法の間にある、より深いギャップを露呈しました。PickleScanはPythonのzipfileモジュールに依存しており、巡回冗長検査(CRC)エラーに遭遇すると例外を投げました。PyTorchはこれらの不一致を無視するため、悪意あるコードを含む破損アーカイブでも正常に読み込める可能性がありました。研究者は、PyTorchモデルアーカイブ内のCRC値をゼロにするとPickleScanが失敗し、攻撃者が回避済みモデルをアップロードするために悪用できる盲点が生まれることを実証しました。

3つ目の脆弱性であるCVE-2025-10157は、PickleScanの危険なimportのブラックリストを攻撃者が回避できるものでした。悪意あるペイロードは、フラグ付けされたモジュールを直接参照する代わりに、そのモジュールのサブクラスを呼び出すことで、スキャナーに「Dangerous」ではなく「Suspicious」とだけ判定させることが可能でした。内部のasyncioクラスを用いた概念実証(POC)では、「Dangerous」判定を回避しつつ、デシリアライズ中に任意のコマンドを実行できることが示されました。

AIサプライチェーンセキュリティについてさらに読む:AIのハルシネーションが「スロップスクワッティング」のサプライチェーン脅威を生む

この発見は、以下を含むシステム的リスクを浮き彫りにしています。

  • 単一のスキャンツールへの依存

  • セキュリティツールと機械学習(ML)フレームワーク間でのファイル処理挙動の相違

  • 主要なモデルハブ全体にわたる大規模なサプライチェーン攻撃への露出

これらの脆弱性は2025年6月29日にPickleScanのメンテナに開示され、2025年9月2日に修正されました。

JFrogは、PickleScanをバージョン0.0.31へ更新し、多層防御を採用するとともに、Safetensorsのようなより安全な形式へ移行することを推奨しました。

翻訳元: https://www.infosecurity-magazine.com/news/picklescan-flaws-expose-ai-supply/

ソース: infosecurity-magazine.com