¿Existen razones válidas para que los archivos comprimidos (zip, gzip, etc.) simulen el tamaño del archivo?

4

Archivos Zip , GZip , y probablemente otros, incluyen información sobre el archivo contenido, incluido el tamaño sin comprimir del archivo. Sin embargo, al extraer estos archivos, el número carece de significado ya que los datos reales pueden ser mucho más grandes (por ejemplo, reportados como 1 byte, pero en realidad 10GB ).

Dado que la descompresión de un archivo .zip grande podría hacer que un sistema DoS use todos los recursos, necesitaría algún tipo de comprobación para evitar la extracción de un archivo que pudiera dañar el servidor. Un método sería limitar el tamaño permitido a X GB. Si el tamaño indicado de un archivo es mayor que eso, salga temprano. Sin embargo, si el tamaño es incorrecto, deberías descomprimir hasta ese tamaño antes de salir.

Una alternativa potencial es comenzar a descomprimir, y tan pronto como el tamaño real sea mayor que el indicado (tal vez con un margen de error), salir.

¿Hay casos legítimos en los que el tamaño indicado de un archivo comprimido en un archivo (zip, gzip u otros) sea incorrecto? ¿Hay algún software popular que produzca tales archivos rotos?

    
pregunta Tarka 03.02.2017 - 19:15
fuente

1 respuesta

1

El tamaño sin comprimir de cada archivo se almacena en los metadatos del archivo por la única razón de permitir que una aplicación sepa cosas como la relación de compresión. No está destinado a ser autoritario de ninguna manera. No hay usos legítimos en los que pueda pensar que el tamaño de archivo no comprimido informado difiera del tamaño de archivo real no comprimido.

Lo que estás describiendo es una bomba zip, también llamada bomba de descompresión. No funcionan mintiendo sobre el tamaño del archivo sin comprimir, sino comprimiendo muchos archivos uno dentro del otro. Un solo archivo con un gigabyte de ceros se comprimirá bastante pequeño. Duplicar un archivo muchas veces y luego comprimirlos juntos no resultará en un crecimiento significativo en el archivo final debido a la alta redundancia. Una bomba zip de 20 bytes que se extrae a un terabyte se puede duplicar cientos de veces, luego se archiva y se comprime, lo que resulta en una bomba zip de 25 bytes. Este proceso se puede repetir muchas veces hasta que el tamaño total hace que no sea práctico extraerlo. Esta era una técnica común en el pasado utilizada por el malware, ya que los analizadores de malware intentaban mirar ciegamente en los archivos. Cuando el archivo contenía una bomba zip, se quedaban sin memoria y se colapsaban, se colgaban o se daban por vencidos y se saltaban y no encontraban la carga maliciosa oculta en algún lugar del interior. Hoy en día, los analizadores de malware a menudo marcarán las presuntas bombas zip para permitir que el usuario final tome las medidas adecuadas.

Una forma fácil de mitigar estos ataques es imponer un límite a la cantidad de niveles que un descompresor irá al extraer un archivo comprimido. Intentar verificar que la coincidencia de tamaño sin comprimir notificada y real sea inútil ya que las bombas zip no son deshonestas en cuanto a su tamaño. La confusión se debe al hecho de que solo se registra el tamaño de ese archivo one . No hay forma de que un archivo zip sepa que los 100 archivos que contiene son también zip bombas.

    
respondido por el forest 19.12.2017 - 09:50
fuente

Lea otras preguntas en las etiquetas