Falha crítica no Rails permite que invasores gravem arquivos no servidor por meio de uploads de imagens manipuladas com ImageMagick
6 de Novembro de 2026

Uma falha crítica no Ruby on Rails pode permitir que um invasor sem autenticação grave arquivos arbitrários no servidor de um aplicativo ao enviar um arquivo manipulado, caso o aplicativo processe imagens com o ImageMagick. O projeto Rails divulgou a vulnerabilidade em um comunicado de segurança e corrigiu o problema 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. Alguns aplicativos usam o serviço Disk do Active Storage para armazenar os arquivos enviados no disco do servidor. Nesses casos, um invasor também pode ler qualquer arquivo que o aplicativo tenha permissão para acessar.

Entre esses arquivos geralmente estão o `secret_key_base` do aplicativo e credenciais de outros sistemas, segundo o Rails. A leitura desses dados pode, por sua vez, possibilitar a execução remota de código ou a movimentação lateral para esses sistemas.

O Rails atribuiu à falha a pontuação 9,8 de 10 na escala CVSS. Ela é identificada como GHSA-f3w6-w445-fwh9 e ainda não tem um identificador CVE.

O ImageMagick seleciona um handler de formato, chamado de coder, com base no conteúdo do arquivo. Alguns coders operam sobre outros arquivos indicados dentro da imagem, e não sobre a própria imagem. O Active Storage não impõe restrições aos coders que podem ser usados no processamento de um arquivo enviado. Assim, o único limite era a política do próprio ImageMagick no servidor.

O analyzer de imagens do ImageMagick no Active Storage é executado quando um arquivo é anexado. Portanto, basta anexar o arquivo enviado para acionar a falha. O aplicativo não precisa gerar uma versão transformada da imagem, criar uma prévia ou chamar a função `analyze`.

De acordo com a alteração que corrigiu a falha, um arquivo SVG enviado ao aplicativo chegava ao coder MSL do ImageMagick por meio desse analyzer. O MSL é um coder de scripts que lê e grava arquivos indicados pelo script.

O Rails informou que recebeu o relato de uma cadeia de ataque, mas afirmou que “não presume que seja a única existente”. O comunicado não informa se a falha já foi explorada.

A vulnerabilidade foi relatada por RyotaK, pesquisador da GMO Flatt Security, por meio do HackerOne.

Quais aplicativos Rails são afetados

Um aplicativo só está vulnerável se atender a estas três condições:

- Usar o ImageMagick para processar imagens no Active Storage. Essa configuração é definida por `config.active_storage.variant_processor = :mini_magick` e é o padrão em aplicativos que usam `load_defaults` 6.1 ou anterior.
- A política de segurança do ImageMagick não bloquear previamente os coders envolvidos. Segundo o Rails, as políticas distribuídas com Debian e Ubuntu não os bloqueiam.
- Aceitar arquivos enviados por usuários não confiáveis.

Para verificar a primeira condição, confira o valor de `config.active_storage.variant_processor`. Se a opçã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. Essa configuração determina qual biblioteca analisa os arquivos enviados, e não apenas qual delas gera versões transformadas.

Todas as versões do Active Storage anteriores à 8.0.5.2 são afetadas, assim como as versões 8.1 anteriores à 8.1.4.1. As linhas de versões 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 aplicativos que usam libvips em vez do ImageMagick. Aplicativos com ImageMagick não estavam expostos àquele caminho de ataque, mas podem ser afetados por esta vulnerabilidade.

As mesmas versões também corrigem uma segunda falha no Active Storage, identificada como GHSA-v924-7rp8-4mxh. O Rails a classifica como de alta gravidade, com pontuação CVSS de 8,8. O Active Storage repassava arquivos enviados ao ImageMagick e ao FFmpeg usando nomes temporários que preservavam a extensão original.

Essas ferramentas podem escolher um decoder com base na extensão quando o conteúdo do arquivo não indica seu formato. Assim, um invasor que escolhesse o nome do arquivo e declarasse seu tipo de conteúdo também poderia escolher o decoder usado para processá-lo.

O que fazer

O Rails recomenda fortemente atualizar o sistema o quanto antes. As duas versões corrigem, ao todo, 21 falhas de segurança.

As versões corrigidas incluem uma política de segurança para o ImageMagick. O MiniMagick é a biblioteca Ruby usada pelo Active Storage para chamar o ImageMagick. Na configuração padrão, todos os comandos do ImageMagick executados por ela aplicam essa política, não apenas os chamados pelo Active Storage.

A política bloqueia o coder MSL; os coders que leem ou excluem arquivos além da imagem; os coders que buscam referências locais ou remotas, ou as exibem na tela; todos os coders baseados no Ghostscript, além do delegado `gs`; e a indireção por `@filename`.

- Atualize para o Rails 8.1.4.1 ou 8.0.5.2. Aplicativos que usam `:mini_magick` também precisam do MiniMagick 5.1 ou posterior. Sem isso, ocorrerá um erro durante a inicialização. De acordo com a política de manutenção do Rails, a versão 8.0 receberá apenas correções de segurança até 7 de novembro de 2026.
- Confirme que o aplicativo carrega a nova política, conforme descrito no guia do Active Storage, executando `bin/rails runner 'puts MiniMagick.identify { |i| i.list "policy" }'`.
- Verifique se a política distribuída com o Rails se aplica ao aplicativo. Isso não ocorre se ele substituir `MiniMagick.cli_env` após a inicialização, limpar o ambiente com `MiniMagick.cli_prefix` ou instalar uma implementação própria de `MiniMagick::Shell`. Nesses casos, as regras devem ser adicionadas à política de sistema do ImageMagick.
- Aplicativos que usam GraphicsMagick não recebem proteção da política incluída no Rails, pois o GraphicsMagick não lê as políticas do ImageMagick.
- Confira também a política do ImageMagick no servidor. A política incluída no Rails é adicionada à existente, não a substitui. Uma regra no servidor que permita um coder, inclusive uma regra curinga como `pattern="*"`, prevalece sobre o bloqueio definido pela política do Rails.
- Se o aplicativo processar arquivos PDF ou PostScript com o ImageMagick, permita novamente o delegado `gs` e os coders que ele utiliza no arquivo `policy.xml` do servidor.
- Se ainda não for possível atualizar, copie as regras da política incluída no Rails, em `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 patch para as versões 8.1 e 8.0.
- Aplicativos em linhas de versões anteriores à 8.0 podem aplicar essa medida alternativa ou atualizar para a versão 8.0 ou posterior.
- As medidas alternativas do Rails para a segunda falha alteram apenas a forma como o FFmpeg é usado. Nenhuma delas protege contra a vulnerabilidade no ImageMagick.
- Se o aplicativo armazena anexos com o serviço Disk, altere o `secret_key_base` e todos os outros segredos que o processo do aplicativo pode acessar. Isso inclui a chave mestra, todo o conteúdo de `config/credentials.yml.enc`, credenciais de armazenamento e de banco de dados, além de tokens de terceiros. Não continue usando nenhum segredo que possa ter sido exposto.

O comunicado não explica como verificar se um aplicativo já foi alvo de um ataque.

Publicidade

Proteja sua empresa contra hackers através de um Pentest

Tenha acesso aos melhores hackers éticos do mercado através de um serviço personalizado, especializado e adaptado para o seu negócio. Guardsi: qualidade, confiança e especialidade em segurança ofensiva de quem já protegeu centenas de empresas. Saiba mais...