Existe alguma maneira de detectar um ZipBomb de entrada?

2

Estou criando um aplicativo ASP.NET implantado no IIS e estou trabalhando ativamente para seguir as etapas necessárias para ativar o suporte para Content-Encoding: gzip

Não há planos atuais para o servidor que estou trabalhando para ser implantado na web pública, mas gostaria de pelo menos investigar opções para a mitigação de ataques de ZipBomb em meu servidor. Se meu cliente tomar a decisão de disponibilizar seu aplicativo para seus usuários através de canais públicos, eu gostaria de ter meus patos em linha.

Se eu conseguisse descobrir como fazer com que os corpos do GZ POST viessem através do IIS (item ativo em SO relacionado a isso), quais seriam minhas opções para detectar o tamanho do conteúdo descompactado sem descompactar o arquivo?

Como ilustração - se alguém POSTAR 42 para o meu servidor, descomprimir o conteúdo detonaria a bomba. Existe alguma opção para detectar que "este" 42kb representa 4,5PB de dados e rejeita-lo?

  • Como é que um programaticamente detecta esse conteúdo comprimido é colocado em camadas sem detonar a bomba e sem transmitir o conteúdo para um buffer de tamanho fixo?

    (Ou seja: existe algum utilitário, serviço ou metodologia que possa ser aplicado geralmente para interrogar o conteúdo de um arquivo zip sem realmente abri-lo?)

por K. Alan Bates 07.06.2017 / 20:51

2 respostas

1

O formato ZIP especifica o tamanho do arquivo compactado e descompactado . Analisando esses cabeçalhos, você deve conseguir extrair as informações necessárias.

Dê uma olhada aqui para obter mais informações sobre cabeçalhos ZIP.

    
por 07.06.2017 / 21:54
0

Além da detecção fornecida em outras respostas, você pode atenuar os impactos forçando a descompactação em uma partição específica que não é crítica para a operação do seu servidor (ou seja, não a partição /, não a / tmp, etc).

Você poderia até mesmo fazer isto dinamicamente, por exemplo: criar (em outra partição) um arquivo de 2gb, formatá-lo (mkfs, etc) e montá-lo no ponto de montagem apropriado (como: um subdiretório específico sob o usuário homedir?) e ter a descompactação (incluindo quaisquer arquivos tmp) no novo diretório montado. em seguida, mova os arquivos assim que você for compactado, desmonte essa partição e "recicle" o arquivo de 2 gb.

Existem várias maneiras de mitigar os impactos e garantir que o zipbomb não cresça muito (ele não conseguirá ultrapassar o tamanho da partição)

    
por 08.06.2017 / 01:16