Plateforme
python
Composant
tarfile
Corrigé dans
3.10.18
3.11.13
3.12.11
3.13.4
3.14.0b3
La vulnérabilité CVE-2025-4138 affecte le module tarfile de Python. Elle permet de contourner le filtre d'extraction lors de l'extraction d'archives tar non fiables, ce qui peut entraîner la modification de métadonnées de fichiers et potentiellement l'écriture de fichiers en dehors du répertoire de destination. Cette vulnérabilité touche les versions de Python comprises entre 3.10.0 et 3.14.0b3. Une correction est disponible dans la version 3.14.0b3.
Un attaquant peut exploiter cette vulnérabilité en créant une archive tar malveillante qui, lors de l'extraction avec TarFile.extractall() ou TarFile.extract() en utilisant le paramètre filter=, contourne le filtre d'extraction. Cela permet à l'attaquant de spécifier des liens symboliques pointant vers des emplacements en dehors du répertoire de destination prévu, potentiellement écrasant des fichiers critiques du système ou modifiant des métadonnées de fichiers. L'impact peut aller de la corruption de données à la prise de contrôle du système, en fonction des privilèges de l'utilisateur exécutant le code Python. Cette vulnérabilité est particulièrement préoccupante dans les environnements où des archives tar non fiables sont traitées automatiquement.
La vulnérabilité CVE-2025-4138 a été rendue publique le 3 juin 2025. Il n'y a pas d'indication d'une exploitation active à ce jour. Aucun PoC public n'est connu à l'heure actuelle. La sévérité est classée comme élevée (CVSS 7.5).
Systems using Python 3.10.0 through 3.14.0b3 that process untrusted tar archives are at risk. This includes web applications, automation scripts, and any system that relies on the tarfile module to extract archives from external sources. Shared hosting environments where multiple users can upload files are particularly vulnerable.
• python / server:
find / -name '*tar.gz' -o -name '*tar.bz2' -o -name '*tar'• python / supply-chain:
import os
import tarfile
def check_tarfile_extraction(filepath, destination):
try:
with tarfile.open(filepath, 'r') as tar:
tar.extractall(path=destination, filter='data') # Vulnerable code
return False # No vulnerability detected
except Exception as e:
return True # Vulnerability detected
# Example usage (replace with actual filepaths)
filepath = '/path/to/your/archive.tar.gz'
destination = '/tmp/extraction_test'
if check_tarfile_extraction(filepath, destination):
print(f"Potential vulnerability detected in {filepath}")
else:
print(f"No vulnerability detected in {filepath}")disclosure
Statut de l'Exploit
EPSS
0.10% (percentile 27%)
CISA SSVC
Vecteur CVSS
La mitigation principale consiste à mettre à jour Python vers la version 3.14.0b3 ou supérieure, où la vulnérabilité a été corrigée. Si la mise à jour n'est pas immédiatement possible, il est fortement recommandé d'éviter d'utiliser le paramètre filter= avec les valeurs "data" ou "tar" lors de l'extraction d'archives tar non fiables. En alternative, validez rigoureusement le contenu des archives tar avant l'extraction, en vérifiant les chemins d'accès et les métadonnées des fichiers. Il n'existe pas de règles WAF spécifiques pour cette vulnérabilité, mais une validation stricte des entrées est essentielle. La détection peut se faire en surveillant les tentatives d'extraction d'archives tar avec des chemins d'accès suspects.
Actualice la biblioteca CPython a la versión 3.10.18 o superior, 3.11.13 o superior, 3.12.11 o superior, 3.13.4 o superior, o 3.14.0b3 o superior. Evite usar la función `TarFile.extractall()` o `TarFile.extract()` con el parámetro `filter=` configurado en 'data' o 'tar' con archivos tar no confiables.
Analyses de vulnérabilités et alertes critiques directement dans votre boîte mail.
CVE-2025-4138 is a directory traversal vulnerability in Python's tarfile module affecting versions 3.10.0–3.14.0b3. It allows attackers to extract files outside the intended directory when using the 'data' or 'tar' filter.
You are affected if you are using Python versions 3.10.0 through 3.14.0b3 and extracting untrusted tar archives using TarFile.extractall() or TarFile.extract() with the filter='data' or filter='tar' parameter.
Upgrade to Python 3.14.0b3 or later. Alternatively, avoid using the filter parameter with 'data' or 'tar' when extracting untrusted archives.
No active exploitation has been confirmed, but the vulnerability's ease of exploitation makes it a potential target.
Refer to the Python security advisory for CVE-2025-4138 on the Python website (https://docs.python.org/3/library/tarfile.html#tarfile-extraction-filter).
Téléverse ton fichier de dépendances et découvre instantanément si cette CVE et d'autres te touchent.
Téléverse ton fichier requirements.txt et nous te dirons instantanément si tu es affecté.