
Proof-of-Concept-Exploit für CVE-2025-32434, eine pickle-Deserialisierungsschwachstelle im weights_only-Modus von PyTorch, der die Erstellung und Ausführung schädlicher tar-Dateien demonstriert.
Der Einstiegspunkt der Schwachstelle ist load() in torch/serialization.py
wenn der Schutz (weights_only) aktiviert ist: Das Laden einer tar-Datei würde diese Funktionen in einer Kette aufrufen:
load(): torch/serialization.py:1117_load_legacy(): torch/serialization.py:1376 bis torch/serialization.py:1406persistent_load(): torch/serialization.py:1474pickle_moudle.load(): torch/serialization.py:1487Unpickler.load(): torch/_weights_only_unpickler.py:214Im weights_only_unpickler-Modus dreht sich alles um die Pickle-Deserialisierung, daher kann die Suche nach dem Pickle-Protokoll helfen. Referenz: https://rushter.com/blog/pickle-serialization-internals/
Dieser POC generiert zunächst eine bösartige tar-Datei. Beachten Sie, dass der Dateiname "storages" von pytorch benötigt wird, und lädt dann die tar-Datei, um die Schwachstelle auszulösen.
Nun ist die tar-Datei im unsicheren Modus ausführbar. Der nächste Schritt besteht darin, den Sicherheitsschutz zu aktivieren und die Überprüfung wie folgt zu umgehen:
_pickle.UnpicklingError: Unsupported global: GLOBAL __builtin__.eval was not an allowed global by default. Please use `torch.serialization.add_safe_globals([eval])` to allowlist this global if you trust this class/function.