Skip to main content

Como mitigar vulnerabilidades do ImageMagick no Node.js

Escrito por

6 de maio de 2016

0 minutos de leitura

Vá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:

  1. Algumas são extremamente graves, permitindo que invasores executem comandos no servidor, exponham arquivos do servidor e muito mais.

  2. As vulnerabilidades são fáceis de explorar: basta um arquivo de imagem criado para esse fim e uma única requisição HTTP.

  3. Ainda não há uma correção oficial disponível.

  4. 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

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";> 
<svg width="640px" height="480px" version="1.1" xmlns="http://www.w3.org/2000/svg"; xmlns:xlink= "http://www.w3.org/1999/xlink";> 
<image xlink:href="https://example.com/image.jpg"|ls "-la" 
x="0" y="0" height="640px" width="480px"/>

Exemplo de execução

$ convert exploit.mvg out.png
total 32
drwxr-xr-x 6 user group 204 Apr 29 23:08 .
drwxr-xr-x+ 232 user group 7888 Apr 30 10:37 ..

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.

<policymap>
  <policy domain="coder" rights="none" pattern="EPHEMERAL" />
  <policy domain="coder" rights="none" pattern="URL" />
  <policy domain="coder" rights="none" pattern="HTTPS" />
  <policy domain="coder" rights="none" pattern="MVG" />
  <policy domain="coder" rights="none" pattern="MSL" /> 
  <policy domain="coder" rights="none" pattern="TEXT" />
  <policy domain="coder" rights="none" pattern="SHOW" />
  <policy domain="coder" rights="none" pattern="WIN" />
  <policy domain="coder" rights="none" pattern="PLT" />
</policymap>

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.

Leia mais

blog feature ai lilac
Blog

Transforme seu backlog de vulnerabilidades em pull requests com remediação agentiva

O Evo Remediation Agent está em Open Preview e traz a resolução automatizada de dependências para o Evo Agentic AppSec. Agora, as equipes de AppSec podem executar campanhas contínuas de remediação

illustration hero ai
Blog

PHP corrige duas vulnerabilidades críticas de RCE sem autenticação (CVE-2026-109618, CVE-2026-109619): atualize agora

Duas falhas críticas no ciclo de requisições do PHP podem permitir execução remota de código sem autenticação. Atualize para uma versão corrigida ou instale um backport do fornecedor para versões mais antigas.

AI Background min crop
Blog

A IA está acionando todos os riscos que você aceitou: sete insights do painel de segurança de IA sem filtros

A IA está tornando os ataques mais baratos e rápidos, expondo riscos que as organizações já carregam. Quatro líderes de segurança explicam por que a defesa na velocidade das máquinas e a correção mais rápida são essenciais.