PythonMLflowコード実行深刻度 緊急

MLflowの脆弱性CVE-2026-116692|認証なしのコード実行と3.17.2への更新

公開 2026-11-09公表 2026-10-09資料確認 2026-11-09Pythonの脆弱性 236件のまとめ
起きること機械学習のサーバーを外から操られ、データや認証情報を持ち出されるおそれ
使われている所機械学習・生成AIの開発で、実験やモデルを管理するサーバー
対象製品MLflow
識別番号CVE-2026-116692・CVE-2026-116690・CVE-2026-116691・CVE-2026-115886
影響範囲コード実行は3.12.0rc0以上3.17.0未満、ファイルの読み取りは3.10.0〜3.16.1、APIキーの記録は2.19.0以上3.17.0未満(件ごとに条件あり)
修正情報3.17.0(同じ時期の別の脆弱性も直る3.17.2以上を推奨)
次にやること①MLflowの版と、サーバーを外から使えるかを確かめる ②3.17.2以上に上げる ③CrewAIの記録を使っていたらAPIキーを作り直す

機械学習の実験やモデルを管理するMLflowで、認証を設定していないトラッキングサーバーに、外から認証なしでPythonのコードを実行される脆弱性(CVE-2026-116692、緊急)が2026年10月9日に公表されました。同じ3.17.0では、サーバー上のファイルを読まれる件と、CrewAIの記録にAPIキーが残る件も直っています。3.17.0の後に別の脆弱性も直った3.17.2以上に上げ、サーバーを外から届く場所に置いていないかを確かめます。[1][2][3][6]

この記事の要点
  • コード実行の件は3.12.0rc0以上3.17.0未満が対象で、mlflow serverの既定の認証なしの構成では、サーバーに届けば誰でも実行できるおそれがあります。[1]
  • ファイル読み取りの件(3.10.0〜3.16.1)は、basic認証を有効にしていても、権限の低い利用者が認証のデータベースを読めるおそれがあります。[2]
  • mlflow.crewai.autolog()を使っていた場合は、上げてもAPIキーは記録に残ります。キーを作り直し、記録を消します。[3]
  • 3.17.1以前には、トレースのIDからファイルを書き込める別の脆弱性(CVE-2026-53995)があり、3.17.2で直りました。[5]

01MLflowの脆弱性で起きること

3.17.0で直った主な脆弱性は次の4件です。深刻度とCVSS 3.1の値は、MLflowのアドバイザリの評価です。[1][2][3][4]

番号起きること深刻度
CVE-2026-116692外部の評価器(scorer)を読み込む処理で、送り込んだPythonのファイルを実行される緊急(9.8)
CVE-2026-116690プロンプトとして登録したモデルの版を経由して、サーバー上のファイルを読まれる高(7.5)
CVE-2026-116691CrewAIの自動記録が、LLMのAPIキーをトレースに書き込む中(6.5)
CVE-2026-115886評価器の設定から、サーバーに任意の宛先へ通信させられる(SSRF)中(6.5)

コード実行の件は、実験の保存先を評価器のパッケージの中に指定し、実行の成果物としてPythonのファイルを置いたうえで、評価器の呼び出し(/ajax-api/3.0/mlflow/scorer/invoke)でそのファイルを読み込ませるものです。[1]

認証なしのサーバーに置いたファイルを、評価器として読み込ませて実行する

アドバイザリにある手順を、入口・脆弱な部品・起きることの順に並べる。

攻撃者のリクエスト実験を作り、成果物としてPythonのファイルを置く
APIを呼ぶ

MLflow 3.12.0rc0〜3.16.1

成果物の保存先評価器のパッケージの中を指定できる
評価器の読み込みパッケージ名の前方一致だけで読み込む
サーバーの権限で実行
Pythonのコード実行データ・認証情報・ネットワークに届く

出典 MLflow「GHSA-26p8-2jq9-3vq9」(2026-10-09)

02MLflowが対象になる条件

  • コード実行:3.12.0rc0以上3.17.0未満のトラッキングサーバーに、ネットワークから届くこと。サーバーのプロセスが評価器のパッケージの下に書き込めることも条件で、公式のコンテナイメージ(3.14.0で確認)ではrootで動き、この条件を満たしていました。basic認証を有効にしている場合は、実験の作成と成果物のアップロードができる利用者が必要です。[1]
  • ファイル読み取り:3.10.0〜3.16.1で、モデルの登録の機能が使えるサーバー。--app-name basic-authでも、モデルを作れる利用者なら認証のデータベース(管理者のパスワードのハッシュを含む)を読めるおそれがあります。[2]
  • APIキーの記録:2.19.0以上3.17.0未満で、mlflow.crewai.autolog()を有効にし、CrewAIのLLMにAPIキーを渡しているアプリ。サーバーを公開しているかは関係ありません。[3]
  • SSRF:3.12.0rc0以上3.17.0未満で、サーバーにtrulensとtrulens-providers-litellmを入れている場合。[4]

