Técnica de programación segura: El comportamiento predeterminado de las bibliotecas Zip puede derivar en una ejecución remota de código.

Esta semana hablaremos sobre el comportamiento predeterminado de las bibliotecas Zip. Si eres desarrollador de aplicaciones, es muy probable que ya las hayas utilizado. La mayoría de los recursos que se descargan de internet están en formato zip, y tiene sentido: los datos comprimidos ocupan menos espacio, se descargan más rápido y consumen menos ancho de banda.
Si quieres ejemplos más concretos: texturas para juegos, paquetes de idioma para el autocompletado en teclados... Muchos recursos no vienen integrados automáticamente en la aplicación, sino que se descargan posteriormente.
Pero ten cuidado al usar esta funcionalidad, ya que los nombres de archivo en los archivos zip pueden contener información de recorrido de rutas (path traversal). Al extraerlos, esto provocará que se creen archivos fuera del directorio previsto. A menudo, esto se hace con la intención de sobrescribir archivos existentes.

Supongamos que tenemos un archivo zip que contiene los dos archivos siguientes:
archivo1
../archivo2
Cuando se extrae este archivo, archivo1 se extrae donde esperamos, en el directorio de descompresión. Sin embargo, archivo2 se escribió un directorio por encima de donde le pedimos a la biblioteca zip que extrajera el contenido.
Así que ten cuidado: si tu biblioteca zip no se encarga de gestionar correctamente este caso, permitirá que un atacante escriba un archivo arbitrario en el sistema. Comprueba siempre si tu biblioteca es segura; esta regla general es válida para cualquier biblioteca, pero en particular, debes verificar el comportamiento predeterminado de tu biblioteca zip ante este tipo de archivos.
Demostremos las consecuencias cuando este caso no se gestiona correctamente en Android. En Android se utiliza la biblioteca Zip de Java (java.util.zip), la cual permite el recorrido de rutas de forma predeterminada, tal como se explicó anteriormente.
El formato de ejecutable Dalvik de Android (.dex) tiene limitaciones en cuanto a la cantidad de clases que puede tener un solo archivo. Las aplicaciones que necesitan más clases pueden utilizar la biblioteca de soporte MultiDex, añadida desde el nivel de API 21 (Android 5.0 Lollipop). Esta biblioteca guarda archivos .dex secundarios en el directorio de datos de la aplicación, el cual es escribible por el usuario de la app, y este código se cargará y ejecutará cuando el archivo .dex sea necesario.
Esto significa que un atacante puede modificar el archivo .dex sobrescribiéndolo mediante un archivo zip malicioso y, lo que es peor, este archivo se cargará y ejecutará, lo que resulta en una vulnerabilidad de ejecución remota de código. Este no es solo un ejemplo teórico, sino que se ha demostrado en la aplicación My Talking Tom, que cuenta con más de 100 millones de descargas en la tienda de aplicaciones. Aquí tienes un video del exploit que se presentó en Black Hat.

Comprueba siempre el comportamiento de tu biblioteca zip para ser consciente de sus inseguridades. Si no puedes desactivar el recorrido de rutas en tu biblioteca zip, asegúrate de validar el nombre de cada entrada antes de extraerla. El nombre debe normalizarse y la ruta resultante debe estar dentro del directorio donde deseas extraer el archivo. Ya que estamos, también deberías comprobar el tamaño total del archivo extraído para evitar las "bombas zip", pero eso será tema para otra semana.
Si quieres jugar con algunos desafíos sobre recorrido de rutas o quieres poner a prueba tus habilidades de programación segura, visita nuestra plataforma.
¡Hasta la próxima, y recuerda: código seguro o nada!
- Podemos inyectar un archivo en un zip cuyo nombre tenga como prefijo un número arbitrario de " ../ "
- Si la biblioteca zip no gestiona correctamente este caso, nos permitiría escribir fuera del directorio de extracción previsto
- Si el archivo zip no es de confianza, esto le da al atacante una vulnerabilidad de escritura arbitraria
Controle el desarrollo impulsado por IA antes de su lanzamiento
Mida el riesgo asistido por IA, aplique políticas de codificación segura en el momento de la confirmación y acelere la entrega segura en todo su ciclo de vida de desarrollo de software (SDLC).
Explorar más blogs
Acceda a contenido especializado sobre programación segura, gobernanza de IA y gestión de riesgos de software.

Una cultura de seguridad: cómo Sage creó su programa de defensores
Descubre cómo Sage reforzó su seguridad con un enfoque flexible y centrado en las relaciones, logrando formar a más de 200 expertos en seguridad y alcanzar una reducción de riesgos cuantificable.

Kamer van Koophandel: Seguridad a escala impulsada por los desarrolladores
La Cámara de Comercio (Kamer van Koophandel) comparte cómo integró la programación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de puntuación de confianza y una cultura de responsabilidad compartida en seguridad.

Cómo un «Juego de Códigos» guía a IAG Group hacia un futuro de programación más seguro
IAG Group es la entidad detrás de muchas de las principales compañías de seguros en la región de Asia-Pacífico, que suscribe pólizas para millones de clientes por un valor aproximado de 11.400 millones de dólares australianos en primas anuales.

Mes de la Concienciación sobre Ciberseguridad 2026: Comprender la seguridad de la IA es fundamental para la defensa empresarial
Hemos llegado a un punto en el que la mayoría de las principales empresas de IA han pedido públicamente una ralentización global en el desarrollo de la IA para que las medidas de seguridad puedan ponerse al día, pero la verdad es que ya se han materializado graves problemas de seguridad. Esto deja a innumerables líderes de seguridad y equipos ejecutivos en una situación urgente, a medida que los costes monetarios y de riesgo de la implementación de la IA siguen acumulándose.

Habilitador 8: Branding de su programa
Un programa de codificación segura necesita algo más que un buen contenido para tener éxito. El Habilitador 8 muestra cómo el branding transforma la participación en una experiencia codiciada basada en el estatus.
.avif)
Cada empleado está ahora en la primera línea de la ciberseguridad de la IA
El panorama tecnológico empresarial está cambiando a una velocidad que pocos previeron hasta que fue demasiado tarde. Hemos cruzado oficialmente el umbral del código escrito por humanos y la asistencia básica de copilotos hacia la era del Ciclo de Vida de Desarrollo Agéntico (ADLC). Si bien los agentes de IA autónomos prometen una eficiencia sin precedentes en múltiples funciones, también traen consigo una clase completamente nueva de riesgos regulatorios y de seguridad.
Proteja el desarrollo basado en IA antes de su lanzamiento
Identifique riesgos de desarrollo, aplique políticas y prevenga vulnerabilidades en todo el ciclo de vida de su software.