Security
11 min read
2674 views

ZIP Slip: La vulnerabilidad de extracción de archivos en archivos comprimidos en todas partes 📦

IT
InstaTunnel Team
Published by our engineering team
ZIP Slip: La vulnerabilidad de extracción de archivos en archivos comprimidos en todas partes 📦

Comprendiendo la falla de seguridad crítica que afecta a miles de aplicaciones

En junio de 2018, investigadores de seguridad revelaron una de las vulnerabilidades más extendidas en el desarrollo de software moderno: ZIP Slip. Esta vulnerabilidad crítica en la extracción de archivos afecta a miles de proyectos en múltiples ecosistemas de programación, permitiendo a los atacantes escribir archivos arbitrarios en sistemas objetivo y potencialmente lograr ejecución remota de código. Aunque fue divulgada públicamente hace años, siguen surgiendo nuevos casos de esta vulnerabilidad, con CVEs recientes reportados en 2025 que afectan a bibliotecas de archivado populares.

¿Qué es ZIP Slip?

ZIP Slip es una forma de vulnerabilidad de sobrescritura arbitraria de archivos que explota la traversión de directorios durante la extracción de archivos comprimidos. El ataque aprovecha archivos de archivo especialmente diseñados que contienen nombres de archivos con secuencias de traversal de rutas (como ../../evil.sh) que, al ser extraídos, escriben archivos fuera del directorio de destino previsto.

La vulnerabilidad no se limita solo a archivos ZIP. Afecta a múltiples formatos de archivo comprimido, incluyendo:

  • ZIP (.zip)
  • TAR (.tar, .tar.gz)
  • JAR (Archivo Java)
  • WAR (Archivo de aplicación web)
  • APK (Paquete Android)
  • CPIO (.cpio)
  • RAR (.rar)
  • 7Z (.7z)

Este impacto generalizado hace que ZIP Slip sea una de las vulnerabilidades más peligrosas en sistemas de manejo de archivos, afectando a aplicaciones de organizaciones como HP, Amazon, Apache, Pivotal, Oracle, LinkedIn, Twitter y muchas otras.

La mecánica técnica: Cómo funciona ZIP Slip

El patrón de código vulnerable

En su núcleo, ZIP Slip explota una omisión simple pero crítica en el código de extracción de archivos. Considera este ejemplo vulnerable en Java:

Enumeration3cZipEntry3e entries = zip.getEntries();
while (entries.hasMoreElements()) {
    ZipEntry entry = entries.nextElement();
    File file = new File(destinationDir, entry.getName());
    FileOutputStream fos = new FileOutputStream(file);
    // Extraer archivo...
}

El problema radica en la segunda línea: new File(destinationDir, entry.getName()). Este código concatena ciegamente el directorio de destino con el nombre del archivo del ZIP sin validación. Si entry.getName() devuelve algo como ../../../etc/cron.d/malicious, el archivo se escribirá en /etc/cron.d/malicious en lugar de mantenerse dentro del directorio de destino.

Anatomía de un archivo malicioso

Crear una carga útil maliciosa de ZIP Slip implica diseñar un archivo comprimido con nombres de archivos especialmente formateados. Aunque las utilidades de compresión estándar no soportan crear estos archivos, los atacantes pueden usar código personalizado o herramientas especializadas para generarlos.

Una estructura típica de archivo malicioso podría verse así:

exploit.zip
├── good_file.txt
├── ../../../../../../tmp/backdoor.sh
├── ../../../etc/cron.d/persistence
└── ../../../../var/www/html/shell.php

Cuando este archivo se extrae con código vulnerable, los archivos se escriben en ubicaciones muy fuera del directorio de extracción previsto, pudiendo sobrescribir archivos críticos del sistema, archivos de configuración o scripts ejecutables.

Escenarios reales de ataque

Escenario 1: Subida de shell en aplicación web

Un atacante sube un archivo ZIP malicioso a una aplicación web con función de instalación de plugins. El ZIP contiene:

legitimate_plugin_files/...
../../../../var/www/html/shell.php

Tras la extracción, el atacante obtiene un shell web en https://objetivo.com/shell.php, permitiendo ejecución remota de código con privilegios del servidor web.

Escenario 2: Manipulación de configuración del sistema

Un archivo malicioso dirigido a un sistema Linux podría incluir:

../../.ssh/authorized_keys
../../../etc/cron.d/backdoor

Esto permite al atacante añadir su clave SSH para acceso persistente o crear tareas programadas que ejecuten código malicioso.

