2 puntos por GN⁺ 2025-04-30 | 1 comentarios | Compartir por WhatsApp
  • La mayor parte del tráfico web proviene de bots, y algunos de ellos se usan con fines maliciosos
  • Una Zip Bomb es un archivo comprimido pequeño, pero al descomprimirse puede expandirse a un archivo muy grande y sobrecargar el servidor
  • La tecnología de compresión se usa en la web para transmitir datos de forma eficiente, y los bots también la aprovechan
  • Cuando se detectan bots maliciosos, el servidor entrega un archivo comprimido con gzip para neutralizarlos
  • Una Zip Bomb no es una solución perfecta, pero es eficaz para bloquear bots simples

Proteger servidores usando Zip Bomb

  • La mayor parte del tráfico web proviene de bots, y algunos de ellos se usan con fines maliciosos
  • Los bots maliciosos pueden encontrar vulnerabilidades del servidor e insertar scripts maliciosos para convertirlo en una botnet
  • Una Zip Bomb es un archivo comprimido pequeño, pero al descomprimirse puede expandirse a un archivo muy grande y sobrecargar el servidor

Uso de tecnología de compresión

  • gzip es una tecnología de compresión usada en la web para transmitir datos de forma eficiente
  • Tanto los navegadores web como los bots admiten compresión gzip, y con ello aprovechan al máximo el ancho de banda
  • Cuando se detectan bots maliciosos, el servidor entrega un archivo comprimido con gzip para neutralizarlos

Cómo crear una Zip Bomb

  • Usando el comando dd, se generan 10 GB de datos, que luego se comprimen con gzip para crear un archivo de 10 MB
  • Cuando el servidor detecta solicitudes maliciosas, entrega un archivo Zip Bomb de 10 MB para neutralizar al bot

Limitaciones de la Zip Bomb

  • Una Zip Bomb no es una solución perfecta, y algunos bots pueden detectarla y evadirla
  • Sin embargo, es eficaz para bloquear bots simples y es una herramienta útil para proteger servidores

Artículos relacionados

  • Cómo manejar 1.3 millones de solicitudes web
  • Cambiar la firma del servidor Apache
  • Cumplir con Do Not Track en Google Analytics

1 comentarios

 
GN⁺ 2025-04-30
Opinión de Hacker News
  • Recuerdo que de niño, como broma, hice ln -s /dev/zero index.html en mi sitio web. A los navegadores de esa época no les gustaba, y a veces el sistema se colgaba o se caía
    • Después, los navegadores empezaron a verificar el contenido real y dejaron de hacer este tipo de solicitudes
  • Hoy en día casi todos los navegadores soportan zstd y brotli, así que estas bombas podrían ser más efectivas
    • En un comentario anterior se mostró una tasa de compresión de 1.2M:1, y zstd ofrece un rendimiento aún mejor
  • Puede que los bots no soporten los estándares modernos de compresión
    • Esto podría ser una buena forma de bloquear bots: como todos los navegadores modernos soportan zstd, si se obliga a usarlo para agentes de navegador que no estén en la lista blanca, se puede confundir a los scrapers
  • En un trabajo anterior, unos bots encontraron una vulnerabilidad de WordPress e inyectaron scripts maliciosos en el servidor
    • Es curioso saber que no fui la única persona a la que, una hora después de configurar WordPress, ya le habían desplegado un shell de PHP en el servidor
  • Las zip bombs son divertidas. Una vez encontré una vulnerabilidad en un producto de seguridad que no inspeccionaba correctamente archivos zip por encima de cierto tamaño
    • Por eso, si se metía una zip bomb dentro de un documento XML de Office, el producto la dejaba pasar incluso si contenía malware fácilmente identificable
  • Descubrí cómo hacer que fallaran clientes SSH que intentaban adivinar la contraseña de root usando ssh
    • Como resultado, unos script kiddies terminaron lanzando un ataque DDoS contra mi servidor
    • Después cambié a un método para identificar a los "malos actores" y bloquear sus IP con reglas de firewall
    • Con IPv6 esto se está volviendo cada vez más difícil
  • Quienes crean páginas web pueden hacer una zip bomb con enlaces invisibles para humanos (texto blanco sobre fondo blanco, sin resalte en anchors al pasar el cursor o hacer clic)
    • Los bots la descargan para revisarla (igual que los crawlers y los scrapers de IA)
  • Esto es una bomba gzip (funciona como una página web comprimida normal), no un archivo zip clásico de los que se usan para bloquear virus
  • Implementé esto en lugar del típico script honeypot
    • No funciona muy bien
    • En los logs del servidor web se puede ver que los bots no descargan completos los 10 megabytes de veneno
    • Se detienen en distintas longitudes. Hasta ahora nunca he visto que se lleven más de unos 1.5Mb
    • ¿O tal vez sí está funcionando? ¿Estarán decodificando el stream en tiempo real y colapsando? Por ejemplo, ¿podría pasar que quede registrado que leyeron 1.5Mb, pero en tiempo real eso se decodifique a 1.5Gb en RAM y se caigan?
    • No hay forma de saberlo
  • Hace poco hubo un incidente en el que la infraestructura anticensura de Tor Project se alojaba en un sitio con una publicación de blog sobre zip bombs
    • Google rastreó uno de los archivos zip y lo añadió a una lista de dominios maliciosos, y una parte importante de la herramienta Snowflake de Tor quedó afectada
    • Tomó varias semanas resolver el problema
  • En una de mis aplicaciones, para proteger las subidas, creé una partición temporal de disco de tamaño fijo de 10 MB para limitar el impacto si se sube un archivo demasiado grande
  • Hago algo parecido con un script que he ido armando durante años
    • Cada año reviso los logs de 404 y agrego a una blacklist las rutas de vulnerabilidades más populares
    • Si alguien solicita esa URL 3 veces, agrego ese host a una lista gris donde solo se permiten rutas legítimas restringidas