Record summary

CVE-2024-37054 has a selected CVSS score of 8.8 (high); EIP currently links 6 repository PoCs and 1 lab environment.

Description

Deserialization of untrusted data can occur in versions of the MLflow platform running version 0.9.0 or newer, enabling a maliciously uploaded PyFunc model to run arbitrary code on an end user’s system when interacted with.

Description source: CVE List

Exploitation context

Available material

Repository PoCs
6
Lab environments
1

CISA SSVC decision

ExploitationNone
AutomatableNo
Technical impactTotal

CISA Coordinator · SSVC 2.0.3 · Evaluated Jun 6, 2024 · Source: CVE List

Affected products and versions

3
ProductSourceVersion rangeStatus

Default status: unaffected

CVE List0.9.0 to ≤ *affected

Default status: unknown

CVE List0.9.0 to ≤ *affected
GitHub Advisory0.9.0 to ≤ 2.14.1affected

Proofs of concept

6

Repository PoCs

GitHubNiteeshPujari/CVE-2024-37054-MLflow-RCERepository PoCby NiteeshPujariStars: 3Exploit5 files

11.7 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

The artifact is a Proof of Concept (PoC) for CVE-2024-37054, a deserialization vulnerability in MLflow. It contains two Python scripts: one that logs a malicious model containing a pickled payload (poc/log_malicious_model.py), and another that loads the model, triggering arbitrary code execution via cloudpickle deserialization (poc/load_vulnerable_model.py). The README explicitly describes the steps to execute the attack and observe the RCE.

Backdoor review

No backdoor observed in reviewed code

The repository is a documented Proof of Concept for CVE-2024-37054, demonstrating a known MLflow deserialization vulnerability. The payload (os.system call) is explicitly described in the README and source code as the intended exploit demonstration. No concealed, unrelated, or operator-directed harmful behavior was observed.

ClassificationExploit
Model confidence98%
AuthenticationNot required
LanguagesPythonDockerfile
Target softwareMLflow
Attack typesRemote Code ExecutionDeserialization of Untrusted Data
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact contains functional Python code that, when executed, logs a malicious model and then loads it to trigger arbitrary command execution. The README explicitly labels it as a 'Proof of Concept (PoC)' and provides step-by-step instructions to perform the attack. This is code intended to exercise a vulnerability, meeting the definition of an exploit.

README.md:19README.md:34poc/log_malicious_model.py:1-53poc/load_vulnerable_model.py:1-30

Requirements

  • A vulnerable MLflow server (version 0.9.0 to <2.14.2) must be running and accessible.README.md:49Dockerfile:26
  • The attacker must be able to log a model to the MLflow tracking server (no authentication required by default).poc/log_malicious_model.py:6poc/log_malicious_model.py:46-50
  • The victim must load the malicious model using mlflow.pyfunc.load_model.poc/load_vulnerable_model.py:24

Observed behavior

  • The attacker script defines a class with a __reduce__ method that returns (os.system, (cmd,)), where cmd is a shell command. When the model is logged, this object is pickled and stored on the MLflow server.poc/log_malicious_model.py:17-23
  • The victim script loads the model using mlflow.pyfunc.load_model, which deserializes the pickled object via cloudpickle.load, causing the __reduce__ method to execute the attacker's shell command.poc/load_vulnerable_model.py:21-24README.md:48
  • The payload creates a file named 'pwned.txt' and prints a message to confirm code execution.poc/log_malicious_model.py:22README.md:155
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Exploit Payload
Payload withheldThe payload is the core of the CVE-2024-37054 PoC, designed to execute a harmless command (print message, create file) to confirm code execution.poc/log_malicious_model.py:22-23README.md:96-97
Vulnerable Dependency
Payload withheldThe Dockerfile installs a version of MLflow known to be vulnerable to CVE-2024-37054, which is the target of the PoC.Dockerfile:26
Review boundaries

