CVE-2026-44827は、trust_remote_codeフラグがオフになっていても、Hugging Face Diffusersモデルをロードする際に攻撃者が任意のコードを実行することを可能にします。研究者はこの欠陥を「FaceHugger」と名付け、ライブラリの2フェーズのモデルロードプロセスにおけるレースコンディションに起因することを突き止めました。ハブからモデルを取得するすべてのパイプラインが影響を受ける可能性があります。
なぜこの脆弱性が重要なのか
Diffusersは、text-to-imageやその他の拡散モデルを支えています。2026年7月には810万ダウンロードを記録しており、無数のCI/CDジョブ、コンテナイメージ、およびエンタープライズ推論サービスがこれに依存しています。このバグは、モデルに同梱されている信頼できないPythonコードをブロックするために開発者が有効にする主要な安全メカニズム(trust_remote_code)を無効化してしまいます。
バイパスの仕組み
- 2フェーズのロード: Diffusersはまずモデルの設定を取得し、次に2番目のリクエストでモデルの重みと関連するすべてのコードを取得します。
- レースコンディション: 最初のリクエストを検査するセキュリティチェックが、2番目のリクエストには適用されません。
- ペイロードの挿入: 2番目のリクエストを制御する攻撃者が悪意のあるコードを注入し、ライブラリが後にそれを実行することで、信頼ゲートを完全にバイパスします。
チェックは最初のリクエストのみを確認するため、trust_remote_codeを無効にしても、誤った安心感を与えることになります。
開発者が直ちにとるべき対策
- Diffusersのバージョンを固定する:
requirements.txtまたはロックファイルでバージョンを固定し、脆弱なリリースへの意図しないアップグレードを防ぎます。 - 本番環境でのオンザフライなモデル取得を避ける: モデルを信頼できるアーティファクトストア(例:社内のS3バケット)にダウンロードし、そこからロードするようにします。
- モデルリポジトリを監査する: 使用前に、モデルのコードファイルが期待されるハッシュと一致するか、または審査済みのソースから提供