03悪用の状況

4件とも、米CISAの「悪用が確認された脆弱性の一覧(KEV)」には載っていません(11月6日版で確認)。どのアドバイザリにも再現の手順(PoC)が載っています。今後30日に悪用される見込みの推定(EPSS)は、コード実行の件が0.70%、ファイル読み取りの件が1.80%です(11月8日時点)。[1][2][7][8]

MLflowでは、Webhookの送信先の検証を回避できるSSRF(CVE-2026-64849、3.15.0で修正)が2026年8月19日にKEVへ追加されています。MLflowのサーバーは実際に攻撃の対象になっています。[7][9]

10月7日に3.17.0、9日から順にアドバイザリを公表

修正版の公開と、アドバイザリの公表の日付を並べる(日本時間)。

2026年8月19日

別件のSSRF(CVE-2026-64849)がKEVに追加3.15.0で修正済み

10月7日

MLflow 3.17.0を公開

10月9日

コード実行の件を公表
9.8MLflowの評価(CVSS 3.1)

10月13日

ファイル読み取り・APIキーの記録の件を公表

10月21日

3.17.2を公開CVE-2026-53995を修正

10月28日

GitHub Advisory Databaseに収録

出典 MLflowの各アドバイザリ、PyPI「mlflow」、米CISA「Known Exploited Vulnerabilities Catalog」(2026-11-06版)

04MLflowの対象の版と推奨する版

推奨する版は、MLflowのアドバイザリ、GitHub Advisory、PyPIに公開済みの版から出しました(11月9日確認)。上げる前にリリースノートで変更点を確かめてください。[1][2][3][4][5][6]

今の版当てはまる件推奨する版
3.12.0rc0〜3.16.14件すべて(条件による)3.17.2以上(最新は3.18.0)
3.10.0〜3.11系ファイル読み取り、APIキーの記録
3.17.0・3.17.1この4件は直っている。CVE-2026-53995が残る

3.17.0は10月7日、3.17.2は10月21日にPyPIに公開されました。CVE-2026-53995は、トレースのIDに細工した値を送ると保存先の外にファイルを書き込める脆弱性で、記録の保存方式にファイル(FileStore)を使うサーバーが対象です。FileStoreは3.7.0より前の既定で、それ以降は明示したときだけ使われます。[5][6]

どの版からでも3.17.2以上に上げる

今の版ごとに、当てはまる件と上げる先を並べる。

3.12.0rc0〜3.16.1
コード実行対象
ファイル読み取り対象
CVE-2026-53995(FileStoreを使う場合)対象
上げる先3.17.2以上
3.10.0〜3.11系
コード実行範囲外
ファイル読み取り対象
CVE-2026-53995(FileStoreを使う場合)対象
上げる先3.17.2以上
3.17.0・3.17.1
コード実行修正済み
ファイル読み取り修正済み
CVE-2026-53995(FileStoreを使う場合)対象
上げる先3.17.2以上
だから 3.17.0で止めず、3.17.2以上にする。

出典 MLflow「GHSA-26p8-2jq9-3vq9」「GHSA-m65p-9j7q-6w33」、GitHub Advisory「GHSA-wqmh-qccw-pqwf」(2026-11-09確認)

05MLflowの版を確かめて上げる手順

  1. サーバーを動かしている環境とアプリの環境で、MLflowの版を確かめます。lockファイルに記録された版も見ます。

    ターミナル
    python -m pip show mlflow
    grep -n -i "mlflow" requirements*.txt poetry.lock uv.lock
  2. サーバーの起動の仕方を確かめます。--host 0.0.0.0などで外から届く状態か、--app-name basic-authを付けているかを見ます。

    ターミナル
    ps aux | grep -i "mlflow server"
  3. CrewAIの自動記録を使っているかを確かめます。[3]

    ターミナル
    grep -rn "crewai.autolog" --include="*.py" .
  4. 3.17.2以上に上げます(使っているツールの行を実行します)。コンテナで動かしている場合は、イメージを作り直します。

    ターミナル
    python -m pip install --upgrade "mlflow>=3.17.2"
    uv lock --upgrade-package mlflow
    poetry update mlflow
  5. サーバーを再起動し、実際に読み込まれる版を確かめます。

    ターミナル
    python -c "import mlflow; print(mlflow.__version__)"
脆弱性の公表・更新一覧 2026年10月版の表紙
資料(無料)脆弱性の公表・更新一覧 2026年10月版60日間の公表・更新と、悪用が確認された脆弱性を分析し、どこから直すかの考え方と確認の手順をまとめた資料です。

