2 pontos por GN⁺ 2025-04-30 | 1 comentários | Compartilhar no WhatsApp
  • A maior parte do tráfego da web vem de bots, e parte deles é usada com intenções maliciosas
  • Um Zip Bomb é um pequeno arquivo compactado que, ao ser descompactado, se expande para um arquivo muito grande e pode sobrecarregar o servidor
  • Técnicas de compressão são usadas na web para transmitir dados com eficiência, e os bots também se aproveitam disso
  • Ao detectar bots maliciosos, o servidor fornece um arquivo compactado com gzip para neutralizá-los
  • Zip Bomb não é uma solução perfeita, mas é eficaz para bloquear bots simples

Protegendo servidores com Zip Bomb

  • A maior parte do tráfego da web vem de bots, e parte deles é usada com intenções maliciosas
  • Bots maliciosos podem encontrar vulnerabilidades no servidor e inserir scripts maliciosos, transformando o servidor em uma botnet
  • Um Zip Bomb é um pequeno arquivo compactado que, ao ser descompactado, se expande para um arquivo muito grande e pode sobrecarregar o servidor

Uso de tecnologias de compressão

  • gzip é uma tecnologia de compressão usada na web para transmitir dados com eficiência
  • Tanto navegadores quanto bots oferecem suporte à compressão gzip, aproveitando ao máximo a largura de banda
  • Ao detectar bots maliciosos, o servidor fornece um arquivo compactado com gzip para neutralizá-los

Como criar um Zip Bomb

  • Use o comando dd para gerar 10 GB de dados e depois compactá-los com gzip, criando um arquivo de 10 MB
  • Quando detecta uma requisição maliciosa, o servidor fornece um arquivo Zip Bomb de 10 MB para neutralizar o bot

Limitações do Zip Bomb

  • Zip Bomb não é uma solução perfeita, e alguns bots podem detectá-lo e contorná-lo
  • Ainda assim, ele é eficaz para bloquear bots simples e é uma ferramenta útil para proteger servidores

Artigos relacionados

  • Como processar 1,3 milhão de requisições web
  • Alterando a assinatura do servidor Apache
  • Como respeitar o Do Not Track no Google Analytics

1 comentários

 
GN⁺ 2025-04-30
Comentários do Hacker News
  • Lembro que, quando era criança, por brincadeira coloquei ln -s /dev/zero index.html na minha homepage. Na época, os navegadores não gostavam disso, e o sistema às vezes travava ou caía
    • Depois, os navegadores passaram a verificar o conteúdo real e começaram a interromper esse tipo de requisição
  • Hoje em dia, quase todos os navegadores suportam zstd e brotli, então esse tipo de bomba pode ser ainda mais eficaz
    • Em um comentário antigo, mostraram uma taxa de compressão de 1,2M:1, e o zstd apresenta desempenho ainda melhor
  • Bots podem não suportar padrões modernos de compressão
    • Isso pode ser uma boa forma de bloquear bots: como todos os navegadores modernos suportam zstd, forçar isso para user agents que não estejam na whitelist pode confundir scrapers
  • Em um emprego anterior, bots encontraram uma vulnerabilidade do WordPress e injetaram um script malicioso no servidor
    • É engraçado saber que não fui o único a passar pela experiência de ter um shell PHP implantado no servidor uma hora depois de configurar o WordPress
  • Bombas zip são divertidas. Já encontrei uma vulnerabilidade em um produto de segurança que não inspecionava corretamente arquivos zip acima de um certo tamanho
    • Por causa disso, se você colocasse uma bomba zip dentro de um documento Office XML, o produto deixava passar mesmo que ele contivesse malware facilmente identificável
  • Descobri uma forma de derrubar clientes SSH que tentavam adivinhar a senha de root via ssh
    • No fim, os script kiddies fizeram um ataque DDoS contra meu servidor
    • Passei então a identificar os "maus atores" e bloquear seus IPs com regras de firewall
    • Isso está ficando cada vez mais difícil por causa do IPv6
  • Quem cria páginas web pode montar uma bomba zip com links invisíveis para humanos (texto branco em fundo branco, sem destaque em âncoras de hover/clique)
    • Bots baixam isso para verificar (assim como crawlers e scrapers de IA)
  • Isso é uma bomba gzip (funciona como uma página web compactada normal), não um arquivo zip clássico usado para bloquear vírus
  • Já implantei isso no lugar de um script honeypot comum
    • Não funcionou muito bem
    • Dá para ver nos logs do servidor web que os bots não baixam os 10 megabytes completos do veneno
    • Eles interrompem em vários tamanhos. Até agora, nunca vi nenhum buscar mais de cerca de 1,5Mb
    • Ou será que está funcionando? Será que decodificam o stream em tempo real e travam? Por exemplo, algo registrado como 1,5Mb lidos poderia estar sendo decodificado em tempo real para 1,5Gb na RAM e travando?
    • Não há como saber
  • Não faz muito tempo, houve um caso em que a infraestrutura anticensura do Tor Project estava sendo executada em um site parecido com um post de blog sobre bomba zip
    • O Google rastreou um dos arquivos zip e adicionou o domínio à lista de domínios maliciosos, danificando uma parte crítica da ferramenta Snowflake do Tor
    • Levaram semanas para resolver o problema
  • Em um dos meus aplicativos, para proteger uploads, criei uma partição temporária de disco de tamanho fixo de 10MB para limitar o impacto caso um arquivo grande demais seja enviado
  • Faço algo parecido usando um script que fui montando ao longo de vários anos
    • Todo ano verifico os logs de 404 e adiciono à blacklist os caminhos de vulnerabilidades mais populares
    • Se uma URL dessas for requisitada 3 vezes, adiciono esse host a uma greylist que só permite caminhos legítimos limitados