CVE-2025-10157: Umgehung der Sicherheitsüberprüfung in picklescan führt zu willkürlicher Codeausführung

Picklescan ist eine Sicherheitsbibliothek, die entwickelt wurde, um Python-Pickle-Dateien auf schädliche Inhalte zu untersuchen. Pickle-Dateien sind eine gängige Methode zur Serialisierung und Deserialisierung von Python-Objektstrukturen und werden in Machine-Learning-Pipelines (ML) häufig zum Speichern und Laden trainierter Modelle (z. B. PyTorch-Modelle) verwendet. Aufgrund des inhärenten Risikos der Ausführung von beliebigem Code während der Deserialisierung werden Tools wie Picklescan eingesetzt, um sicherzustellen, dass nur „sichere“ Pickles verarbeitet werden.

Diese Schwachstelle stellt eine grundlegende Umgehung des zentralen Sicherheitsversprechens des Tools dar und erzeugt ein falsches Gefühl von Sicherheit. Jede Python-Anwendung, insbesondere ML/KI-Systeme, die sich auf eine anfällige Version von Picklescan zur Bereinigung nicht vertrauenswürdiger Dateien verlässt, ist einem hohen Risiko ausgesetzt. Ein Angreifer kann eine schädliche Datei erstellen, die das Tool als sicher einstuft, was zu einer Remote Code Execution (RCE) führt, sobald die Datei von der nachgelagerten Anwendung verwendet wird.

Die Schwachstelle wird als hochriskant eingestuft, da sie eine Sicherheitskontrolle aushebelt. Zum Zeitpunkt der Erstellung dieses Berichts sind keine aktiven Exploits im Umlauf bekannt, und die Schwachstelle ist nicht im KEV-Katalog (Known Exploited Vulnerabilities) der CISA gelistet. Es existiert jedoch ein öffentlicher Proof-of-Concept, was die Wahrscheinlichkeit einer zukünftigen Ausnutzung erhöht.

Produktpicklescan
Datum2025-12-05 00:39:26

Technische Zusammenfassung

Die Schwachstelle ist eine Umgehung der Sicherheitsprüfung, die auf einer unvollständigen Kontrolle gefährlicher Module innerhalb einer Pickle-Datei beruht. Die Grundursache wird als CWE-184: Incomplete Blacklist identifiziert. Das Tool picklescan führt eine Sicherheitsvalidierung durch, indem es prüft, ob eine Pickle-Datei versucht, Module zu importieren und zu verwenden, die auf einer Sperrliste für bekanntermaßen gefährliche Module stehen (z. B. os, subprocess, asyncio). Die Prüfung verwendet jedoch einen exakten Abgleich des Modulnamens als Zeichenfolge.

Ein Angreifer kann diese Kontrolle umgehen, indem er auf ein Untermodul eines blockierten Moduls verweist. Wenn die Sperrliste beispielsweise asyncio enthält, blockiert das Tool dies, aber nicht asyncio.unix_events, welches dennoch zur Ausführung beliebiger Befehle verwendet werden kann.

Die Angriffskette läuft wie folgt ab:

  1. Ein Angreifer erstellt eine schädliche Pickle-Datei, die ein Untermodul eines bekannten und blockierten Moduls importiert.
  2. Die Datei wird an eine Python-Anwendung gesendet, die picklescan zur Validierung verwendet.
  3. picklescan analysiert die vom Pickle angeforderten Module und vergleicht sie mit der Sperrliste.
  4. Da das Untermodul (z. B. asyncio.unix_events) nicht exakt mit einem Eintrag der Liste (z. B. asyncio) übereinstimmt, stuft der Scan die Datei fälschlicherweise als sicher ein.
  5. Die Anwendung vertraut dem Scan-Ergebnis und fährt mit der Deserialisierung der Datei mittels pickle.load() von Python oder einer äquivalenten Funktion fort.
  6. Der Deserialisierungsprozess führt den in der Pickle-Datei angegebenen Code aus, was zu einer beliebigen Codeausführung mit den Privilegien der Python-Anwendung führt.

Der konzeptionelle Fehler lässt sich wie folgt veranschaulichen:

# Konzeptionell anfällige Logik
# Eine Sperrliste gefährlicher Module.
DENYLIST = {"os", "subprocess", "asyncio"}

# Die Prüfung schlägt fehl, da "asyncio.unix_events" nicht im Set enthalten ist.
def is_module_denied(module_name):
    return module_name in DENYLIST

# Konzeptionell korrekte Logik
# Die Korrektur beinhaltet die Prüfung des Basismoduls zusätzlich zum vollständigen Pfad.
def is_module_denied_fixed(module_name):
    base_module = module_name.split('.')[0]
    return base_module in DENYLIST or module_name in DENYLIST

Spezifische anfällige und korrigierte Versionen von picklescan waren zum Zeitpunkt der Erstellung nicht verfügbar. Benutzer sollten auf die neueste verfügbare Version aktualisieren.

Empfehlungen

  • Sofortiges Patchen: Aktualisieren Sie picklescan auf die neueste verfügbare Version, die den Fix für die Umgehung über Untermodule enthält.
  • Abhilfemaßnahmen: Die wichtigste Verteidigung besteht darin, niemals Pickle-Dateien aus nicht vertrauenswürdigen Quellen zu deserialisieren, unabhängig von der Sicherheitsprüfung. Verwenden Sie nach Möglichkeit sicherere Datenserialisierungsformate wie JSON oder YAML (mit sicherem Laden). Wenn die Verwendung von Pickle unvermeidbar ist, stellen Sie sicher, dass die Anwendung, die die Daten verarbeitet, mit den geringstmöglichen Privilegien ausgeführt und stark isoliert wird.
  • Überwachungs- und Erkennungsaktivitäten:
    • Überprüfen Sie Anwendungsprotokolle auf Deserialisierungsfehler oder anomales Verhalten im Zusammenhang mit der Dateiverarbeitung.
    • Überwachen Sie Systeme, auf denen Python-Anwendungen ausgeführt werden, auf verdächtige Kindprozesse. Ein Python-Prozess, der unerwartet Shells (sh, bash, powershell) oder Netzwerktools (curl, wget, nc) startet, ist ein starker Indikator für eine Kompromittierung.
    • Untersuchen Sie den Netzwerkverkehr auf unerwartete ausgehende Verbindungen von Anwendungsservern, die Dateiuploads verarbeiten.

  • Reaktion auf Vorfälle: Wenn eine Kompromittierung vermutet wird, isolieren Sie den betroffenen Host sofort vom Netzwerk. Bewahren Sie Anwendungsprotokolle, hochgeladene Dateien und ein Speicherabbild des laufenden Prozesses für forensische Analysen auf. Untersuchen Sie Anzeichen für seitliche Bewegungen (Lateral Movement) oder Datenexfiltration, die vom kompromittierten Host ausgehen.
  • Defense-in-Depth: Implementieren Sie eine strenge Filterung für ausgehenden Datenverkehr, um nicht autorisierte C2-Kommunikation zu blockieren. Verwenden Sie Anwendungskontrolllösungen, um zu verhindern, dass der Python-Interpreter nicht autorisierten Code oder Systembefehle ausführt. Erstellen Sie regelmäßig Backups kritischer Daten, einschließlich ML-Modellen, an einem sicheren, Offline-Speicherort.

[Callforaction-THREAT-Footer]

Leave a Reply

Your email address will not be published. Required fields are marked *