What the analysis did not establish

  • One file (LICENSE) is omitted from the text evidence; it is unlikely to contain exploit code.
  • The evidence does not include the execution output or confirmation that the code was run successfully.
  • One file (LICENSE) was omitted from the text evidence; its content is not available for review, but it is typically a standard license file and unlikely to contain executable behavior.
  • The review is limited to the supplied text files; no dynamic analysis or execution was performed.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubben-slates/CVE-2024-37054Repository PoCby ben-slatesStars: 5Exploit3 files

31.4 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

A Python exploit for CVE-2024-37054 that achieves remote code execution on MLflow Tracking Server by overwriting a model's python_model.pkl artifact with a malicious pickle payload and triggering deserialization via a prediction request.

Backdoor review

No backdoor observed in reviewed code

The supplied evidence consists of a Python proof-of-concept exploit (poc.py) and its documentation (readme.md) for CVE-2024-37054, a pickle deserialization vulnerability in MLflow. The code implements a documented exploit chain: authenticate, upload training data, retrieve a run ID, overwrite a model artifact with a malicious pickle payload, and trigger deserialization to execute a user-supplied command or reverse shell. All behavior is consistent with the stated purpose of demonstrating the CVE. No concealed, deceptive, or unrelated harmful behavior was observed.

ClassificationExploit
Model confidence100%
AuthenticationRequired
LanguagesPython
Target softwareMLflow
Attack typesDeserialization of Untrusted DataRemote Code Execution
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact contains a complete, functional Python script (poc.py) that implements a multi-step exploit chain to achieve remote code execution on a vulnerable MLflow server. The script generates a malicious pickle payload, uploads it to overwrite a model artifact, and triggers deserialization to execute arbitrary commands. The README explicitly describes it as a 'Proof-of-concept exploit'.

poc.py:1-644readme.md:9

Requirements

  • Network access to the MLflow Tracking Serverreadme.md:34
  • Valid MLflow credentials (default or otherwise)readme.md:35
  • Write access to artifacts (granted to all authenticated users)readme.md:36

Observed behavior

  • Authenticates to the target application using provided credentialspoc.py:319-357
  • Uploads a training CSV to register a new MLflow model versionpoc.py:359-403
  • Retrieves the run_id from the MLflow Tracking APIpoc.py:405-460
  • Overwrites the python_model.pkl artifact with a malicious pickle payload via HTTP PUTpoc.py:462-498
  • Triggers model deserialization by sending a prediction request, causing the pickle payload to executepoc.py:500-529
  • The pickle payload uses os.system() to execute a reverse shell or custom commandpoc.py:286-317
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Exploit Chain
Payload withheldThis is the documented exploit flow for CVE-2024-37054 and matches the vulnerability description.poc.py:198-211poc.py:531-597
Payload Generation
Payload withheldThis is the standard technique for pickle deserialization RCE and is explicitly described in the documentation.poc.py:286-317readme.md:46-51
Network Activity
Payload withheldAll network activity is directed at the user-specified targets and is necessary for the exploit.poc.py:319-357poc.py:359-403poc.py:405-460poc.py:462-498poc.py:500-529
Review boundaries

What the analysis did not establish

  • One file (LICENSE) was omitted from the text evidence due to size budget; it is unlikely to contain exploit logic.
  • The evidence does not include any binary or non-text files.
  • One file (LICENSE) was omitted from the text evidence; its content is not reviewed, but it is typically a standard license file and unlikely to contain executable behavior.
  • Binary content was not present; the artifact consists solely of text files.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubjimmexploit/CVE-2024-37054-PoCRepository PoCby jimmexploitStars: 6Exploit4 files

8.8 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

Full exploit for CVE-2024-37054 targeting MLflow. The code registers an account, trains a model, uploads a malicious pickle payload via the MLflow artifact API, and triggers deserialization to achieve remote code execution via a reverse shell.

Backdoor review

No backdoor observed in reviewed code

The supplied evidence is a proof-of-concept exploit for CVE-2024-37054, a deserialization vulnerability in MLflow. The code builds a malicious pickle payload that executes a reverse shell when loaded by the vulnerable MLflow server. All behavior is consistent with the stated exploit objective: triggering arbitrary code execution on the target MLflow instance. No concealed backdoor, unrelated payload, or operator-directed harm beyond the advertised exploit was observed.

