CVE-2025-10156: ZIP-Archiv-Parsing-Schwachstelle in picklescan ermöglicht Sicherheitsumgehung und Remote Code Execution

picklescan ist ein weit verbreitetes Open-Source-Tool zur Analyse von Machine-Learning-Modellen und anderen Dateiarchiven auf schädliche Python-Pickle-Daten. Pickle-Dateien sind ein gängiges Serialisierungsformat in Python, gelten jedoch als notorisch unsicher, da die Deserialisierung eines speziell präparierten Pickle-Objekts zur Ausführung von beliebigem Code führen kann. Diese Bibliothek wird häufig in Sicherheitspipelines, Artefakt-Repositories und Datei-Upload-Systemen integriert, um Angriffe auf Anwendungen zu verhindern, die KI/ML-Modelle oder andere Python-Datenstrukturen verarbeiten.

Die Auswirkungen dieser Schwachstelle sind kritisch. Sie ermöglicht es, die Sicherheitsfunktion des Scanners vollständig zu umgehen. Ein nicht authentifizierter Angreifer kann ein schädliches ZIP-Archiv erstellen, das picklescan nicht korrekt analysieren kann, wodurch es fälschlicherweise als sicher eingestuft wird. Wenn eine nachgelagerte Anwendung diesem Ergebnis vertraut und die darin enthaltene schädliche Pickle-Datei verarbeitet, kann es zu einer nicht authentifizierten Remote-Code-Ausführung kommen.

Es existiert ein öffentlicher Exploit für diese Schwachstelle, der in Sicherheitskreisen intensiv diskutiert wird. Obwohl er noch nicht im KEV-Katalog der CISA gelistet ist, erhöht die Verfügbarkeit des Exploits die Wahrscheinlichkeit einer aktiven Ausnutzung erheblich. Jede internetexponierte Anwendung, die diese Bibliothek zur Analyse nicht vertrauenswürdiger ZIP-Archive verwendet, ist unmittelbar von einer Kompromittierung bedroht.

Produktpicklescan
Datum05.12.2025 00:16:11

Technische Zusammenfassung

Die Hauptursache der Schwachstelle wird als CWE-755: Unsachgemäße Behandlung von Ausnahmesituationen klassifiziert. Die ZIP-Scan-Komponente des picklescan-Tools behandelt Ausnahmen, die während der Verarbeitung fehlerhafter Dateien innerhalb eines ZIP-Archivs auftreten, nicht korrekt.

Die Angriffskette verläuft wie folgt:

  1. Der Angreifer erstellt ein ZIP-Archiv, das mindestens zwei Dateien enthält. Die erste Datei ist absichtlich mit einer fehlerhaften Cyclic Redundancy Check (CRC)-Prüfsumme beschädigt. Die zweite Datei ist ein legitimes, aber schädliches Pickle-Objekt.
  2. Wenn picklescan das Archiv öffnet und versucht, die erste Datei zu lesen, löst die korrupte CRC eine zlib.error-Ausnahme aus.
  3. Die Scan-Funktion behandelt diese spezifische Ausnahme innerhalb der Dateischleife nicht. Die unbehandelte Ausnahme breitet sich aus und führt zum vorzeitigen Abbruch des gesamten Scan-Prozesses.
  4. Da der Prozess hängen bleibt, analysiert der Scanner niemals die zweite Datei, die den schädlichen Pickle-Payload enthält. An die aufrufende Anwendung wird kein Fehler gemeldet, der auf einen teilweisen oder fehlgeschlagenen Scan hindeutet.
  5. Die nachgelagerte Anwendung geht davon aus, dass der Scan erfolgreich abgeschlossen wurde und keine Bedrohungen gefunden wurden. Sie fährt mit dem Extrahieren und Deserialisieren der schädlichen Pickle-Datei fort und aktiviert so den Remote-Code-Ausführungs-Payload.

Konzeptioneller Code-Unterschied:

# Fehlerhafte Logik
def scan_zip_archive(archive):
    # Eine Ausnahme hier beendet die gesamte Funktion
    for member in archive.infolist():
        file_content = archive.read(member.filename)
        scan_for_malicious_pickles(file_content)

# Gepatchte Logik
def scan_zip_archive(archive):
    for member in archive.infolist():
        try:
            # Ausnahme wird pro Datei behandelt, sodass die Schleife fortgesetzt werden kann
            file_content = archive.read(member.filename)
            scan_for_malicious_pickles(file_content)
        except zlib.error:
            log("Datei konnte aufgrund eines CRC-Fehlers nicht gelesen werden:", member.filename)
            continue

Ein Angreifer kann diese Umgehung nutzen, um beliebigen Code mit den Berechtigungen der Anwendung auszuführen, die die Datei verarbeitet, was zu einer vollständigen Systemkompromittierung führt. Die spezifisch betroffenen Versionen wurden nicht offengelegt; Benutzern wird empfohlen, davon auszugehen, dass alle Versionen vor dem neuesten Patch anfällig sind.

Empfehlungen

  • Sofortiges Patchen: Aktualisieren Sie die Bibliothek picklescan auf die neueste verfügbare Version. Entwickler sollten sicherstellen, dass ihre Abhängigkeitsverwaltung so konfiguriert ist, dass die gepatchte Version abgerufen wird.
  • Abhilfemaßnahmen: Wenn ein sofortiges Patchen nicht möglich ist, kapseln Sie die Aufrufe der picklescan-Bibliothek in einen robusten Ausnahmebehandlungsblock. Überwachen Sie alle Ausnahmen, die während der ZIP-Verarbeitung von der Bibliothek ausgehen, und betrachten Sie solche Ereignisse als Scan-Fehler, wobei das Archiv abgelehnt werden sollte. Erwägen Sie, die Verarbeitung aller ZIP-Dateien aus nicht vertrauenswürdigen Quellen vorübergehend zu deaktivieren.
  • Suche und Überwachung:
    • Analysieren Sie System- und Anwendungsprotokolle auf unbehandelte Ausnahmen bezüglich zlib.error oder der Verarbeitung von ZIP-Dateien, insbesondere in Python-Anwendungen.
    • Überwachen Sie Python-Prozesse, die unerwartete Kindprozesse erzeugen, wie /bin/sh, bash, powershell.exe oder Netzwerk-Utilities wie curl und wget.
    • Suchen Sie nach neu erstellten Dateien an ungewöhnlichen Orten, insbesondere solchen, die von dem Konto geschrieben wurden, unter dem die Anwendung mit picklescan ausgeführt wird.

  • Incident Response: Im Falle einer vermuteten Kompromittierung isolieren Sie den betroffenen Host sofort vom Netzwerk, um seitliche Bewegungen (Lateral Movement) zu verhindern. Bewahren Sie Protokolle, Speicher-Dumps und Festplatten-Images für eine forensische Analyse auf. Untersuchen Sie die Anwendungsaktivitäten, um den Zeitpunkt der Kompromittierung und eventuell exfiltrierte Daten zu identifizieren.
  • Defense in Depth: Führen Sie Anwendungen, die externe, nicht vertrauenswürdige Dateien verarbeiten, in Sandbox- oder Container-Umgebungen mit minimalen Berechtigungen aus. Implementieren Sie eine Netzwerksegmentierung, um die Fähigkeit der Anwendung zur Kommunikation mit internen Systemen einzuschränken und die Auswirkungen eines potenziellen Verstoßes zu reduzieren.

[Callforaction-THREAT-Footer]

Leave a Reply

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