Como mitigar vulnerabilidades do ImageMagick no Node.js
6 de maio de 2016
0 minutos de leituraVárias vulnerabilidades graves e exploradas com facilidade no ImageMagick foram divulgadas no início desta semana e já estão sendo exploradas em ataques reais. Como ainda não há uma correção oficial, criamos um pacote chamado imagemagick-safe que desativa os recursos vulneráveis e protege contra as explorações conhecidas.
Resumo
O ImageMagick é uma biblioteca e um binário muito populares para manipulação de imagens. Entre outros usos, ele costuma ser usado para processar conteúdo gerado por usuários, como imagens de avatar e fotos de produtos, ou para exibir imagens em canais sociais.
No início desta semana, várias vulnerabilidades graves e fáceis de explorar no ImageMagick foram divulgadas. Ainda não há uma correção oficial, mas é possível mitigar o problema desativando determinados recursos.
No Node.js, o ImageMagick é usado principalmente por meio do pacote npm imagemagick. Esse pacote não é atualizado há mais de 2 anos e, por isso, provavelmente não ajudará a resolver o problema.
Para ajudar a proteger quem usa o ImageMagick no Node.js, lançamos um pacote npm específico chamado imagemagick-safe, que desativa os recursos vulneráveis. Também enviamos um pull request com essa alteração para o repositório do imagemagick no GitHub, mas, como o repositório está inativo, achamos improvável que a alteração seja incorporada.
ImageTragick: contexto
As vulnerabilidades divulgadas merecem atenção especial por três motivos:
Algumas são extremamente graves, permitindo que invasores executem comandos no servidor, exponham arquivos do servidor e muito mais.
As vulnerabilidades são fáceis de explorar: basta um arquivo de imagem criado para esse fim e uma única requisição HTTP.
Ainda não há uma correção oficial disponível.
Há registros de exploração dessas vulnerabilidades em ataques reais.
Todo o incidente é chamado de ImageTragick. Você encontra mais detalhes sobre as vulnerabilidades no site dedicado, imagetragick.com.
Causa e mitigação
Com base nas informações disponíveis até agora, todas as vulnerabilidades estão relacionadas ao processamento de tipos específicos de arquivos de imagem e palavras-chave, como MVG, URL e HTTPS. Esses tipos de arquivo permitem ações internas (por exemplo, incluir outra imagem), mas o processamento dessas ações não é sanitizado adequadamente, o que possibilita a execução remota de comandos. Veja um exemplo de exploração, copiado do site oficial sobre as vulnerabilidades:
Exemplo de exploração.svg
Exemplo de execução
Para desativar o suporte a esses formatos e palavras-chave, edite o arquivo de configuração (opcional) policy.xml do ImageMagick e confira se ele inclui o conteúdo abaixo. Isso remove algumas funcionalidades, mas também corrige as vulnerabilidades. A edição da política não garante a proteção contra todas as explorações possíveis, mas os pesquisadores responsáveis pelas vulnerabilidades afirmam que ela bloqueia todas as explorações conhecidas até o momento.
Pacote npm imagemagick-safe
Como o pacote principal imagemagick não está mais ativo, criamos um novo pacote chamado imagemagick-safe.
Esse pacote força o uso da política mencionada acima, desativando alguns recursos e eliminando as vulnerabilidades. Recomendamos usá-lo até que novos binários do ImageMagick sejam lançados e você confirme que seus sistemas foram atualizados.
Você também pode usar o ImageMagick pelo pacote gm. Estamos avaliando o envio de um pull request para ele também.
Se encontrar algum problema ou quiser compartilhar sua opinião sobre o pacote, fale conosco pelo e-mail support@snyk.io.
Comece a participar de desafios de Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.