ClassificationExploit
Model confidence98%
AuthenticationRequired
LanguagesPython
Target softwareMLflow
Attack typesRemote Code ExecutionDeserialization of Untrusted Data
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact contains a complete, multi-step exploit that actively exercises the CVE-2024-37054 vulnerability to achieve remote code execution. It includes account registration, payload generation, artifact upload, and trigger mechanisms, going beyond mere detection or scanning.

shell.py:1-185README.MD:3-4

Requirements

  • Network access to a target MLflow instance and associated web application.shell.py:26-27
  • Valid credentials for the MLflow API (default admin:password) or ability to register an account on the target application.shell.py:31-32shell.py:40-76
  • A listener (e.g., netcat) to receive the reverse shell connection.shell.py:181

Observed behavior

  • Registers a new user account on the target web application and retrieves a session cookie.shell.py:40-76
  • Uploads a CSV file to trigger model training and retrieves the MLflow run_id.shell.py:78-116
  • Constructs a malicious pickle payload that executes a bash reverse shell command upon deserialization.shell.py:118-128
  • Uploads the malicious pickle to the MLflow artifact store, overwriting the model's python_model.pkl.shell.py:130-146
  • Triggers the /predict endpoint on the target application, causing the malicious model to be loaded and the reverse shell to execute.shell.py:148-159
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Reverse Shell Payload
Payload withheldThe exploit constructs a reverse shell command using attacker-supplied LHOST and LPORT, which is the expected behavior for a CVE-2024-37054 PoC.shell.py:120malicious_payload.py:13
Pickle Deserialization Exploit
Payload withheldThe malicious pickle payload is designed to execute os.system with the reverse shell command upon deserialization, directly implementing the CVE-2024-37054 vulnerability.shell.py:122-126malicious_payload.py:15-17
Target Interaction
Payload withheldThe exploit interacts with the target application and MLflow server to upload the malicious model and trigger deserialization, all within the scope of the described exploit chain.shell.py:50-55shell.py:64-69shell.py:84-88shell.py:136-141shell.py:154-158
Review boundaries

What the analysis did not establish

  • Evidence is limited to the source code; no runtime behavior or network traffic was observed.
  • The exploit targets a specific lab environment (HTB SmartHire) and may require adaptation for other targets.
  • Only the readable text files were reviewed; no binary files were present. The analysis assumes the provided source code is the complete artifact and that no external dependencies introduce hidden behavior.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubSpydomain/CVE-2024-37054-MLflow-reverse-shellRepository PoCby SpydomainStars: 0Exploit5 files

4.9 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

Exploit for CVE-2024-37054 that generates a malicious pickle payload, uploads it to an MLflow model registry, and triggers remote code execution via a reverse shell.

Backdoor review

No backdoor observed in reviewed code

The supplied evidence describes a standard proof-of-concept exploit for CVE-2024-37054, which leverages pickle deserialization in MLflow to achieve remote code execution. The code in generate_model.py creates a reverse shell payload, and upload_model.py uploads it to an MLflow instance. This behavior is consistent with the stated vulnerability and does not exhibit any concealed backdoor or deceptive payload targeting the person running the PoC. The binary file model.pkl is flagged as uninspected, but its generation is fully explained by the provided Python script.

ClassificationExploit
Model confidence100%
AuthenticationRequired
Languagespython
Target softwaremlflow
Attack typesremote code executiondeserialization of untrusted data
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact contains code that generates a malicious payload (generate_model.py) and uploads it to a vulnerable service (upload_model.py) with the explicit purpose of achieving remote code execution, as described in the README. This constitutes an exploit.

generate_model.py:6-12upload_model.py:28-82README.md:51-55

Requirements

  • Valid MLflow credentials (username/password) to upload model artifacts.upload_model.py:4-5
  • Network access to the target MLflow instance.upload_model.py:6
  • A listener (e.g., netcat) to receive the reverse shell.README.md:23-25

