脆弱性・CVE速報深刻度: 緊急

MLflow のサーバーで、送り込まれた Python ファイルが読み込まれてコード実行に至る不具合(CVE-2026-116692): 3.12.0 以上 3.17.0 未満が対象、3.17.0 で修正

目次(5)

CVE-2026-116692

機械学習の実験管理ツール MLflow のサーバーで、外から送られた「モジュールの名前」をそのまま読み込む仕組みを悪用され、認証なしの既定設定では任意の Python コードを実行されるおそれがある不具合(CVE-2026-116692、GHSA-26p8-2jq9-3vq9)が公開されました。GitHub の深刻度は Critical、CVSS v3.1 は 9.8 です。修正版は 3.17.0(PyPI に 10/07 UTC 公開)、勧告の公開は 10/27 UTC です。CISA の KEV には、確認した範囲では載っていません。

何が起きるか

  • MLflow 3.12.0 から、第三者製の評価部品(scorer)を登録して呼び出す機能が入りました。サーバーは、送られてきた「モジュール名」が許可された 4 つの名前(ragas、deepeval、trulens、phoenix)で始まるかだけを確かめ、そのモジュールを読み込んで、指定された名前のクラスを作ります。
  • 「名前が許可された名前で始まる」ことは、「中身が信頼できる」ことを意味しません。サーバーがその場所に書き込めるなら、攻撃者が置いた Python ファイルが、許可された名前の下のモジュールとして読み込まれます。
  • 勧告が示す流れは次のとおりです。(1) 実験を作り、成果物の保存先を許可された部品のフォルダ内に指定する、(2) 実行(run)を作り、その保存先に Python ファイルをアップロードする、(3) そのファイルを指すモジュール名で評価部品の呼び出しを送る、の 3 段階です。読み込みの時点で、ファイルの中の処理が実行されます。
  • 勧告によると、認証を有効にしていない既定の公式イメージ(3.14.0)では、資格情報なしで実行でき、プロセスは root(uid 0)で動いていました(勧告の記載で、当サイトでは再現していません)。

影響を受ける版と条件

項目内容
対象mlflow(PyPI)3.12.0rc0 以上 3.17.0 未満
修正版3.17.0
弱点CWE-94(コード生成の不備)、CWE-470(外部入力による任意のクラス・コードの選択)
評価GitHub 提供の CVSS v3.1 は 9.8(AV:N/AC:L/PR:N/UI:N)。NVD 自身の評価は未実施
前提サーバーのプロセスが、許可された評価部品のパッケージのフォルダに書き込めること
  • 3.11.1 以前には、この評価部品の機能自体がありません(勧告の説明)。
  • 認証を有効にした環境でも、勧告によれば、評価部品の呼び出し口自体には実験ごとの権限確認がありません。ただし実際に悪用するには、実験・実行の作成とアップロードができる利用者であることが要ります。
  • サーバーのファイルシステムが読み取り専用の場合や、該当フォルダの所有者が別で書き込めない場合は、勧告の説明では、この攻撃の流れは成立しません。

修正の中身

修正コミット a732443(9/16 UTC、PR #25906)は、次の変更を入れます。

  • モジュール名の照合を「許可された名前で始まる」から「許可された名前と完全に一致する」に変更しました。許可リストは、サポートする評価部品が実際にある個別のモジュールの一覧に広げています。
  • 評価指標の名前(metric_name)が、ただの識別子(ドットを含まない名前)であることを確かめるようにしました。
  • 読み込んだクラスが Scorer の子クラスであることを確かめるようにしました。

リリースタグ v3.17.0 にこのコミットが含まれることは、比較で確認しました。

対応

  1. mlflow を 3.17.0 以上に更新します。pip show mlflow や、ロックファイル・コンテナのイメージで版を確かめます。
  2. すぐ更新できない場合の一時策は、勧告からの引用ではなく本記事の推定です。サーバーを認証なしでインターネットや社内の広い範囲に公開しない、実行プロセスを root 以外にする、コンテナのファイルシステムを読み取り専用にする、の 3 つが考えられます。
  3. 3.12.0 から 3.16.x を使ってきたサーバーは、想定外の実験や、評価部品のパッケージ内に見覚えのないフォルダやファイルがないかを確認します(本記事の推定)。
  4. 追跡サーバーへのアクセスを、必要な利用者・ネットワークに限ります。

未確認の点

  • NVD の状態は Awaiting Analysis(10/27 公開、10/28 更新)で、NVD 自身の評価はまだありません。CVSS v3.1 の 9.8 は GitHub の評価です。勧告の CVSS v4.0 の欄は値がありません。
  • EPSS は 0.70%(10/31 時点、百分位 0.53)で、悪用の報告は見つかっておらず、KEV 掲載もなしです。
  • 勧告本文には「2026-07-12 時点で修正版は見つかっていない」という旧い記述が残っています。修正が 3.17.0 に入っていることはタグの比較と PyPI の公開日で確認しました。
  • 修正(9/16 の取り込み、10/07 のリリース)から勧告の公開(10/27)まで約 3 週間あります。この間の経緯は未確認です。
  • 実際の環境での再現は確認していません。記載は勧告、NVD、修正コミットに基づきます。

この記事について

出典

この記事を共有