COMPUTING

La nueva bomba Zip almacena 4.5 PB de datos en un archivo de 46 MB

Los archivos ZIP han sido una forma práctica de comprimir información para facilitar su transporte y almacenamiento durante décadas. Pero las realidades de la longevidad de los disquetes de 5,25 y 3,5 pulgadas hicieron que depender de los archivos zip de varios discos fuera una apuesta cuando se trataba de la conservación de datos a largo plazo. Durante años, hemos sabido que era posible crear un tipo de archivo conocido como “bomba zip”, un archivo zip aparentemente pequeño que contenía capa tras capa de archivos zip anidados, de modo que la versión final descomprimida del conjunto de datos ser muchos órdenes de magnitud mayor que la versión final. Un archivo de procedencia desconocida, llamado 42.zip, ha estado flotando en línea durante años, empaquetando 4.5 PB de datos en un archivo de 42 KB utilizando este método. Los escáneres antivirus y las aplicaciones de descompresión normalmente ahora evitan el funcionamiento de las bombas zip al negarse a ser atraídos a desempaquetar capa tras capa de datos recursivos.

El investigador David Fifield ha desarrollado su propio tipo de bomba zip que mejora (o “mejora”) en esta práctica. El tamaño de su archivo es mucho mayor y requiere un archivo base de 46 MB para expandirse a un archivo de 4.5PB, pero no depende de la recursividad para lograr su compresión.

La razón por la que las bombas zip usan la recursividad es porque el algoritmo DEFLATE utilizado en los analizadores ZIP no puede lograr una relación de compresión superior a 1032: 1. Si quieres más compresión que eso, tienes que recurrir. Fifield descubrió una forma de eludir este límite. Como escribe en su blog:

Este artículo muestra cómo construir una bomba zip no recursiva cuya relación de compresión supera el límite DEFLATE de 1032. Funciona superponiendo archivos dentro del contenedor zip, para hacer referencia a un “núcleo” de datos altamente comprimidos en varios archivos, sin hacer múltiples copias del mismo. El tamaño de salida de la bomba zip crece cuadráticamente en el tamaño de entrada; es decir, la relación de compresión mejora a medida que la bomba crece. La construcción depende de las características de zip y DEFLATE; no es directamente portátil a otros formatos de archivo o algoritmos de compresión. Es compatible con la mayoría de los analizadores zip, con la excepción de los analizadores de “transmisión” que analizan en una sola pasada sin consultar primero el directorio central del archivo zip.

Para que este método funcione, Fifield tuvo que revisar cómo se almacenan los datos en archivos zip y elegir la implementación de Deflate adecuada para que su método funcione.

Comparación de desinflado

Imagen de David Fifield

Usó bulk_deflate, un compresor personalizado “especializado para comprimir una cadena de bytes repetidos”, porque podía empaquetar datos de manera más densa que zlib, info_ZIP o Zopfli. Si bien bulk_deflate supera a estas soluciones, señala que no es tan eficiente en casos de uso generales. También tuvo que usar una extensión del estándar zip conocida como ZIP64 para crear un archivo con más de 281 TB de salida de datos. Con ZIP64, puede construir una bomba zip de longitud efectivamente infinita.

Hay mucha más información que esta en el blog de Fifield, que explica cómo se creó la bomba zip, las modificaciones exactas al estándar subyacente y evalúa el uso de otros algoritmos de compresión además de Deflate para abordar la misma idea. Bzip2, por ejemplo, también se puede usar para crear bombas zip, aunque no es tan eficiente para hacerlo.

Algunas aplicaciones antivirus que pueden detectar bombas zip recursivas ya pueden detectar este método para crearlas, y Fifield cree que será bastante fácil protegerse contra ellas. Aún así, es un ejemplo de cómo el código se puede modificar de forma creativa para permitir nuevos tipos de archivos de alta compresión que antes no se sabía que fueran posibles. Si bien es un ataque extremadamente simple, una bomba zip puede considerarse análoga a un ataque DoS contra un solo sistema, de alguna manera. Al acaparar todos los recursos disponibles de CPU, RAM y almacenamiento, una máquina puede dejar de responder y no estar disponible. Es un método de ataque que data de los primeros días de Internet (la primera bomba zip conocida fue subido en 1996). La investigación continua sobre el tema es una historia de ingeniería interesante, incluso si el potencial de un ataque masivo es bastante bajo.

Publicaciones relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar
Cerrar