30
Jul 2026
Alerta de Vulnerabilidade - Ruby on Rails
TIPO
Vulnerabilidade
SISTEMAS AFETADOS
Ruby on Rails
ECOSSISTEMA
Outro
Descrição
São afetadas as versões do activestorage anteriores à 7.2.3.2, as versões 8.0 até 8.0.5.0 e as versões 8.1 até 8.1.3.0, quando a aplicação usa o libvips (config.active_storage.variant_processor = :vips, predefinição desde load_defaults 7.0) e aceita carregamento de imagens de utilizadores não fidedignos [1]. As versões 6.x só são afetadas quando o processador vips foi ativado manualmente [1][3]. A correção está disponível nas versões 7.2.3.2, 8.0.5.1 e 8.1.3.1 [1][2].
Impacto
A exploração é remota e não requer autenticação nem interação do utilizador, exigindo apenas que a aplicação use o processador vips e aceite imagens de origem não fidedigna. Ao carregar um ficheiro manipulado e desencadear a geração de uma variante, o atacante invoca um loader inseguro do libvips e lê ficheiros arbitrários do servidor [1].Entre esses ficheiros está o ambiente do processo, que tipicamente contém o secret_key_base, a master key, as credenciais da base de dados e do serviço de armazenamento (S3, GCS ou Azure) e tokens de serviços terceiros. Com estes segredos, o atacante pode escalar para execução de código no servidor e para movimento lateral para os sistemas ligados [1].
Resolução
Medidas adicionais recomendadas:
- Tratar como potencialmente expostos todos os segredos acessíveis ao processo da aplicação e alterá-los, incluindo o secret_key_base, a master key e o conteúdo do config/credentials.yml.enc, as credenciais do serviço de armazenamento e da base de dados, e os tokens de serviços terceiros. O segredo exposto não deve ser mantido como fallback [1];
- Quando não for possível atualizar de imediato e o libvips for 8.13 ou posterior, desativar os loaders inseguros através da variável de ambiente VIPS_BLOCK_UNTRUSTED, ou, com ruby-vips 2.2.1 ou posterior, invocando Vips.block_untrusted(true) num initializer [1];
- Se o libvips for anterior à 8.13 e não for possível atualizar, remover o ruby-vips do Gemfile, nos casos em que só é usado para análise de imagem ou em que a aplicação não usa o Active Storage [1];
- Ter presente que a correção restringe a geração de variantes para formatos como BMP, ICO, PSD, SVG, JPEG XL, JPEG 2000, Netpbm e FITS, o que pode exigir ajustes na configuração variable_content_types [2].
Referências
[1] - https://github.com/rails/rails/security/advisories/GHSA-xr9x-r78c-5hrm[2] - https://discuss.rubyonrails.org/t/cve-2026-66066-possible-arbitrary-file-read-and-remote-code-execution-in-active-storage-variant-processing/91432
[3] - https://ethiack.com/info-hub/research/kindarails2shell-rails-rce-cve-2026-66066
