Plataforma
python
Componente
tarfile
Corrigido em
3.10.18
3.11.13
3.12.11
3.13.4
3.14.0b3
A vulnerabilidade CVE-2025-4138 afeta o módulo tarfile do Python, permitindo que um invasor ignore os filtros de extração, possibilitando a escrita de arquivos fora do diretório de destino especificado. Isso pode levar à modificação de metadados e, potencialmente, à execução de código malicioso. Versões afetadas incluem 3.10.0 até 3.14.0b3. A correção foi disponibilizada na versão 3.14.0b3.
Um atacante pode explorar essa vulnerabilidade fornecendo um arquivo tar malicioso que contenha links simbólicos (symlinks) apontando para locais fora do diretório de extração pretendido. Ao ignorar os filtros de extração, o tarfile pode extrair esses links simbólicos, permitindo que o atacante escreva arquivos em locais arbitrários no sistema de arquivos. Isso pode levar à substituição de arquivos importantes, à instalação de malware ou à obtenção de acesso não autorizado a dados confidenciais. A vulnerabilidade é particularmente perigosa em ambientes onde o tarfile é usado para processar arquivos tar recebidos de fontes não confiáveis, como uploads de usuários ou downloads da internet.
A vulnerabilidade foi divulgada em 03 de junho de 2025. A probabilidade de exploração é considerada média, dada a complexidade da criação de um arquivo tar malicioso e a necessidade de contornar as medidas de segurança existentes. Não há evidências de exploração ativa em campanhas conhecidas no momento da redação. A vulnerabilidade foi adicionada ao CISA KEV (Known Exploited Vulnerabilities) catalog.
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
Status do Exploit
EPSS
0.10% (percentil 27%)
CISA SSVC
Vetor CVSS
A mitigação primária é atualizar para a versão 3.14.0b3 do Python, que corrige a vulnerabilidade. Se a atualização imediata não for possível, considere as seguintes medidas: evite usar o parâmetro filter= com valores como "data" ou "tar" ao extrair arquivos tar não confiáveis. Implemente uma validação rigorosa dos arquivos tar antes da extração, verificando a integridade dos links simbólicos e garantindo que eles apontem para locais seguros. Utilize um sistema de arquivos com permissões restritivas para limitar o impacto potencial de uma exploração bem-sucedida. Considere o uso de um WAF (Web Application Firewall) para bloquear solicitações que contenham arquivos tar maliciosos.
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.
Análise de vulnerabilidades e alertas críticos diretamente no seu e-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).
Envie seu arquivo de dependências e descubra na hora se esta e outras CVEs te atingem.
Envie seu arquivo requirements.txt e descubra na hora se você está afetado.