Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SE6013_Project — CVE-2026-4372:脅威モデル、根本原因分析、再現と検出 | Kitploit
ツール/GitHubGitHub/alvin21mfmlai/se6013_project
防御ツール静的分析脆弱性分析サプライチェーンセキュリティ論文と研究学習と教育AIセキュリティ
GitHubalvin21mfmlai/se6013_project

SE6013_Project

CVE-2026-4372:脅威モデル、根本原因分析、再現と検出

リポジトリを見る
16日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-4372: 脅威モデル、根本原因、防御

Hugging Face transformers における重大なリモートコード実行 (RCE) 脆弱性の防御的分析。


目次

  1. 脆弱性の概要
  2. まず一次情報源で確認する
  3. 脅威モデル
  4. 根本原因
  5. 防御
  6. 検出

1. 脆弱性の概要

項目値
識別子CVE-2026-4372 / GHSA-29pf-2h5f-8g72
コンポーネントHugging Face transformers
分類リモートコード実行 (CWE-94、コードインジェクション)
エントリポイントAutoModelForCausalLM.from_pretrained()、モデル読み込み時
メカニズムモデルの config.json 内のアテンション設定 (attn_implementation / _attn_implementation_internal) により、ライブラリが攻撃者のコードをダウンロードして実行する
重要な特性trust_remote_code=False をバイパスする。これはまさにこの攻撃を防ぐためにユーザーが依拠している設定である
修正バージョンtransformers 5.3.0

安全を保つために意図的に trust_remote_code=False を設定していたユーザーも、依然として影響を受けていた。


2. まず一次情報源で確認する ⚠️

以下の詳細を最終的なものとして扱う前に、公式情報源と照合して確認すること:

  • GHSA-29pf-2h5f-8g72 (GitHub アドバイザリ): 影響を受けるバージョンと概要。
  • NVD の CVE-2026-4372 エントリ: 深刻度スコアと弱点の種類。
  • アドバイザリからリンクされている修正コミット: どのコードパスが塞がれたかを正確に示す。

出回っているトリガーの説明は2つある:

  1. config.json のアテンションフィールド (_attn_implementation_internal)。
  2. kernels パッケージ。多くの場合 transformers[all] 経由でインストールされる。

これらはおそらく同じ経路である: アテンションフィールドが Hub リポジトリを指定し、 kernels パッケージがそこからコードをダウンロードして実行する。修正コミットが確認するまでは、 ここに記載されたフィールド名は暫定的なものとして扱うこと。


3. 脅威モデル

3.1 モデルの読み込み方法

[ Model repo on the Hub ]       untrusted source
        │  config.json, tokenizer, weights, (code)
        ▼
[ Download to local cache ]
        ▼
[ Read config.json ]            settings become a config object
        ▼
[ Pick model class + attention type ]
        ▼
[ Build model, load weights ]
        ▼
[ Model runs in the user's process, with the user's permissions ]

3.2 信頼境界

#境界適用されるべきガード
TB-1ハブ → ローカルディスク信頼済みリポジトリ、固定コミットへのピン留め
TB-2設定ファイル → 設定オブジェクト既知の安全な値のみを許可する
TB-3設定オブジェクト → 実行中のコードtrust_remote_code
TB-4モデル → オペレーティングシステムサンドボックス、最小権限

このバグは TB-3 における失敗である。設定ファイルからの値が、trust_remote_code チェックを通過することなくコード実行に到達してしまった。

3.3 被害者が攻撃者のモデルを取得する方法

  • 似た名前のリポジトリ、たとえば人気モデルの名前のほぼコピー。
  • 悪意のある、または侵害された発行者が汚染されたバージョンをプッシュする。
  • チュートリアル、ノートブック、依存関係が悪意のあるリポジトリを指し示す。
  • ピン留めされていないバージョン:昨日は安全だったリポジトリが、今日は悪意のあるファイルを配信する。