Escenario 3: Explotación en aplicaciones móviles

Para aplicaciones Android, un atacante podría diseñar una actualización APK que contenga:

../../data/data/com.target.app/shared_prefs/settings.xml
../../../lib/libmalicious.so

Esto sobrescribe preferencias de la aplicación o inyecta bibliotecas nativas maliciosas.

Por qué esta vulnerabilidad está en todas partes

El problema del ecosistema

La prevalencia de ZIP Slip se debe a varios problemas sistémicos en el desarrollo de software:

  1. Falta de bibliotecas estándar: Muchos ecosistemas de programación, especialmente Java, carecen de bibliotecas centralizadas y de alto nivel para procesar archivos comprimidos. Esto obliga a los desarrolladores a escribir su propio código de extracción o copiar fragmentos vulnerables de fuentes en línea.

  2. Cultura de reutilización de código: Los desarrolladores copian frecuentemente código de Stack Overflow, repositorios de GitHub y otras fuentes comunitarias. Cuando un fragmento vulnerable se vuelve popular, se propaga rápidamente en miles de proyectos.

  3. Dependencias transitivas: Las aplicaciones no solo dependen de bibliotecas que incluyen directamente, sino también heredan dependencias de esas bibliotecas. Una vulnerabilidad en una dependencia profundamente anidada puede afectar a aplicaciones en varias capas.

  4. Conciencia de seguridad incompleta: Muchos desarrolladores no están entrenados para reconocer vulnerabilidades de traversal de rutas en contextos de extracción de archivos, tratando la gestión de archivos comprimidos como una operación rutinaria en lugar de una función crítica de seguridad.

Casos recientes descubiertos

La vulnerabilidad sigue surgiendo en nuevos contextos:

  • CVE-2025-3445 (abril de 2025): Se descubrió una vulnerabilidad ZIP Slip en la popular biblioteca Go mholt/archiver, que afecta a aplicaciones que usan la funcionalidad archiver.Unarchive(). La vulnerabilidad permite traversal de rutas mediante enlaces simbólicos especialmente diseñados en archivos ZIP.

  • CVE-2024-21518 (2024): Se encontró vulnerable el instalador del marketplace de OpenCart a ZIP Slip, permitiendo escrituras arbitrarias de archivos a través del panel de administración.

  • CVE-2024-43399 (2024): El Framework de Seguridad Móvil (MobSF) contenía una vulnerabilidad crítica ZIP Slip en su funcionalidad de análisis de APK.

Estos descubrimientos recientes demuestran que, a pesar de años de conciencia, siguen surgiendo nuevas instancias tanto en bases de código heredadas como modernas.

El impacto: qué pueden lograr los atacantes

Consecuencias inmediatas

Ejecución remota de código (RCE): El resultado más severo de la explotación de ZIP Slip. Los atacantes pueden sobrescribir archivos ejecutables, scripts de shell o bibliotecas dinámicas que posteriormente son ejecutadas por el sistema o usuarios.

Destrucción de datos: Los archivos comprimidos maliciosos pueden dirigirse a archivos críticos, bases de datos de configuración o archivos de respaldo, causando pérdida o corrupción de datos.

Escalada de privilegios: Sobrescribiendo archivos sensibles del sistema como /etc/sudoers o claves autorizadas SSH, los atacantes pueden escalar sus privilegios en el sistema objetivo.

Mecanismos de persistencia: Los atacantes pueden establecer acceso a largo plazo modificando scripts de inicio, tareas programadas, servicios systemd u otros mecanismos de autoejecución.

Vectores de ataque secundarios

ZIP Slip a menudo sirve como un punto de apoyo inicial para ataques más sofisticados:

  • Ataques en la cadena de suministro: Comprometiendo sistemas de construcción o repositorios de dependencias mediante la inyección de código malicioso a través de ZIP Slip
  • Movimiento lateral: Usando un sistema comprometido para extraer archivos maliciosos en otros sistemas conectados en red
  • Despliegue de ransomware: Sobrescribiendo archivos críticos antes de cifrarlos, dificultando la recuperación sin copias de seguridad

Cómo detectar vulnerabilidades ZIP Slip

Técnicas de auditoría de código

1. Buscar patrones vulnerables

Buscar código que extrae archivos comprimidos sin validación adecuada:

// BANDERA ROJA: Concatenación directa sin validación
File file = new File(baseDir, entry.getName());

// BANDERA ROJA: No hay chequeo de canonicalización de rutas
String filePath = destinationDir + File.separator + entry.getName();

2. Analizar funciones de procesamiento de archivos comprimidos

