
Exploit de preuve de concept pour CVE-2025-32434, une RCE critique dans torch.load() de PyTorch qui contourne weights_only=True via l'écriture de fichiers mappés en mémoire.
CVE-2025-32434 est une vulnérabilité critique d'exécution de code à distance (RCE) dans PyTorch, une bibliothèque Python largement utilisée pour l'apprentissage profond et les réseaux de neurones.
La vulnérabilité réside dans la fonction torch.load(), même lorsque le paramètre soi-disant sûr weights_only=True est utilisé. L'option weights_only=True a été conçue pour empêcher l'exécution de code en limitant le chargement aux seuls paramètres du modèle. Cependant, des chercheurs ont trouvé un moyen de contourner cette protection.
| Statut | Version |
|---|
| Vulnérable | PyTorch 2.5.1 et toutes versions antérieures |
| Corrigée | PyTorch 2.6.0 et versions ultérieures |
Un attaquant non authentifié peut créer un fichier de modèle malveillant qui exécute du code arbitraire lorsqu'il est chargé par une victime. L'attaque ne nécessite aucune interaction de l'utilisateur et peut conduire à une compromission totale du système. La vulnérabilité exploite la manière dont PyTorch utilise la sérialisation pickle de Python, permettant aux attaquants d'intégrer du code malveillant dans les fichiers de modèle.
Cette vulnérabilité est particulièrement dangereuse car de nombreux développeurs comptent sur weights_only=True comme mesure de sécurité, mais cette vulnérabilité prouve que même l'option « sûre » n'est pas suffisante.
Le script full.py fourni démontre comment créer un modèle PyTorch malveillant qui écrit dans le système de fichiers lorsqu'il est chargé.
torch.from_file() pour créer un tenseur mappé en mémoire pointant vers le fichier cron cible# Memory-mapped file writing
t = torch.from_file("/etc/cron.d/rev",
shared=True,
size=len(asciis),
dtype=torch.uint8)
msg = torch.tensor(asciis, dtype=torch.uint8)
t.copy_(msg) # Writes to /etc/cron.d/rev
Ce guide fournit des instructions étape par étape sur la façon d'utiliser le script de preuve de concept (PoC) CVE-2025-32434.
Avant de commencer, assurez-vous d'avoir :
# Install PyTorch (vulnerable version for testing)
pip install torch==2.5.1
pip install torch