いずれの場合も、被害者は通常の呼び出し AutoModelForCausalLM.from_pretrained("<repo-id>") を実行するだけである。


4. 根本原因

4.1 ガードが誤った経路に置かれていた

trust_remote_code は、リポジトリのコードを実行する一つの方法、すなわちカスタムの modeling_*.py ファイルを保護する。アテンション設定は、そのガードを一切経由しない第二の方法であった。

     untrusted config.json attention setting
                    │
                    ▼
        "pick attention type" logic
                    │                  never checks:
                    ✗ ─────────────▶   trust_remote_code
                    ▼
     download + run code from the Hub (via `kernels`)

4.2 寄与要因

  1. 同じ危険な動作に至る2つの経路があり、そのうち1つだけが保護されていた。
  2. コードを選択する設定が単なるデータとして扱われ、数値と同じ信頼レベルに置かれていた。
  3. 「内部」フィールド(_ プレフィックス)が信頼できないファイルから設定可能であった。
  4. オプションのパッケージ(kernels)がインストールされていると攻撃を暗黙的に有効化した。例えば transformers[all] 経由など。

4.3 教訓

危険な動作そのものを保護せよ。その経路の1つだけではなく。 「コードを実行する」に至りうるすべての経路が、同じチェックを通過しなければならない。


5. 防御

防御は1つの自己完結したスクリプト defence/safe_load.py である。その関数 safe_from_pretrained() は from_pretrained() を置き換え、モデルがロードされる前に4つのチェックを実行する。1つでも失敗すれば UnsafeModelLoad を送出し、何もロードされない。

#チェック内容
1バージョンtransformers が 5.3.0 より古い場合は拒否する。これが本当の修正である。
2Kernels古いバージョンでは、攻撃に必要であるため kernels パッケージがインストールされていれば拒否する。
3Configモデルの設定ファイルを読み取り、危険な設定(下記参照)が含まれていれば拒否する。Hub のモデルは同一コミットでチェックおよびロードされる。
4リモートコード常に trust_remote_code=False を設定する。あくまでベストプラクティスであり、この CVE はこれをバイパスする。

古いバージョンはチェック1で拒否される。チェック2と3は、ラボ専用オプション allow_vulnerable_env=True が設定されている場合にのみ、古いバージョンで実行される。

チェック3がブロックするもの:

  • 組み込みでないアテンション設定(attn_implementation、_attn_implementation、_attn_implementation_internal)。許可されるのは eager、sdpa、flash_attention_2、flash_attention_3、flex_attention のみであるため、attacker-org/evil-kernel のような値は、ネストされたサブ設定内であってもブロックされる。
  • フィールド _attn_implementation_internal、auto_map、custom_pipelines。
  • 読み取れない設定ファイル。
  • config= で直接渡された設定。チェックをスキップしてしまうため。

Hub のモデルでは、設定ファイルのみがダウンロードされ、重みやコードは決してダウンロードされない。これらは1つの固定コミットでダウンロードされ、その後モデルは同じコミットからロードされるため、チェックとロードの間でファイルをすり替えることはできない。警告を確認した後、人は accept_findings=True でチェック3を上書きできる。

状況攻撃を阻止するもの
transformers 5.3.0 以降チェック1
古いバージョン、kernels インストール済みチェック2
古いバージョン、設定に危険な項目ありチェック3
チェック後にリポジトリが変更されたチェック3(同一コミットでチェックおよびロード)

制限: チェック3は上記の設定しか認識しないため、新しい攻撃を捕捉することはできない。transformers>=5.3.0 へのアップグレードが唯一の完全な修正である。


6. 検出

検出コンポーネントは、CVE-2026-4372 に関連する潜在的に安全でない Hugging Face モデル設定および脆弱な依存関係を特定する。2つの独立した検出メカニズム、静的設定スキャンと依存関係分析を提供する。

防御コンポーネントとは異なり、これらのツールはモデルをロードしたり信頼できないコードを実行したりすることなく、潜在的なセキュリティリスクを報告する。

