
Эксплойт proof-of-concept для CVE-2025-32434, уязвимости десериализации pickle в режиме weights_only в PyTorch, демонстрирующий создание и выполнение вредоносного tar-файла.
Точка входа уязвимости — load() в torch/serialization.py
когда защита (weights_only) включена: загрузка tar-файла вызывает следующие функции по цепочке:
load(): torch/serialization.py:1117_load_legacy(): torch/serialization.py:1376 до torch/serialization.py:1406persistent_load(): torch/serialization.py:1474pickle_moudle.load(): torch/serialization.py:1487Unpickler.load(): torch/_weights_only_unpickler.py:214В режиме weights_only_unpickler всё сводится к десериализации pickle, поэтому поиск по протоколу pickle может помочь. Ссылка: https://rushter.com/blog/pickle-serialization-internals/
Этот POC сначала генерирует вредоносный tar-файл, обратите внимание, что имя файла "storages" требуется pytorch, а затем загружает tar-файл для запуска уязвимости.
Теперь tar-файл исполняем в небезопасном режиме. Следующий шаг — включить защиту и обойти проверку следующим образом:
_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.