Observed behavior

  • Generates a malicious pickle file (model.pkl) containing a reverse shell payload.generate_model.py:6-12
  • Uploads the malicious pickle and a crafted MLmodel file to an MLflow experiment run.upload_model.py:28-56
  • Registers the uploaded model and transitions it to the Production stage.upload_model.py:58-82
  • Instructs the user to trigger the payload by sending a POST request to the /predict endpoint, which deserializes the pickle and executes the reverse shell.README.md:37-47
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Reverse Shell Payload
Payload withheldThe payload in generate_model.py creates a reverse shell connecting to a user-specified IP and port. This is the intended exploit behavior for CVE-2024-37054, not a hidden backdoor.generate_model.py:8
Pickle Deserialization Exploit
Payload withheldThe Exploit class uses Python's pickle __reduce__ to execute an arbitrary command upon deserialization. This is the standard technique for demonstrating CVE-2024-37054.generate_model.py:6-9
Model Upload And Promotion
Payload withheldThe script automates the steps to register a malicious model in MLflow, which is the expected attack chain for this CVE.upload_model.py:1-83
Review boundaries

What the analysis did not establish

  • One binary file (model.pkl) was not inspected; its content is inferred from generate_model.py.
  • The sample.csv file referenced in the README is not included in the selected text files.
  • The binary file model.pkl was not inspected; its contents are assumed to match the output of generate_model.py.
  • The file sample.csv is listed in the repository but its content is not provided; it is used only as a trigger for the /predict endpoint and is not expected to contain executable code.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubtristanqtn/CVE-2024-37054Repository PoCby tristanqtnStars: 1Exploit2 files

18.5 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

The artifact is a Python exploit for CVE-2024-37054, a deserialization vulnerability in MLflow. It automates discovery of MLflow models, uploads a malicious cloudpickle payload to overwrite the model's python_model.pkl artifact, and triggers remote code execution via a reverse shell.

Backdoor review

No backdoor observed in reviewed code

The artifact is a proof-of-concept exploit for CVE-2024-37054. It demonstrates a legitimate deserialization attack against MLflow by uploading a malicious pickle payload. All behavior is consistent with the stated exploit purpose: it validates MLflow access, optionally registers/logs into a target application, trains a model, resolves run/experiment IDs, builds a reverse-shell pickle, uploads it to the MLflow artifact store, and triggers model loading. No concealed, deceptive, or unrelated harmful behavior was observed.

ClassificationExploit
Model confidence98%
AuthenticationRequired
LanguagesPython
Target softwareMLflow
Attack typesDeserialization of Untrusted DataRemote Code Execution
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact contains a complete, automated Python script (exploit.py) that actively exploits CVE-2024-37054 by uploading a malicious pickle payload and triggering its deserialization to achieve remote code execution. The README describes it as an exploit and provides usage examples for obtaining a reverse shell. The code includes payload construction (build_revshell_pickle), artifact poisoning (upload_pickle), and trigger mechanisms (trigger_load), which are hallmarks of an exploit, not a scanner or writeup.

exploit.py:1-4exploit.py:202-207exploit.py:211-228exploit.py:232-243README.md:1README.md:19-29

Requirements

  • Network access to an MLflow tracking server (versions 0.9.0 through 2.14.1) with valid credentials (HTTP Basic Auth).README.md:4exploit.py:39-40
  • A registered MLflow model or the ability to trigger model training via the target application.exploit.py:148-164exploit.py:324-328
  • An application endpoint that calls mlflow.pyfunc.load_model() on the poisoned model, or an alternative trigger mechanism.README.md:40exploit.py:232-243

