// 威脅簡報

MLflow FileStore 經由 trace ID 的路徑穿越:未登入的攻擊者能把追蹤檔案寫到預定資料夾之外

CVSS
8.2 HIGH
CISA KEV
未列入
弱點類型
CWE-22

PlainCVE 團隊 · 發布 2026-10-21 · AI 輔助 · 媒體簡報 ↓

AI 審稿 2026-10-21(未經人工)指令測試:未提供漏洞重現:未進行驗證紀錄 ↓

MLflow 的 FileStore 追蹤後端可被未登入的攻擊者用特製的 trace ID,把追蹤檔案寫到預定資料夾之外;目前沒有已釋出的修補版本。

誰會中MLflow 3.17.1 以前、使用 FileStore 追蹤後端的伺服器。3.7.0 以前 FileStore 是預設值;3.7.0 起只有刻意選用 FileStore 才受影響。3.17.2 是否受影響沒有來源說明。
後果攻擊者可以在 MLflow 伺服器程序有寫入權限的範圍內,把含有攻擊者控制之中繼資料的追蹤檔案(trace_info.yaml、request metadata 與 tag 檔)寫到預定資料夾之外,也可能造成有限的可用性影響。研究者表示示範沒有證明可以寫入任意檔案內容、執行程式碼或讀取資料。
現在該做什麼目前沒有已釋出的修補版本。研究者建議先限制建立 trace 的端點只讓可信任的來源存取,或在確認相容性後把追蹤後端改成 SQL 資料庫;這不是 MLflow 官方的建議。
受影響版本3.17.1 及更早版本(CVE 紀錄未列下限;3.17.2 是否受影響沒有來源說明)
修好的版本尚無(沒有任何來源回報已修補的版本;修補 PR #26842 仍是「提議中」)
CVSS 向量
顯示完整向量CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L
時間點
  • 首次公開 2026-10-17

藍隊應對手冊

確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。

DETECT確認我受影響嗎?有沒有入侵跡象?
  1. 01確認 MLflow 版本

    在執行 MLflow 伺服器的主機、容器或虛擬環境(venv)裡執行。3.17.1 以前列為受影響;3.17.2 沒有來源說明,PlainCVE 判斷它很可能還沒包含修補。

    唯讀查詢
    pip show mlflow | grep -i '^version'
  2. 02確認是否使用 FileStore 後端

    PlainCVE 的建議:檢查 MLflow 伺服器啟動時的參數,看追蹤後端(backend store)設定成什麼。3.7.0 以前沒特別設定就是 FileStore;3.7.0 起只有刻意選 FileStore 才受影響。在伺服器主機上執行。

    唯讀查詢
    ps -eo args | grep -i '[m]lflow server'
  3. 03找出可疑的 trace 建立請求

    PlainCVE 的建議:在 MLflow 前面的反向代理或網頁伺服器紀錄中,找出來自非預期來源的 POST /api/3.0/mlflow/traces 請求。以下以 nginx 紀錄路徑為例,請換成你的紀錄位置。

    唯讀查詢
    grep -r "POST /api/3.0/mlflow/traces" /var/log/nginx/
  4. 04找出放錯地方的 trace 檔案

    PlainCVE 的建議:在 MLflow 伺服器主機或容器上,列出所有 trace_info.yaml(排除 /proc,會搜尋包含其他掛載點與容器 volume 的所有位置,可能較慢),比對是否有出現在 MLflow 儲存資料夾以外的。

    會變更環境
    find / -path /proc -prune -o -name trace_info.yaml -print 2>/dev/null
MITIGATE修補 / 緩解先修補;還不能修補時先擋住
  1. 01限制建立 trace 的端點

    研究者建議:在部署經過測試的修補前,限制建立 trace 的端點的存取。這不是 MLflow 官方建議。

  2. 02改用 SQL 追蹤後端

    研究者建議:確認相容性後,把 trace 追蹤改到 SQL 後端。3.7.0 起的預設值就是 SQLite。這不是 MLflow 官方建議。

  3. 03關注正式修補版本

    目前唯一的修補是研究者提出的 PR #26842,尚未顯示合併或釋出。PlainCVE 的建議:等 MLflow 釋出包含它的版本後再升級,並查看發布說明確認。

RESPOND應變發現入侵跡象時
  1. 01保留證據後清除多出的檔案

    PlainCVE 的建議:若在 MLflow 儲存資料夾外發現 trace 檔案,先備份與記錄時間和來源請求,再移除,並檢查服務是否因多出的檔案而運作異常。研究者表示示範沒有證明能執行程式碼或讀取資料,所以這類事件的重點是被寫入的檔案。

  2. 02立即封鎖對外暴露的追蹤端點

    PlainCVE 的建議:如果紀錄顯示有來自外部的 trace 建立請求,先依研究者的建議限制端點存取,再進行調查。

HARDEN強化長期避免同類問題
  1. 01不要讓 MLflow 追蹤伺服器在沒有認證的情況下對外開放

    PlainCVE 的建議:研究者指出未登入即可利用的前提是端點沒有認證或存取限制,所以在前面加上認證或網路限制應能降低未登入攻擊者利用的機會(未經測試)。

  2. 02以最小權限執行伺服器

    PlainCVE 的建議:檔案能寫到哪裡受伺服器程序的權限限制,所以讓它只能寫入自己的資料夾,可以縮小影響。

完整修復步驟與說明
  1. 目前沒有可升級的修補版本。 修補 PR #26842 由研究者撰寫(該頁含攻擊程式,本站不連結),CVE 紀錄標為「提議中」,沒有資料顯示已合併或釋出。PlainCVE 的判斷:3.17.2 的發布說明沒有提到這個修補,PR 的發布標籤也從 v3.17.2 移到 v3.17.3,所以 3.17.2 很可能不含修補,但沒有來源證實。
  2. 先限制存取。 研究者建議在部署經過測試的修補前,限制建立 trace 的端點;或在確認相容性後改用 SQL 後端。改後端前要先確認既有資料與流程能否沿用,這兩項都不是 MLflow 官方建議。
  3. 修補釋出後。 PlainCVE 的建議:升級後仍保留存取限制,因為未登入就能寫入資料的端點本來就不該對外開放。

攻擊流程

從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。

由上到下是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。

MLflow FileStore 經由 trace ID 的路徑穿越:未登入的攻擊者能把追蹤檔案寫到預定資料夾之外: 1. 對 MLflow 伺服器送出建立 trace 的請求 → 2. 伺服器使用 FileStore 追蹤後端 → 3. trace ID 被直接拿來組成檔案路徑 → 4. 追蹤檔案被寫到預定資料夾之外CVE-2026-53995 · MLflow FileStore 經由 trace ID 的路徑穿越:未登入的攻擊者能把追蹤檔案寫到預定資料夾之外攻擊者你的系統對 MLflow 伺服器送出建立 trace 的請求 — CVE 描述說不需要登入。研究者指出,前提是這個追蹤端點沒有任何認證或存取限制就對外開放。 1對 MLflow 伺服器送出建立 trace 的請求伺服器使用 FileStore 追蹤後端 — 3.7.0 以前 FileStore 是預設值;3.7.0 起預設改為 SQLite,只有刻意選用 FileStore 的伺服器才受影響。 2伺服器使用FileStore 追蹤後端trace ID 被直接拿來組成檔案路徑 — 客戶端送來的 trace ID 若含有路徑穿越字元,就能讓檔案路徑跳出預定的 trace 資料夾。 3trace ID 被直接拿來組成檔案路徑追蹤檔案被寫到預定資料夾之外 — 會寫出 trace_info.yaml、request metadata 與 tag 檔,內容含攻擊者控制的中繼資料;能寫到哪裡受伺服器程序的檔案權限限制,多出的檔案與資料夾可能造成有限的可用性影響。 4追蹤檔案被寫到預定資料夾之外攻擊路徑可在此擋下PlainCVE · plaincve.date/vulns/cve-2026-53995-mlflow-trace-id-path-traversal · CC BY 4.0
MLflow FileStore 經由 trace ID 的路徑穿越:未登入的攻擊者能把追蹤檔案寫到預定資料夾之外: 1. 對 MLflow 伺服器送出建立 trace 的請求 → 2. 伺服器使用 FileStore 追蹤後端 → 3. trace ID 被直接拿來組成檔案路徑 → 4. 追蹤檔案被寫到預定資料夾之外CVE-2026-53995 · MLflow FileStore 經由trace ID 的路徑穿越:未登入的攻擊者能把追蹤檔案寫到預定資料夾之外對 MLflow 伺服器送出建立 trace 的請求 — CVE 描述說不需要登入。研究者指出,前提是這個追蹤端點沒有任何認證或存取限制就對外開放。 1攻擊者對 MLflow 伺服器送出建立 trace 的請求伺服器使用 FileStore 追蹤後端 — 3.7.0 以前 FileStore 是預設值;3.7.0 起預設改為 SQLite,只有刻意選用 FileStore 的伺服器才受影響。 2你的系統伺服器使用 FileStore 追蹤後端trace ID 被直接拿來組成檔案路徑 — 客戶端送來的 trace ID 若含有路徑穿越字元,就能讓檔案路徑跳出預定的 trace 資料夾。 3你的系統trace ID 被直接拿來組成檔案路徑追蹤檔案被寫到預定資料夾之外 — 會寫出 trace_info.yaml、request metadata 與 tag 檔,內容含攻擊者控制的中繼資料;能寫到哪裡受伺服器程序的檔案權限限制,多出的檔案與資料夾可能造成有限的可用性影響。 4你的系統追蹤檔案被寫到預定資料夾之外攻擊路徑可在此擋下PlainCVE · CC BY 4.0plaincve.date/vulns/cve-2026-53995-mlflow-trace-id-path-traversal
圖片可自由用於報導與教學,採 CC BY 4.0,圖上已附出處。
  1. 攻擊者

    對 MLflow 伺服器送出建立 trace 的請求

    CVE 描述說不需要登入。研究者指出,前提是這個追蹤端點沒有任何認證或存取限制就對外開放。

    防禦: 研究者建議:在部署修補前,限制建立 trace 的端點只讓可信任的來源存取。

  2. 你的系統

    伺服器使用 FileStore 追蹤後端

    3.7.0 以前 FileStore 是預設值;3.7.0 起預設改為 SQLite,只有刻意選用 FileStore 的伺服器才受影響。

    防禦: 研究者建議:確認相容性後把追蹤後端改為 SQL 資料庫。

  3. 你的系統

    trace ID 被直接拿來組成檔案路徑

    客戶端送來的 trace ID 若含有路徑穿越字元,就能讓檔案路徑跳出預定的 trace 資料夾。

    防禦: 提議中的修補 PR #26842 會檢查 trace ID,讓它無法跳出 FileStore 的 trace 資料夾;沒有資料顯示已合併或釋出。

  4. 你的系統

    追蹤檔案被寫到預定資料夾之外

    會寫出 trace_info.yaml、request metadata 與 tag 檔,內容含攻擊者控制的中繼資料;能寫到哪裡受伺服器程序的檔案權限限制,多出的檔案與資料夾可能造成有限的可用性影響。

    防禦: PlainCVE 的建議:用權限最小的帳號執行 MLflow 伺服器,讓它只能寫入自己的儲存資料夾。

影響範圍

條件是否受影響
MLflow 3.7.0 以前(3.17.1 以前範圍內),沒有特別設定追蹤後端受影響(FileStore 是預設值)
MLflow 3.7.0 至 3.17.1,刻意選用 FileStore 後端受影響
MLflow 3.7.0 至 3.17.1,使用預設的 SQLite 或其他 SQL 後端CVE 紀錄說只有選用 FileStore 才受影響
MLflow 3.17.2(CHANGELOG 記為 2026-10-20;PyPI 上傳時間為 2026-10-21 02:08 UTC)沒有來源說明;PlainCVE 判斷很可能仍未修補
已修補版本尚無

另外還要攻擊者連得到 POST /api/3.0/mlflow/traces 這個端點。CVE 描述說不需要登入;研究者補充,未登入就能利用的前提是這個追蹤端點沒有任何認證或存取限制就對外開放。漏洞何時引入不明,資料庫只列了「0」這個佔位下限。

原理

MLflow 是用來記錄機器學習實驗與 AI 應用執行過程的平台。每一筆執行紀錄叫做 trace,有一個 trace ID。使用 FileStore 後端時,MLflow 會把 trace 存成伺服器上的檔案,而存放位置是用 trace ID 組出來的。

問題在於受影響版本接受客戶端送來的 trace ID,卻沒有確認它不含「回到上一層資料夾」之類的路徑穿越字元。結果 MLflow 會把 trace_info.yaml、request metadata 與 tag 檔(內容含攻擊者控制的中繼資料)寫到預定的 trace 資料夾之外。這類錯誤屬於 CWE-22(路徑穿越)。

能寫到哪裡,受 MLflow 伺服器程序本身的檔案權限限制。研究者表示,他的示範沒有證明能寫入任意檔案內容、執行程式碼,或讀取資料;多出的檔案與資料夾可能造成有限的可用性影響。研究者的概念驗證只在本機測試環境執行,沒有測試實際部署的網路暴露或認證設定。

有問題的思路(概念示意,不是 MLflow 原始程式碼):

展開程式碼範例(python)
def trace_dir(base_dir, trace_id):
    # 直接把客戶端給的 trace_id 拼進路徑
    return os.path.join(base_dir, trace_id)

修好的思路(概念示意):

展開程式碼範例(python)
def trace_dir(base_dir, trace_id):
    path = os.path.realpath(os.path.join(base_dir, trace_id))
    # 組出來的路徑必須仍在 trace 資料夾之內,否則拒絕
    if not path.startswith(os.path.realpath(base_dir) + os.sep):
        raise ValueError("invalid trace id")
    return path

提議中的 PR #26842 的目標就是阻止客戶端提供的 trace ID 跳出 FileStore 的 trace 資料夾。

時間軸

日期事件
2026-06-11CVE 編號保留
2026-10-13MLflow 3.17.1 釋出(列為受影響的最後一版)
2026-10-17CVE 紀錄記載的公開日期
2026-10-19CVE 紀錄發布
2026-10-20MLflow 3.17.2 釋出(CHANGELOG 記載日期;PyPI 上傳時間為 2026-10-21 02:08 UTC,GitHub release 顯示 21 Oct),發布說明沒有提到這個修補
2026-10-21截至此日,未列入 CISA KEV;NVD 狀態為「Awaiting Analysis」

延伸閱讀

  • 評分: CNA(VulnCheck)在 CVE 紀錄同時給了 CVSS 3.1 8.2(機密性無影響、完整性高、可用性低)與 CVSS 4.0 8.8。NVD 顯示的是 CNA 的同樣分數,NVD 自己尚未分析(Awaiting Analysis)。本頁 severity 欄採用 CNA 的 CVSS 3.1 8.2。兩個分數版本不同,並不衝突。
  • 利用狀況: 截至 2026-10-21 未列入 KEV;是否已遭實際利用、是否為零時差都沒有證據。CISA 的 SSVC 評估為「已有概念驗證」、「可自動化」。EPSS 約 0.56%(第 45.6 百分位)。
  • 發現者: CVE 紀錄致謝 Sai Teja Erukude;研究者表示揭露是透過 VulnCheck(本 CVE 的編號核發單位)協調。研究者的 GitHub 說明頁含有概念驗證程式(該頁含攻擊程式,本站不連結),本頁引用其中的影響範圍說明與緩解建議時都標明出處。
  • 官方立場: 目前沒有 MLflow 的安全公告或聲明;GitHub Advisory Database 的 GHSA-wqmh-qccw-pqwf 尚未經過審核。
  • 相關弱點類型:CWE-22。

驗證紀錄 AI 依審稿規則逐項核對來源,全部通過;未經人工審稿,也尚未在我們的環境重現

AI 審稿2026-10-21 · 審稿規則

驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.

來源

  1. CVE / NVD / OSVCVE-2026-53995 record (MLflow 3.17.1 and prior Path Traversal via Trace ID API) · CVE Program, 2026-10-19 · 查閱 2026-10-21
  2. CVE / NVD / OSVNVD - CVE-2026-53995 (API) · NIST · 查閱 2026-10-21
  3. 安全公告MLflow Path Traversal via Trace ID API · VulnCheck · 查閱 2026-10-21
  4. 廠商說明MLflow CHANGELOG · MLflow (GitHub) · 查閱 2026-10-21
  5. 廠商說明MLflow releases · MLflow (GitHub) · 查閱 2026-10-21
  6. 其他GitHub Advisory Database entry for CVE-2026-53995 (GHSA-wqmh-qccw-pqwf, unreviewed) · GitHub · 查閱 2026-10-21
  7. 其他CVE-2026-53995: MLflow 3.17.1 and prior Path Traversal via Trace ID · HOL Guard · 查閱 2026-10-21

媒體簡報

一句話

MLflow 是廣泛使用的開源機器學習平台,它的 FileStore 追蹤後端有一個路徑穿越漏洞(CVE-2026-53995):未登入的攻擊者可用特製的 trace ID,把追蹤檔案寫到預定資料夾之外,前提是攻擊者連得到追蹤端點,且依研究者的說法,該端點必須在沒有認證或存取限制的情況下對外開放。3.17.1 及更早版本受影響,截至 2026 年 10 月 21 日沒有任何來源回報已修補的版本,唯一的修補是研究者提出的 PR,截至 2026-10-21 沒有資料顯示已合併或釋出。研究者表示,示範沒有證明能執行程式碼或讀取資料。

關鍵數字

受影響版本
MLflow 3.17.1 及更早版本 cveawg.mitre.org
CVSS 3.1(CNA VulnCheck;本頁 severity 欄採用)
8.2 cveawg.mitre.org
CVSS 4.0(CNA VulnCheck)
8.8 cveawg.mitre.org
修補版本
未回報 hol.org
提議中的修補
PR #26842(研究者撰寫;CVE 紀錄列為「Proposed Pull Request」。該頁含攻擊程式,本站不連結) cveawg.mitre.org
CVE 紀錄公開
2026-10-19 cveawg.mitre.org

已確認

  • MLflow 3.17.1 及更早版本的 FileStore 追蹤後端,可被未登入的攻擊者透過特製的 trace ID 把追蹤檔案寫到預定資料夾之外(CVE 紀錄)。
  • 截至 2026-10-21 沒有任何來源回報已修補的版本,唯一的修補 PR #26842 被標為「提議中」。
  • 截至 2026-10-21 未列入 CISA 已知遭利用漏洞清單(KEV);CISA 的 SSVC 評估為「已有概念驗證」且「可自動化」。

尚未確認 / 說法不一

  • MLflow 3.17.2 是否受影響:沒有來源說明,PlainCVE 判斷它很可能還沒包含修補。
  • 是否已遭實際利用、是否曾在修補前被利用(零時差),都沒有證據。
  • 漏洞何時引入不明;MLflow 也沒有發布安全公告或聲明。

可引用的一句話

這個漏洞讓攻擊者決定追蹤檔案寫在哪裡,並填入部分中繼資料,但研究者的示範沒有證明能寫入任意內容;風險高低取決於你的伺服器有沒有關上門。

圖片

下載分享圖(PNG) · 攻擊流程圖(可下載)

引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.

如何引用本頁

本文採 CC BY 4.0,轉載請保留署名與連結。

PlainCVE 團隊(2026)。《MLflow FileStore 經由 trace ID 的路徑穿越:未登入的攻擊者能把追蹤檔案寫到預定資料夾之外》。PlainCVE。https://plaincve.date/vulns/cve-2026-53995-mlflow-trace-id-path-traversal(查閱日期:YYYY-MM-DD)
BibTeX
@misc{cve202653995mlflowtraceidpathtraversal2026,
  title  = {MLflow FileStore 經由 trace ID 的路徑穿越:未登入的攻擊者能把追蹤檔案寫到預定資料夾之外},
  author = {PlainCVE 團隊},
  year   = {2026},
  howpublished = {PlainCVE},
  url    = {https://plaincve.date/vulns/cve-2026-53995-mlflow-trace-id-path-traversal},
  note   = {更新於 2026-10-21}
}