Examinar cualquier código que: - Abra archivos ZIP, TAR, RAR u otros - Itere sobre entradas del archivo comprimido - Escriba contenido extraído en disco - Procese archivos comprimidos subidos

3. Escaneo de dependencias

Utilizar herramientas automatizadas para identificar dependencias vulnerables. Plataformas de seguridad como Snyk mantienen listas actualizadas de bibliotecas afectadas en múltiples ecosistemas.

Estrategias de detección en tiempo de ejecución

Monitoreo del sistema de archivos: Implementar monitoreo para escrituras de archivos inesperadas fuera de los directorios designados, especialmente en rutas críticas como /etc, /bin y /lib.

Inspección del contenido del archivo comprimido: Antes de extraer, escanear el contenido en busca de patrones sospechosos en los nombres de archivos que contengan: - ../ o ..\ secuencias - rutas absolutas (que comiencen con / o letras de unidad) - caracteres especiales o trucos de codificación diseñados para evadir filtros

Extracción en sandbox: Extraer archivos en entornos aislados (contenedores, VMs) antes de mover contenido verificado a sistemas de producción.

Estrategias de prevención y mitigación

Prácticas de codificación segura

1. Validación y canonicalización de rutas

Validar siempre las rutas de archivos extraídos contra el directorio de destino previsto:

public static boolean isSafePath(File destination, ZipEntry entry) throws IOException {
    File destinationFile = new File(destination, entry.getName());
    String canonicalDestination = destination.getCanonicalPath();
    String canonicalTarget = destinationFile.getCanonicalPath();
    
    return canonicalTarget.startsWith(canonicalDestination + File.separator);
}

2. Usar bibliotecas seguras

Preferir bibliotecas con protección incorporada contra ZIP Slip:

  • Java: Apache Commons Compress (versiones recientes)
  • Python: Usar zipfile con validación adecuada
  • .NET: Usar System.IO.Compression con verificaciones de ruta
  • Node.js: Bibliotecas como extract-zip con parches de seguridad

3. Implementar defensa en profundidad

import os
import zipfile

def safe_extract(zip_path, extract_to):
    with zipfile.ZipFile(zip_path, 'r') as zip_ref:
        for member in zip_ref.namelist():
            # Normalizar y validar la ruta
            member_path = os.path.normpath(os.path.join(extract_to, member))
            
            # Asegurar que esté dentro del directorio de extracción
            if not member_path.startswith(os.path.abspath(extract_to)):
                raise Exception(f"Intento de traversal de ruta: {member}")
            
            # Chequeos adicionales
            if os.path.isabs(member):
                raise Exception(f"Ruta absoluta no permitida: {member}")
            
            # Extraer de forma segura
            zip_ref.extract(member, extract_to)

Protecciones a nivel de aplicación

1. Restricciones en carga de archivos

  • Limitar formatos de archivos comprimidos aceptados solo a los necesarios
  • Implementar límites de tamaño de archivo para prevenir ataques de zip bomb
  • Requerir autenticación y autorización en la funcionalidad de carga
  • Registrar todas las operaciones de extracción con metadatos detallados

2. Principio de menor privilegio

Ejecutar procesos de extracción con permisos mínimos: - Usar cuentas de servicio dedicadas con acceso restringido al sistema de archivos - Implementar políticas de control de acceso obligatorio (MAC) - Utilizar contenedores o entornos sandbox para contenido no confiable

3. Validación de entrada

Antes de procesar cualquier archivo comprimido: - Escanear en busca de malware y patrones sospechosos - Validar estructura e integridad del archivo - Revisar ratios de compresión (posible zip bomb) - Rechazar archivos con nombres de entrada sospechosos

Consideraciones de infraestructura

Aislamiento en contenedores: Extraer archivos en contenedores Docker u otras tecnologías de aislamiento, evitando que traversal de rutas afecte al sistema host.

Permisos del sistema de archivos: Configurar permisos estrictos en directorios del sistema para prevenir escrituras no autorizadas, incluso si la traversal de rutas tiene éxito.

Segmentación de red: Aislar sistemas que procesan archivos subidos por usuarios de infraestructura crítica para limitar el alcance del ataque.

Cómo probar ZIP Slip

Crear casos de prueba

Los equipos de seguridad deben incluir pruebas de ZIP Slip en sus rutinas de evaluación:

Caso de prueba 1: Traversal básico

El archivo del archivo contiene: ../../../etc/test.txt
Resultado esperado: La extracción falla o el archivo está dentro del destino