Observed behavior

  • Validates connectivity and credentials to the MLflow server by querying the registered-models/search API endpoint.exploit.py:48-75
  • Enumerates registered MLflow models and their versions when run in 'list' mode.exploit.py:303-313
  • Authenticates to a target web application (via login or throwaway account registration) to obtain a session cookie.exploit.py:79-144
  • Triggers model training on the target application by uploading a CSV file, causing a new model to be registered in MLflow.exploit.py:148-164
  • Resolves the experiment_id and run_id for a target model by querying MLflow REST APIs.exploit.py:168-198
  • Constructs a malicious cloudpickle payload that executes a bash reverse shell command via os.system upon deserialization.exploit.py:202-207
  • Uploads the malicious pickle to the MLflow artifact store, overwriting the model's python_model.pkl file.exploit.py:211-228
  • Triggers the deserialization by sending a request to the application endpoint that loads the poisoned model, resulting in remote code execution.exploit.py:232-243exploit.py:362-366
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Reverse Shell Payload
Payload withheldThe exploit builds a reverse shell command using attacker-supplied lhost and lport, which is the documented payload for the CVE.exploit.py:202-207
Target Application Interaction
Payload withheldThe script attempts to log into a target web application and falls back to registering a throwaway account to obtain a session cookie, which is then used to trigger model loading. This is part of the documented exploit workflow.exploit.py:79-144
Review boundaries

What the analysis did not establish

  • The evidence includes only two text files (README.md and exploit.py) from the repository snapshot. No other files (e.g., configuration, dependencies, or additional scripts) were provided, but the selected files are complete and sufficient for classification.
  • The exploit targets a specific lab environment (smarthire.htb) by default, which may limit its general applicability without modification.
  • Review is limited to the two text files provided; no binary or external dependencies were inspected.
  • The artifact's behavior depends on network targets and user-supplied parameters; only the static code was analyzed.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubCosm3No1de/SmartHire---Hack-The-Box-WriteUpRepository PoCby Cosm3No1deStars: 0Writeup3 files

HTML · 85.9 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

A detailed penetration testing walkthrough for the Hack The Box 'SmartHire' machine, documenting the exploitation of CVE-2024-37054 (MLflow pickle deserialization) and a Python .pth file hijacking privilege escalation. The artifact contains no executable exploit or scanner code; it is a technical report with redacted commands and payloads.

Backdoor review

No backdoor observed in reviewed code

The supplied evidence consists of a Hack The Box writeup (README.md and index.html) for the 'SmartHire' machine. The content describes a standard penetration testing methodology, including reconnaissance, exploitation of CVE-2024-37054 (MLflow pickle deserialization), and privilege escalation via Python .pth file hijacking. All commands and payloads are consistent with the documented attack path and target the stated victim machine. No concealed executable behavior, deceptive payloads, or operator-directed harm unrelated to the described CTF scenario was observed.

ClassificationWriteup
Model confidence100%
AuthenticationRequired
LanguagesEnglishSpanish
Target softwareMLflowPythonNginxOpenSSH
Attack typesDeserialization of Untrusted DataPrivilege Escalation
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact is a writeup. It provides a substantive technical analysis of a penetration testing engagement, including reconnaissance, exploitation, and privilege escalation steps. It does not contain functional exploit or scanner code; the provided code snippets are illustrative and redacted. The README.md explicitly states it is a 'complete penetration testing walkthrough' and the index.html is a styled presentation of the same content.

README.md:3-5README.md:136-138

Requirements

  • Access to the target MLflow instance with default credentials (admin:password).README.md:101-106
  • Ability to upload a malicious pickle payload to the MLflow model registry.README.md:111-121
  • Write access to the /opt/tools/mlflow_ctl/plugins/dev/ directory for privilege escalation.README.md:198-201

Observed behavior

  • Describes using default credentials to authenticate to an MLflow instance.README.md:101-106
  • Describes creating a malicious pickle payload with a __reduce__ method to execute a reverse shell command.README.md:126-131
  • Describes triggering the deserialization by sending a POST request to the /predict endpoint.README.md:140-143
  • Describes using a bind shell to bypass an egress firewall.README.md:159-162
  • Describes privilege escalation by creating a malicious .pth file and a fake mlflow_actions.py module to execute commands as root via sudo.README.md:218-235
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Exploit Payload
Payload withheldA reverse shell payload used to gain initial access as part of the documented CVE-2024-37054 exploitation.README.md:130
Exploit Payload
Payload withheldA bind shell payload used to bypass an egress firewall, consistent with the described privilege escalation path.README.md:162
Privilege Escalation Command
Payload withheldA command used in the malicious Python module to set the SUID bit on /bin/bash for root privilege escalation.README.md:226
Review boundaries

