何が起きたか
Trail of Bits の fickling — 悪意のある pickle ベースの ML モデルファイルを検出するための広く使用されている静的解析ツール — のロジックエラーにより、その中核の保護 (MLAllowlist) が機能しなくなり、細工された悪意のある pickle ペイロードがセーフティチェックを通過して逆シリアル化時に任意のコードを実行できるようになります。2026年7月4日に NVD に公開、CVSS 8.8 (高)。
なぜ重要か
fickling は ML エコシステム全体 (Hugging Face Hub ツーリングを含む) で使用される事実上の標準スキャンツールであり、信頼できない pickle シリアル化モデルを読み込む前に検証するために使用されます。中核のチェックが静かに失敗するセキュリティツールは、fickling の評決に基づいてモデル読み込みをゲートするすべてのパイプラインが、中毒されたモデルファイルから攻撃者が制御するコードを無意識に実行する可能性があることを意味し、ML サプライチェーンの信頼を大規模に直接危険にさらします。
攻撃経路
UnsafeImportsML 解析パスは、検査するすべてのインポートノードに対して無条件に AnalysisContext.shorten_code(node) を呼び出し、副作用として共有される 'reported_shortened_code' セットに値を入力します。これにより、後続の MLAllowlist パスがそのアロウリストチェック全体をスキップするようになり、デッドコードになります。その結果、UNSAFE_IMPORTS デニーリストの外部のモジュール (任意のコード実行が可能な非ML 標準ライブラリモジュールを含む) は fickling.check_safety() を通して密輸でき、LIKELY_SAFE として報告され、fickling の評決を信頼するすべてのアプリケーションによって pickle.loads() 経由で実行されます。
影響を受けるシステム
Trail of Bits fickling ≤ 0.1.11 (0.1.12で修正)
緩和策
fickling 0.1.12 以降にアップグレードしてください。これにより、MLAllowlist 強制を復元するロジックエラーが修正されます。信頼できない pickle ファイルの場合、fickling のセーフティ評決のみに依存しないでください — サンドボックス化または safetensors 形式への移行と組み合わせてください。