Caso de prueba 2: Traversal codificado

El archivo contiene: ..%2F..%2F..%2Fetc%2Ftest.txt
Resultado esperado: La extracción falla tras decodificar

Caso de prueba 3: Traversal en Windows

El archivo contiene: ..\..\..\Windows\System32\test.dll
Resultado esperado: La extracción falla en sistemas Windows

Caso de prueba 4: Rutas absolutas

El archivo contiene: /tmp/malicious.sh
Resultado esperado: Se rechazan rutas absolutas

Herramientas de prueba automatizadas

Varias herramientas pueden ayudar a identificar vulnerabilidades ZIP Slip:

  • Snyk: Escaneo completo de dependencias con detección de ZIP Slip
  • OWASP Dependency-Check: Herramienta de código abierto para identificar componentes vulnerables
  • SonarQube: Análisis estático con reglas de seguridad para traversal de rutas
  • Scripts personalizados: Escribir pruebas específicas para tu código de manejo de archivos comprimidos

Por qué toda función de carga de archivos necesita validación

La funcionalidad de carga de archivos es omnipresente en aplicaciones modernas:

  • Plataformas CMS: WordPress, Drupal y sistemas similares permiten cargas de plugins/temas
  • Almacenamiento en la nube: Dropbox, Google Drive y OneDrive manejan miles de millones de archivos comprimidos
  • Herramientas de desarrollo: gestores de paquetes, sistemas CI/CD y plugins de IDE procesan archivos continuamente
  • Apps móviles: tiendas de aplicaciones, mecanismos de actualización y sistemas de entrega de contenido
  • Software empresarial: gestión de documentos, sistemas de respaldo y herramientas de colaboración

Cada uno de estos representa una superficie de ataque potencial. Una sola extracción de archivo no validada puede comprometer sistemas enteros, por lo que la validación es imprescindible.

La cadena de carga a ejecución

Considera el flujo típico:

  1. El usuario sube un archivo comprimido
  2. El servidor almacena el archivo temporalmente
  3. Comienza el proceso de extracción (PUNTO VULNERABLE)
  4. La aplicación procesa el contenido extraído
  5. El contenido está disponible para usuarios/sistemas

El paso de extracción es donde ZIP Slip actúa. Para cuando la aplicación detecta algo mal (si es que lo hace), los archivos maliciosos ya pueden estar escritos en ubicaciones críticas.

Respuesta de la industria y estado actual

La comunidad de seguridad ha realizado esfuerzos significativos para abordar ZIP Slip:

Parcheo de bibliotecas: La mayoría de las bibliotecas de archivado principales han lanzado parches. El equipo de Snyk mantiene un repositorio en GitHub que rastrea las bibliotecas afectadas y su estado de corrección en diferentes ecosistemas.

Educación a desarrolladores: Los programas de capacitación en seguridad ahora incluyen ZIP Slip como tema central en currículos de codificación segura.

Escaneo automatizado: Las herramientas de seguridad modernas incluyen detección de ZIP Slip en sus bases de datos de vulnerabilidades, ayudando a las organizaciones a identificar dependencias afectadas.

Mejoras en estándares: Algunos ecosistemas están desarrollando bibliotecas centralizadas y seguras para procesamiento de archivos comprimidos, reduciendo la necesidad de implementaciones personalizadas.

Sin embargo, aún persisten desafíos:

  • Sistemas legados: Aplicaciones antiguas que quizás nunca reciban actualizaciones
  • Infierno de dependencias: Actualizar dependencias transitivas vulnerables puede romper aplicaciones
  • Variante de día cero: Nuevas variantes siguen emergiendo, como lo evidencian los CVEs de 2025
  • Conciencia de desarrolladores: Muchos aún desconocen el problema

Resumen de buenas prácticas

Para desarrolladores

  1. Nunca confíes en las rutas de los archivos del archivo - Siempre valida contra el directorio de extracción
  2. Usa bibliotecas seguras - Aprovecha bibliotecas bien mantenidas con protecciones integradas
  3. Implementa listas blancas - Define ubicaciones aceptables y rechaza todo lo demás
  4. Agrega pruebas de seguridad - Incluye pruebas de ZIP Slip en tus suites de pruebas
  5. Sigue el principio de menor privilegio - Ejecuta la extracción con permisos mínimos

