Le module tarfile de Python, inclus dans la livraison standard, qui fournit des fonctions pour lire et écrire des archives tar, présente cinq vulnérabilités, dont une de niveau critique. Les vulnérabilités ont été corrigées dans les versions Python 3.13.4 et 3.12.11. La plus dangereuse d'entre elles (CVE-2025-4517) permet, lors de l'extraction d'une archive spécialement conçue, d'écrire des fichiers dans n'importe quelle partie du système de fichiers. Dans les scripts système utilisant tarfile et exécutés avec des droits root (par exemple, dans des utilitaires de gestion de paquets et de conteneurs isolés), cette vulnérabilité peut être exploitée pour élever ses privilèges ou sortir des limites du conteneur isolé.
La vulnérabilité concerne les projets dans lesquels le module tarfile est utilisé pour extraire des archives tar non fiables, en utilisant la fonction TarFile.extractall() ou TarFile.extract() avec le paramètre « filter= » défini sur « data » ou « tar ». La vulnérabilité est due à un traitement incorrect de la séquence « .. » dans le nom du lien. Le problème concerne les versions de Python à partir de 3.12. Le mode ‘filter= »data »‘ est appliqué par défaut dans la branche Python 3.14, actuellement en développement (la sortie est prévue pour l'automne).
Autres vulnérabilités dans TarFile :
- CVE-2025-4330 — possibilité de contourner le filtre des données extraites, ce qui peut entraîner l'extraction d'un lien symbolique pointant en dehors du répertoire de base dans lequel l'extraction a lieu.
- CVE-2025-4138 — possibilité de créer des liens symboliques arbitraires en dehors du répertoire de base lors de l'extraction d'archives avec le paramètre ‘filter= »data »‘.
- CVE-2024-12718 — possibilité de modifier les métadonnées (par exemple, l'heure de modification) des fichiers en dehors du répertoire de base lors de l'extraction d'archives avec le paramètre ‘filter= »data »‘ ou des droits d'accès (chmod) lors de l'extraction d'archives avec le paramètre ‘filter= »tar »‘.
- CVE-2025-4435 — si lors de l'extraction d'une archive le paramètre TarFile.errorlevel est défini à 0, contrairement à la documentation, les éléments de l'archive correspondant au filtre spécifié étaient extraits et non ignorés.
Source : opennet.ru