6.1 静的設定検出

ファイル: src/detection/static_detector.py

静的検出器は config.json ファイルを解析し、ネストされた JSON オブジェクトや配列を再帰的に調べて、セキュリティ上重要なフィールドを探す。

以下のフィールドが監視される:

設定フィールド検出目的
_attn_implementation_internalCVE-2026-4372 に関連する内部アテンション設定フィールド
_experts_implementation_internalレビューが必要な追加の内部実装フィールド
auto_mapカスタムモデル実装コードを参照する可能性がある
custom_pipelinesカスタムパイプライン実装を参照する可能性がある

使用方法:

cd src/detection
python3 static_detector.py samples/suspicious_config.json

出力例:

[WARNING] samples/suspicious_config.json: review field '_attn_implementation_internal'

終了コード:

終了コード意味
0PASS — 監視対象フィールドは検出されませんでした
1WARNING — 1つ以上の監視対象フィールドが検出されました
2ERROR — 無効な JSON、ファイルの欠落、または処理エラー

監視対象フィールドの存在は、必ずしも悪用を示すものではありません。検出結果についてはさらなる調査が必要です。

6.2 依存関係の検出

ファイル: src/detection/dependency_detector.py

依存関係検出器は Python 環境を調べて以下を特定します:

  • インストールされている Hugging Face Transformers のバージョン
  • インストールされている kernels パッケージのバージョン(利用可能な場合)
  • オプションの kernels パッケージがインポート可能かどうか
  • Transformers のバージョンが文書化された影響範囲内に該当するかどうか

使用方法:

cd src/detection
python3 -m pip install packaging
python3 dependency_detector.py

シミュレートされた脆弱な環境に対する出力例:

=== CVE-2026-4372 Dependency Detection ===
Transformers version: 5.2.0
Kernels version: Not installed
Kernels import available: False
[WARNING] Vulnerable Transformers version detected.
[INFO] The optional kernels package is not available.
[ACTION] Upgrade Transformers to 5.3.0 or newer.

検出器は読み取り専用のチェックを実行し、脆弱な Transformers バージョンをインストールしたり実行したりすることはありません。

6.3 依存関係の脆弱性監査

pip-audit ツールを使用して、脆弱なバージョンと修正済みバージョンの Transformers に関する公開セキュリティアドバイザリを比較しました。

ファイル:

  • requirements-vulnerable.txt — Transformers 5.2.0
  • requirements-patched.txt — Transformers 5.3.0

コマンド:

cd src/detection

pip-audit --no-deps --disable-pip -r requirements-vulnerable.txt

pip-audit --no-deps --disable-pip -r requirements-patched.txt

pip-audit 2.10.1 を使用した観測結果:

Transformers バージョン報告された脆弱性エントリ数
5.2.06
5.3.03

パッチ適用後のバージョンでは、脆弱性エントリが3件減少したことが示されました。ただし、Transformers 5.3.0 には依然として他の報告された脆弱性が存在していました。これらの監査結果は、アドバイザリデータベースの更新に伴い変更される可能性があります。

この監査は公開されている依存関係の脆弱性を特定するものであり、悪用可能性を独自に実証するものではありません。

6.4 自動テスト

ファイル: src/detection/test_detection.py

Python の組み込み unittest フレームワークを使用して、8つのユニットテストを実装しました。

テストカバレッジ:

  1. 良性の設定
  2. 疑わしい attention 実装フィールド
  3. ネストされた attention 実装フィールド
  4. experts 実装フィールド
  5. auto_map フィールド
  6. custom_pipelines フィールド
  7. 無効な JSON
  8. 設定ファイルの欠落

テストの実行:

cd src/detection
python3 -m unittest -v test_detection.py

観測された結果:

Ran 8 tests

OK

8つのテストはすべて、隔離された Python 3.12 Docker 環境で合格しました。

6.5 制限事項と統合

ツールをダウンロード