
Exploit de prueba de concepto para CVE-2025-32434, una vulnerabilidad de deserialización pickle en el modo weights_only de PyTorch, que demuestra la generación y ejecución de archivos tar maliciosos.
El punto de entrada de la vulnerabilidad es load() en torch/serialization.py
cuando la protección (weights_only) está habilitada: cargar un archivo tar llamaría a estas funciones en cadena:
load(): torch/serialization.py:1117_load_legacy(): torch/serialization.py:1376 a torch/serialization.py:1406persistent_load(): torch/serialization.py:1474pickle_moudle.load(): torch/serialization.py:1487Unpickler.load(): torch/_weights_only_unpickler.py:214En el modo weights_only_unpickler, todo se trata de la deserialización de pickle, por lo que buscar el protocolo pickle puede ayudar. referencia: https://rushter.com/blog/pickle-serialization-internals/
Este POC primero genera un archivo tar malicioso, tenga en cuenta que el nombre de archivo "storages" es requerido por pytorch, luego carga el archivo tar para desencadenar la vulnerabilidad.
Ahora el archivo tar es ejecutable en modo inseguro. El siguiente paso es habilitar la protección de seguridad y eludir la verificación de esta manera:
_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.