何が起きたか
_create_model_version()のプロンプトブランチは、パス検証がソースにURLスキームがある場合にのみ実行されるため、スキームのない相対ソースを受け入れます。また、mlflow.prompt.is_promptは真の値ではなくタグの存在から推測されます。これにより、リモートの呼び出し元が任意のサーバーローカルパスをモデルアーティファクトの場所として登録し、それを読み戻すことができます。CISA SSVCはこれを自動化可能で部分的な技術的影響があると分類しています。
なぜ重要か
デフォルトのデプロイメントでは、未認証の攻撃者がMLflowサーバープロセスが読み取り可能な任意のファイル(トークン、.env、モデルアーティファクト、他テナントのデータ)を読み取ることができ、資格情報の窃取やMLプラットフォーム内での横方向の移動を促進します。
攻撃経路
リモートの呼び出し元は、サーバーローカルパスをモデルバージョンのアーティファクト場所として保存し(パス検証はソースにURLスキームがある場合のみ実行)、/api/2.0/mlflow/model-versions/get-artifactを介してそれを読み戻し、MLflowサーバープロセスがアクセス可能なファイルを公開します。
影響を受けるシステム
MLflow >= 3.10.0、< 3.17.0
緩和策
MLflow 3.17.0にアップグレードしてください(GHSA-m65p-9j7q-6w33)。未認証のモデルレジストリアクセスを制限してください。