CVE-2016-3715
Prioriza la corrección. Ella está bajo explotación confirmada por CISA y tiene prueba de concepto pública.
Apply updates per vendor instructions.
Resumen
CVE-2016-3715 é parte do conjunto de falhas conhecido como 'ImageTragick', divulgado em maio de 2016. O coder EPHEMERAL do ImageMagick lê um arquivo referenciado no pseudo-protocolo 'ephemeral:' e o apaga do disco após o uso; se uma aplicação processa imagens de origem não confiável com ImageMagick, um atacante pode embutir esse pseudo-protocolo num arquivo disfarçado de imagem e forçar a exclusão de qualquer arquivo que o processo tenha permissão de remover. O CVSS 5.5 (AV:L) reflete que a ação de exclusão ocorre no filesystem local do host que processa a imagem, mas o vetor de entrega é tipicamente remoto (upload de imagem por usuário externo).
Detalle técnico
ImageMagick trata 'coders' e 'pseudo-protocolos' como formas alternativas de indicar a origem/destino de uma imagem dentro de linguagens de marcação que ele interpreta nativamente, como MVG (Magick Vector Graphics) e SVG. O coder EPHEMERAL implementa um protocolo que lê um arquivo do disco e, em seguida, deleta esse arquivo — comportamento pensado originalmente para arquivos temporários internos, mas exposto sem restrição a qualquer entrada controlada pelo usuário.
A falha (CWE-284, controle de acesso inadequado, segundo classificação da CISA; also caracterizável como CWE-73, controle externo de nome/caminho de arquivo) existe porque o parser MVG/SVG aceita a string 'ephemeral:/caminho/arquivo' como valor de atributo de imagem sem validar se o caminho está dentro de um diretório permitido ou se o chamador tem intenção de deletar algo. O atacante controla integralmente o caminho passado ao pseudo-protocolo.
Um agravante estrutural do ImageTragick como um todo: o ImageMagick identifica o formato do arquivo pelo conteúdo (assinatura interna), não pela extensão. Isso significa que um arquivo .mvg ou .svg malicioso renomeado para .jpg ou .png ainda é interpretado como MVG/SVG pelo 'identify' e pelo 'convert', contornando qualquer filtro de aplicação baseado em extensão ou content-type declarado no upload.
A descrição oficial fala em 'remote attackers via crafted image' porque o vetor de entrada é uma imagem enviada remotamente (upload), mas a operação de exclusão em si é local ao processo que roda o ImageMagick — daí o AV:L no vetor CVSS.
Cómo se explota
O pré-requisito central é que alguma aplicação (backend web, serviço de conversão de imagens, pipeline de processamento em lote) invoque o ImageMagick — via binário 'convert'/'identify' ou via biblioteca (MagickWand/MagickCore) — sobre um arquivo cujo conteúdo o atacante controla, sem restringir os coders habilitados em policy.xml. Não é necessária autenticação além da que a própria aplicação exigir para fazer upload/processar imagens; a interação do usuário (UI:R) é justamente o ato de a vítima/servidor processar o arquivo malicioso.
A exploração documentada (Nikolay Ermishkin, Mail.Ru Security Team, divulgada via oss-security em maio/2016 junto com as demais CVEs do ImageTragick) consiste em um arquivo MVG ou SVG contendo uma referência de imagem ao pseudo-protocolo 'ephemeral:' apontando para um caminho de arquivo arbitrário no sistema. Ao processar esse arquivo, o ImageMagick lê e depois remove o arquivo alvo. Como o formato é detectado pelo conteúdo, o arquivo pode ser disfarçado com extensão de imagem comum, contornando validações client-side ou de extensão.
O impacto prático é negação de serviço/sabotagem por deleção seletiva de arquivos: dependendo dos privilégios do processo que executa o ImageMagick, um atacante pode apagar arquivos de configuração, uploads de outros usuários, ou qualquer caminho acessível — sem executar código nem ler conteúdo (isso é escopo de outras CVEs do mesmo lote, como 3714, 3716 e 3717). A vulnerabilidade está no catálogo KEV da CISA desde novembro/2021, confirmando exploração ativa observada, embora a CISA não classifique uso em campanhas de ransomware.
Versiones
Cómo protegerse
A correção oficial do fornecedor está em ImageMagick 6.9.3-10 (ramo 6.x) e 7.0.1-1 (ramo 7.x). Pesquisadores que reportaram a falha (Mail.Ru Security Team) observaram que o primeiro patch lançado pelo projeto para as falhas relacionadas do ImageTragick (6.9.3-9) estava incompleto, então atualizar exatamente para essas versões corrigidas — não apenas para a primeira versão pós-disclosure — é necessário.
O controle compensatório real quando a atualização não é imediata é editar /etc/ImageMagick*/policy.xml para desabilitar os coders/pseudo-protocolos de risco (EPHEMERAL, MSL, MVG, LABEL, URL, HTTP, HTTPS, FTP, TEXT), como o próprio Red Hat aplicou via update de policy.xml no RHSA-2016:0726. Isso neutraliza a classe inteira de vulnerabilidades do ImageTragick, não só esta CVE específica, com custo de perder a capacidade de processar esses formatos legitimamente se a aplicação depender deles.
O que não funciona: filtrar por extensão de arquivo ou por content-type declarado no upload. O ImageMagick determina o formato pelo conteúdo/assinatura interna do arquivo, então renomear ou disfarçar a extensão não impede a interpretação como MVG/SVG maliciosos. Validação de magic bytes reais do arquivo (verificando se o conteúdo de fato corresponde a um formato de imagem raster esperado, rejeitando MVG/SVG quando não solicitados) é mais eficaz que checagem de extensão, mas isolar/desabilitar os coders via policy.xml é o controle recomendado pelos próprios fornecedores de distribuição.
Cómo detectar
Não há assinatura de rede confiável, já que a exploração ocorre no processamento local do arquivo pelo ImageMagick, não em tráfego de rede distinguível por si só. O sinal mais direto é auditar o conteúdo de arquivos enviados como imagem: presença das strings 'ephemeral:', 'msl:', 'label:@' ou marcação MVG ('push graphic-context', 'viewbox', 'image over') dentro de arquivos com extensão de imagem raster (.jpg, .png, .gif) indica tentativa de exploração do ImageTragick.
Complementarmente, monitorar via auditd/fanotify exclusões de arquivo realizadas pelo processo 'convert'/'identify' (ou pela biblioteca ImageMagick embutida em uma aplicação) fora do diretório temporário esperado é um indicador forte de exploração bem-sucedida ou tentada.