Segurança da informação

Falha crítica no Rails permite que atacantes gravem arquivos no servidor por meio de uploads manipulados no ImageMagick

Uma falha crítica no Ruby on Rails pode permitir que um atacante não autenticado grave arquivos arbitrários no servidor de uma aplicação por meio de um arquivo manipulado, quando o app processa uploads com o ImageMagick. O projeto Rails corrigiu o problema nas versões 8.1.4.1 e 8.0.5.2.


Swati Khandelwal Quarta - 04 de Novembro de 2026 às 19:01
The Hacker News

Uma falha crítica no Ruby on Rails pode permitir que um atacante não autenticado grave arquivos arbitrários no servidor de uma aplicação, por meio de um arquivo manipulado, caso o app processe uploads usando o ImageMagick. O projeto Rails divulgou a falha em um aviso de segurança e a corrigiu nas versões 8.1.4.1 e 8.0.5.2.

A falha está no Active Storage, componente do Rails responsável pelo envio de arquivos. Algumas aplicações armazenam os arquivos enviados com o serviço Disk do Active Storage, que os salva no disco do servidor. Nessas aplicações, um atacante também poderia ler qualquer arquivo que o app consiga acessar.

De acordo com o Rails, esses arquivos normalmente incluem o secret_key_base da aplicação e as credenciais de acesso a outros sistemas. A leitura desses dados pode, por sua vez, permitir a execução remota de código ou a movimentação lateral para outros sistemas.

O Rails classifica a falha com nota 9,8 em 10 na escala CVSS (Sistema de Pontuação de Vulnerabilidades Comuns). Ela é acompanhada pelo identificador GHSA-f3w6-w445-fwh9 e ainda não possui um identificador CVE (Vulnerabilidades e Exposições Comuns).

O ImageMagick escolhe um manipulador de formato, que chama de coder, com base no conteúdo do arquivo. Alguns coders atuam sobre outros arquivos citados dentro da imagem, e não sobre a própria imagem. O Active Storage não impõe limites aos coders que um upload pode usar, de modo que a única restrição era a política de segurança do ImageMagick instalada no servidor.

O analisador do ImageMagick no Active Storage é executado quando um arquivo é anexado. Basta anexar o upload para alcançar a falha. A aplicação não precisa gerar uma variante (uma cópia transformada da imagem), uma prévia ou chamar a análise.

Segundo o commit que corrigiu a falha, um arquivo SVG (formato de imagem vetorial) enviado chegou ao coder MSL do ImageMagick por meio desse analisador. O MSL (Linguagem de Script do ImageMagick) é um coder de script que lê e grava arquivos indicados no próprio script.

O Rails afirmou que lhe foi reportada uma cadeia de ataque, mas que não “presume que seja a única existente”. O aviso não diz se a falha já foi explorada.

A falha foi reportada pela plataforma HackerOne por RyotaK, pesquisador da GMO Flatt Security.

Quais aplicações Rails são afetadas

Uma aplicação só é afetada se as três condições a seguir forem verdadeiras:

  • Ela usa o ImageMagick para processar imagens do Active Storage. Isso ocorre com a configuração config.active_storage.variant_processor = :mini_magick, que é o padrão para aplicações com load_defaults 6.1 ou anterior.
  • A política de segurança do ImageMagick não bloqueia os coders envolvidos. O Rails diz que as políticas distribuídas pelo Debian e pelo Ubuntu não fazem esse bloqueio.
  • Ela aceita uploads de usuários não confiáveis.

Para verificar a primeira condição, observe config.active_storage.variant_processor. Se a configuração não estiver definida, o padrão depende de load_defaults: :mini_magick antes da versão 7.0 e :vips a partir da 7.0. A mesma configuração define qual biblioteca analisa os uploads, e não apenas qual delas gera as variantes.

Todas as versões do Active Storage anteriores à 8.0.5.2 são afetadas, assim como as versões da série 8.1 anteriores à 8.1.4.1. As séries anteriores à 8.0 não têm mais suporte, e o Rails não lançará correções para elas.

