¿Hay alguna forma de detectar un ZipBomb entrante?

Estoy construyendo una aplicación ASP.NET implementada en IIS y estoy trabajando activamente en seguir los pasos necesarios para habilitar la compatibilidad con Content-Encoding: gzip

No hay planes actuales para el server que estoy trabajando para ser desplegado en la web pública, pero me gustaría al less investigar las opciones de mitigación de ataques ZipBomb en mi server. Si mi cliente toma la decisión de poner su aplicación a disposition de sus usuarios a través de canales públicos, me gustaría tener ya mis patos en una fila.

Si fuera a ser capaz de averiguar cómo get GZ POST organismos a venir a través de IIS (elemento activo en SO relacionados con eso) ¿cuáles serían mis opciones para detectar el tamaño del contenido sin comprimir sin descomprimir el file?

Como una ilustración – si alguien POSTED 42 a mi server, descomprimir el contenido detonaría la bomba. ¿Hay alguna opción para detectar que "esto" 42kb representa 4.5PB de datos y rechazarlo?

  • ¿Cómo detecta un progtwigticamente que el contenido comprimido se acumula sin detonar la bomba y sin transmitir el contenido a un buffer de tamaño fijo?

    (Es decir: ¿hay alguna utilidad, service o metodología que pueda ser aplicada generalmente para interrogar el contenido de un file zip sin abrirlo?)

El formatting ZIP especifica el tamaño de file comprimido y no comprimido . Parsing estos encabezados, usted debe ser capaz de extraer la información necesaria.

Mire aquí para get más información sobre los encabezados ZIP.

Aparte de la detección dada en otras respuestas, podría mitigar inpacts forzando el descompression en una partición específica que no es crítica para el funcionamiento de su server (es decir, no la / partición, no el / tmp, etc.).

Podrías incluso hacer esto dinámicamente, por ejemplo: crear (en otra partición) un file de 2gb, formatearlo (mkfs, etc), y montarlo en el punto de assembly apropiado (como: un subdire específico bajo homedir del usuario?) y tener la descompression (incluyendo cualquier file tmp) se producen en ese directory recién montado. luego mueva los files una vez que haya comprimido, desmonte esa partición y "recicle" el file 2gb.

Hay múltiples forms de mitigar los impactos y asegurar que la zipbomb no crezca demasiado grande (no podrá superar el tamaño de la partición)