What the analysis did not establish

  • The artifact contains redacted IP addresses, credentials, and flags, which limits the ability to verify the exact commands used.
  • The 'exploit.py' script mentioned in the writeup is not included in the provided evidence.
  • The evidence includes a non-text media file (img3.png) that was not analyzed.
  • One non-text media file (img3.png) was present but not analyzed; it is a banner image and unlikely to contain executable code.
  • The analysis is limited to the supplied text files; no dynamic analysis or execution was performed.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

Docker lab environments

1
GitHub

Repository root

NiteeshPujari/CVE-2024-37054-MLflow-RCECreated
Vuln labCVE-2024-37054Dockerfile

1 Dockerfile

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Dockerized MLflow 2.14.1 server intended as a vulnerable target for CVE-2024-37054 deserialization RCE. The image runs as non-root user 'nit' and serves the MLflow UI on port 5000.

Dockerfile:1-33

Lab assessment

Vulnerability lab

The README explicitly states this is a Proof of Concept for CVE-2024-37054, a deserialization vulnerability in MLflow. The Dockerfile installs a vulnerable version (2.14.1) and the repository includes attacker and victim scripts to demonstrate RCE.

README.md:1-179Dockerfile:24
Lab shapeDockerfile
ServicesUnknown
Compose manifests0
Dockerfiles1
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

MLflow Server

vulnerable targetmodel registry

A container running MLflow 2.14.1 UI on port 5000, using a file-based backend store at /home/nit/mlruns. It is the target for the deserialization exploit.

Dockerfile:24-33

Attacker Script (log_malicious_model.py)

exploit delivery

A Python script that connects to the MLflow server, crafts a malicious model containing a pickled payload (os.system call), and logs it to the server. The payload creates a file 'pwned.txt' and prints a message.

poc/log_malicious_model.py:1-53

Victim Script (load_vulnerable_model.py)

exploit trigger

A Python script that connects to the MLflow server and loads the malicious model using mlflow.pyfunc.load_model, triggering deserialization of the payload and executing the attacker's command.

poc/load_vulnerable_model.py:1-30
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2024-37054

Supported by supplied evidence

The README describes CVE-2024-37054 as a deserialization vulnerability in mlflow.pyfunc.load_model affecting versions up to 2.14.1. The Dockerfile installs mlflow==2.14.1, and the PoC scripts demonstrate RCE via a malicious pickled model, consistent with the CVE description.

README.md:1-179Dockerfile:24poc/log_malicious_model.py:1-53poc/load_vulnerable_model.py:1-30
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker must be installed to build and run the container.README.md:60-65
  • A vulnerable version of mlflow (2.14.1) must be installed locally to run the attacker and victim scripts.README.md:72
  • The MLflow server must be running and accessible at http://127.0.0.1:5000.README.md:60-65poc/log_malicious_model.py:5

Evidence-described exercise path

  1. Build the Docker image: docker build -t mlflow-vulnerable .README.md:62-63
  2. Run the container: docker run -p 5000:5000 --name mlflow-poc-server -it mlflow-vulnerableREADME.md:65
  3. Run the attacker script: python poc/log_malicious_model.pyREADME.md:100
  4. Run the victim script: python poc/load_vulnerable_model.pyREADME.md:120
  5. Observe the RCE payload execution: a message is printed and pwned.txt is created.README.md:123-125
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

The payload in the attacker script only echoes a message and creates a file named pwned.txt. It does not target the host, exfiltrate data, establish persistence, or perform any destructive action. The Dockerfile runs as a non-root user and does not mount the Docker socket or use privileged mode. All behavior is contained within the lab's intended demonstration of CVE-2024-37054.

poc/log_malicious_model.py:17-19Dockerfile:1-33
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

References

3