PickleScanにゼロデイ脆弱性、悪意のあるPyTorchモデルによる任意コード実行の恐れ

概要

JFrog Security Researchは、機械学習モデルの悪意あるコンテンツをスキャンする業界標準ツールであるPickleScanに、3つの深刻なゼロデイ脆弱性を発見しました。これらの脆弱性により、攻撃者はPickleScanのマルウェア検出メカニズムを完全に回避し、検出不可能なコードを含む悪意のあるMLモデルを配布することで、大規模なサプライチェーン攻撃を仕掛ける可能性があります。この発見は、AIセキュリティエコシステムが単一のセキュリティソリューションに依存していることの根本的な弱点を浮き彫りにしています。

PyTorchモデルの潜在的脅威

PyTorchは機械学習で広く利用されていますが、そのセキュリティには大きな課題があります。Hugging Faceのようなプラットフォームには20万以上の公開モデルが存在しますが、PyTorchはデフォルトでPythonの「pickle」シリアル化形式に依存しています。pickleの柔軟性は任意のPythonオブジェクトを再構築できるという利点がある一方で、この特性が悪用されると、デシリアライズ中に任意のPythonコードが埋め込まれ、実行される可能性という重大な脆弱性を生み出します。ユーザーが信頼できないPyTorchモデルをロードすると、機密データ漏洩、バックドアのインストール、システム全体の侵害につながる悪意のあるコードを実行するリスクがあります。実際に、Hugging Faceではすでに、無防備なデータサイエンティストを標的としたサイレントバックドアを含む悪意のあるモデルが発見されています。

PickleScanの役割と限界

PickleScanは、実行前に危険な操作を検出するためにpickleバイトコードを解析する、業界の最前線の防御策として登場しました。このツールはバイトコードレベルでファイルを分析し、危険なインポートのブロックリストと照合し、複数のPyTorch形式をサポートしています。しかし、そのセキュリティモデルは、「PickleScanがPyTorchがファイルをロードする方法と全く同じにファイルを解釈しなければならない」という重要な仮定に基づいています。この解析のずれが、悪用可能なセキュリティギャップを生み出すのです。

発見された3つの重大な脆弱性

  • CVE-2025-10155 (CVSS 9.3): ファイルタイプ検出の迂回

    この脆弱性は、PickleScanのファイルタイプ検出ロジックを悪用します。攻撃者は、悪意のあるpickleファイルの名前を.binや.ptなどのPyTorch関連の拡張子に変更することで、PickleScanのPyTorch固有のスキャナーを機能不全に陥らせることができます。一方、PyTorch自体は、拡張子ではなく内容を分析してファイルを正常にロードするため、悪意のあるペイロードは検出されずに実行されてしまいます。

  • CVE-2025-10156 (CVSS 9.3): ZIPアーカイブのCRCエラー悪用

    この脆弱性は、ZIPアーカイブ内のCRC (Cyclic Redundancy Check) エラーに関連します。PickleScanはCRCの不一致に遭遇すると完全に失敗し、スキャンを停止する例外を発生させます。しかし、PyTorchのモデル読み込みではこれらのCRCチェックがバイパスされることが多く、PickleScanがファイルをスキャン不能とマークする一方で、PyTorchがその内容を正常に読み込み、実行するという危険な不一致が生じます。

  • CVE-2025-10157 (CVSS 9.3): 危険なグローバル変数のチェック迂回

    PickleScanの安全でないグローバル変数のチェックは、正確なモジュール名ではなく、危険なインポートのサブクラスを使用することで回避できることが判明しました。例えば、ブラックリストに登録されているライブラリであるasyncioから内部クラスをインポートすると、チェックが完全に迂回され、攻撃者は悪意のあるペイロードを注入できます。この際、PickleScanは脅威を「危険」とではなく「疑わしい」と分類してしまいます。

体系的なセキュリティへの影響と推奨事項

これらの脆弱性は、AIセキュリティインフラにおけるより深い問題、つまり単一障害点を露呈しています。PickleScanの障害は、セキュリティアーキテクチャ全体が崩壊する可能性を意味します。数百万ものアップロードモデルのスキャンにPickleScanを統合しているHugging Faceに依存する組織は、特にリスクに直面します。この脆弱性は、セキュリティツールとターゲットアプリケーション間の乖離が悪用可能なギャップを生み出す方法を示しており、AIセキュリティの専門家にとって重要な教訓となります。

組織は直ちに、これら3つの脆弱性すべてに対処したPickleScanバージョン0.0.31に更新する必要があります。しかし、このパッチだけでは不十分です。サンドボックス環境やJFrog Artifactoryのようなセキュアなモデルリポジトリプロキシを含む多層防御の実装は、さらなる保護を提供します。組織は、Safetensorsのようなより安全なMLモデル形式への移行を優先し、失敗したセキュリティスキャンの自動削除を実装すべきです。AIセキュリティコミュニティは、単一のツールが包括的な保護を保証できないことを認識し、進化する脅威の状況において多層防御戦略が不可欠であることを理解する必要があります。


元記事: https://gbhackers.com/picklescan-0-day/