Em julho, o Rails corrigiu outra falha crítica no Active Storage, a CVE-2026-66066, que afetava aplicações que usam o libvips em vez do ImageMagick. Aplicações que usam o ImageMagick não estavam expostas ao caminho de ataque daquela falha, mas podem ser afetadas por esta.

As mesmas versões também corrigem uma segunda falha no Active Storage, a GHSA-v924-7rp8-4mxh, que o Rails classifica como alta, com pontuação CVSS de 8,8. O Active Storage enviava os uploads ao ImageMagick e ao FFmpeg (ferramenta de processamento de áudio e vídeo) com nomes temporários que mantinham a extensão do arquivo enviado.

Essas ferramentas podem escolher um decodificador a partir da extensão quando o conteúdo do arquivo não revela seu formato. Assim, um atacante que escolhesse o nome do arquivo enviado e declarasse seu tipo de conteúdo poderia definir o decodificador que o processaria.

O que fazer

O Rails recomenda fortemente atualizar o quanto antes. As duas versões corrigem 21 problemas de segurança no total.

As versões corrigidas incluem uma política de segurança para o ImageMagick. O MiniMagick é a biblioteca Ruby que o Active Storage usa para chamar o ImageMagick. Em sua configuração padrão, todo comando do ImageMagick executado pelo MiniMagick aplica a política, e não apenas os comandos vindos do Active Storage.

A política bloqueia o coder MSL; os coders que leem ou excluem arquivos diferentes da imagem; os coders que buscam referências remotas ou locais, ou que as exibem em tela; todos os coders baseados no Ghostscript, junto com o delegado gs; e o redirecionamento por @nome_do_arquivo.

  • Atualize para o Rails 8.1.4.1 ou 8.0.5.2. Aplicações com :mini_magick também precisam do mini_magick 5.1 ou posterior, ou apresentarão erro na inicialização. O Rails 8.0 receberá correções de segurança somente até 7 de novembro de 2026, de acordo com sua política de manutenção.
  • Confirme que a aplicação carrega a nova política, conforme descrito no guia do Active Storage, executando o comando bin/rails runner 'puts MiniMagick.identify { |i| i.list "policy" }'.
  • Verifique se a política distribuída chega de fato à aplicação. Ela não se aplica a apps que substituem MiniMagick.cli_env após a inicialização, que limpam o ambiente com MiniMagick.cli_prefix ou que instalam um MiniMagick::Shell próprio. Esses apps devem incluir as regras na política de sistema do ImageMagick.
  • Aplicações que usam o GraphicsMagick não recebem proteção da política distribuída, porque o GraphicsMagick não lê as políticas do ImageMagick.
  • Verifique a política de segurança do ImageMagick instalada no servidor. A política distribuída complementa a do servidor, e não a substitui. Uma regra existente que permita um coder, inclusive com curinga como pattern="*", prevalece sobre o bloqueio da política distribuída para esse coder.
  • Se a aplicação renderiza arquivos PDF ou PostScript por meio do ImageMagick, reative o delegado gs e os coders que ele usa no policy.xml do servidor.
  • Se ainda não for possível atualizar, copie as regras da política distribuída, o arquivo activestorage/lib/active_storage/image_magick/policy.xml, para a política de sistema do ImageMagick, como /etc/ImageMagick-7/policy.xml. No mínimo, bloqueie o coder MSL, os coders do Ghostscript e o delegado gs. O Rails também publicou a correção como patches para a versão 8.1 e para a versão 8.0.
  • Aplicações de séries anteriores à 8.0 podem usar essa solução alternativa ou atualizar para a 8.0 ou posterior.
  • As soluções alternativas do Rails para a segunda falha alteram apenas a forma como o FFmpeg é usado. Nenhuma delas cobre o ImageMagick.
  • Se a aplicação armazena anexos com o serviço Disk, troque o secret_key_base e todos os outros segredos que o processo da aplicação consegue ler. Isso inclui a chave mestra, tudo o que está em config/credentials.yml.enc, as credenciais de armazenamento e de banco de dados e os tokens de terceiros. Não mantenha nenhum segredo exposto como alternativa de contingência.

O aviso não explica como verificar se uma aplicação já foi alvo de ataques.

Ruby on Rails ImageMagick Vulnerabilidade