06すぐ上げられないとき

アドバイザリにある回避策は、APIキーの記録の件で、CrewAIの自動記録を無効にすることだけです。コード実行・ファイル読み取り・SSRFの件には、更新以外の回避策が書かれていません。[1][2][3][4]

Python
mlflow.crewai.autolog(disable=True)

あわせて、トラッキングサーバーを社内のネットワークだけで使えるようにし、インターネットから届かないようにします。basic認証は、コード実行とファイル読み取りの件を防ぎきれないので、利用者を絞る手段として使います。[1][2]

07CrewAIの記録にAPIキーが残っている場合

3.17.0に上げると新しい記録にはキーが入らなくなりますが、すでに書き込まれたキーは残ります。アドバイザリは、2.19.0〜3.16系でmlflow.crewai.autolog()を有効にしていた間にCrewAIのLLMが持っていたキーを作り直すよう求めています。[3]

キーは、エージェントとCrewの記録の属性とmlflow.spanInputsに入ります。MLflowのトラッキングの保存先と、送っていたOTLPの送り先の両方で、該当する記録を消すか伏せます。[3]

よくある質問

MLflowをノートPCで試しているだけです。対象ですか?

コード実行とファイル読み取りの件は、サーバーにネットワークから届くことが前提です。自分のPCの中だけで使う構成でも、版は上げます。CrewAIの自動記録の件は、サーバーの置き場所に関係なく起きます。[1][2][3]

basic認証を有効にしていれば対象外ですか?

対象外にはなりません。ファイル読み取りの件は、モデルを作れる利用者なら権限が低くても使えます。コード実行の件も、実験の作成と成果物のアップロードができる利用者なら起こせます。[1][2]

3.17.0に上げてあります。3.17.2も必要ですか?

この記事の4件は3.17.0で直っています。3.17.1以前にはCVE-2026-53995が残るので、3.17.2以上に上げます。[5]

出典・参考資料

  1. MLflow公式:GHSA-26p8-2jq9-3vq9(CVE-2026-116692、third-party scorer deserialization によるコード実行)2026-10-09 / 対象3.12.0rc0以上3.17.0未満、修正3.17.0、仕組みと/ajax-api/3.0/mlflow/scorer/invokeの経路、認証なしの既定構成、公式イメージのroot実行、basic認証での条件、CVSS 3.1 9.8
  2. MLflow公式:GHSA-m65p-9j7q-6w33(CVE-2026-116690、prompt model version source によるファイル読み取り)2026-10-13 / 対象3.10.0〜3.16.1、修正3.17.0、basic-authでも低い権限で認証データベースを読めること、CVSS 3.1 7.5
  3. MLflow公式:GHSA-j7qq-vr8c-xvw3(CVE-2026-116691、CrewAI autologging の APIキー記録)2026-10-13 / 対象2.19.0以上3.17.0未満、修正3.17.0、キーの作り直しと記録の削除、autolog(disable=True)の回避策、CVSS 3.1 6.5
  4. MLflow公式:GHSA-2wqp-q3c6-ccj5(CVE-2026-115886、scorer kwargs による SSRF)2026-10-22 / 対象3.12.0rc0以上3.17.0未満、trulensを入れている条件、修正3.17.0、CVSS 3.1 6.5
  5. GitHub Advisory Database:GHSA-wqmh-qccw-pqwf(CVE-2026-53995)2026-10-20 / 3.17.1以前のFileStoreのパス操作、3.7.0より前の既定、修正3.17.2
  6. PyPI:mlflow(版ごとの公開日時)2026-11-09 / 3.17.0(10月7日)・3.17.2(10月21日)・3.18.0の公開
  7. 米CISA:Known Exploited Vulnerabilities Catalog2026-11-06 / 4件が載っていないこと、CVE-2026-64849の追加日2026年8月19日
  8. FIRST:EPSS(CVE-2026-116692・CVE-2026-116690)2026-11-08 / EPSS 0.70%・1.80%
  9. GitHub Advisory Database:GHSA-7gwp-5pfp-969j(CVE-2026-64849)2026-08-17 / WebhookのSSRF、対象3.3.0以上3.15.0未満、修正3.15.0

あわせて読みたい記事

Python公開 2026-11-01

Starletteの脆弱性BadHost|FastAPIでの確認方法と1.0.1への更新

Starletteの脆弱性CVE-2026-48710(BadHost)は、細工したHostヘッダーでrequest.url.pathを偽り、パスで判定するアクセスの確認を回避されるおそれがあります。9月2日にKEVに追加されました。FastAPI・vLLM・LiteLLMの下で古いStarletteが残る例と、間接依存の確かめ方を説明します。