
Exploit de preuve de concept pour CVE-2025-32434, une vulnérabilité de désérialisation pickle dans le mode weights_only de PyTorch, démontrant la génération et l'exécution de fichiers tar malveillants.
Le point d'entrée de la vulnérabilité est load() dans torch/serialization.py
lorsque la protection (weights_only) est activée : le chargement d'un fichier tar appellerait ces fonctions en chaîne :
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:214Dans le mode weights_only_unpickler, tout tourne autour de la désérialisation pickle, donc rechercher le protocole pickle peut aider. Référence : https://rushter.com/blog/pickle-serialization-internals/
Ce POC génère d'abord un fichier tar malveillant, notez que le nom de fichier "storages" est requis par pytorch, puis charge le fichier tar pour déclencher la vulnérabilité.
Désormais, le fichier tar est exécutable en mode non sécurisé. L'étape suivante consiste à activer la protection de sécurité et à contourner la vérification comme ceci :
_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.