Para equipos de seguridad

  1. Realiza auditorías periódicas - Escanea bases de código y dependencias en busca de patrones vulnerables
  2. Implementa monitoreo - Detecta operaciones sospechosas de escritura de archivos en tiempo real
  3. Educa a los desarrolladores - Asegura que entiendan los riesgos de traversal de rutas
  4. Prueba funciones de carga - En pruebas de penetración, enfócate en el manejo de archivos comprimidos
  5. Mantén planes de respuesta a incidentes - Prepárate para posibles explotaciones de ZIP Slip

Para organizaciones

  1. Actualiza dependencias - Mantén las bibliotecas de archivado actualizadas con parches de seguridad
  2. Adopta DevSecOps - Integra escaneo de seguridad en pipelines CI/CD
  3. Revisa código - Requiere revisión de seguridad en funciones de manejo de archivos
  4. Implementa defensa en profundidad - Usa múltiples capas de protección (validación, sandboxing, permisos)
  5. Planifica incidentes - Ten procedimientos de reversión para sistemas comprometidos

El futuro de la seguridad en archivos comprimidos

A medida que las aplicaciones siguen dependiendo en gran medida de archivos comprimidos para distribución de software, respaldo de datos, etc., la importancia de un manejo seguro de archivos comprimidos solo crecerá.

Amenazas emergentes: Nuevas variantes de ZIP Slip continúan apareciendo, incluyendo: - Traversal basado en enlaces simbólicos (como CVE-2025-3445) - Trucos de codificación que evaden filtros simples - Ataques TOCTOU durante la extracción

Preocupaciones nativas en la nube: Funciones sin servidor y aplicaciones en contenedores introducen nuevos vectores de ataque donde ZIP Slip podría comprometer políticas IAM, funciones Lambda o sistemas de orquestación de contenedores.

IA y automatización: A medida que las herramientas de desarrollo impulsadas por IA generan más código, garantizar que no reproduzcan patrones vulnerables será crucial.

Conclusión

ZIP Slip representa una tormenta perfecta de vulnerabilidades de seguridad: es fácil de explotar, difícil de detectar, está extendido en ecosistemas y puede tener consecuencias catastróficas. La persistencia de la vulnerabilidad —con nuevos casos en 2025— demuestra que la conciencia por sí sola no es suficiente.

Cada aplicación que procesa archivos comprimidos, especialmente aquellas que aceptan cargas de usuarios, debe implementar validación y medidas de seguridad adecuadas. Los riesgos son demasiado altos para confiar en suposiciones sobre la integridad del archivo o pensar “no nos pasará”.

Comprender los detalles técnicos de ZIP Slip, implementar validaciones robustas, usar bibliotecas seguras y mantener la vigilancia mediante pruebas y monitoreo, permite a desarrolladores y organizaciones proteger sus sistemas de esta amenaza omnipresente. La vulnerabilidad puede estar en todas partes, pero con las precauciones correctas, su explotación no tiene por qué.

Recuerda: No confíes en ningún archivo comprimido. Valida cada ruta. Asegura tus extracciones. La seguridad de tu sistema depende de ello.


Recursos adicionales

Longitud del artículo: ~2,000 palabras
Última actualización: Noviembre de 2025
Palabras clave SEO: vulnerabilidad ZIP Slip, seguridad en extracción de archivos, ataque de traversal de rutas, seguridad en carga de archivos, explotación de archivos ZIP, manejo seguro de archivos comprimidos, CVE-2025-3445, archivo malicioso, ejecución remota de código

Continue from this article into the most relevant product guides and workflows.

Related Topics

#zip slip, zip slip vulnerability, archive extraction vulnerability, path traversal in zip files, zip file extraction attack, zip path traversal, malicious zip archive, file overwrite via zip, zip slip exploit, zip slip attack, zip slip CVE, zip slip 2025, zip file security, archive validation, zip extraction bug, zip file upload vulnerability, zip directory traversal, zip extraction overwrite, unzipping vulnerability, zip exploit tutorial, zip path validation, zip file sanitization, zip extraction mitigation, secure zip handling, zip slip remediation, zip slip prevention, zip slip detection, file upload vulnerability, archive extraction flaw, archive traversal exploit, tar slip vulnerability, jar slip exploit, zip extraction library bug, java zip slip, python zip slip, nodejs zip slip, golang zip slip, csharp zip slip, secure file extraction, zip entry sanitization, zip path normalization, zip traversal prevention, unzip function exploit, CVE zip slip, OWASP zip slip, bug bounty zip slip, zip slip github, secure zip extraction code, validate archive contents, zip upload security, zip sanitization best practices, zip slip real world, zip slip demo, zip slip exploit example, zip slip mitigation strategies, directory traversal attack, insecure archive extraction

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles