Introdução ao Ruby on Rails
O Ruby on Rails (Rails) é uma estrutura Web de pilha completa, Modelo-Visão-Controlador (MVC) construída com Ruby. Vem com as "baterias incluídas", oferecendo aos programadores tudo o que precisam: um mapeador relacional de objectos (Active Record), uma camada de pedido/resposta e visualização (Action Pack/Action View), processamento de tarefas em segundo plano, mailers, suporte WebSocket, armazenamento e carregamento de ficheiros (Active Storage) e muito mais.
Desde o seu lançamento inicial em 2004, o Ruby on Rails cresceu e tornou-se numa das estruturas Web mais amplamente adoptadas no mundo. Atualmente, alimenta milhões de websites e aplicações - incluindo plataformas de alto nível como o GitHub, Shopify, Airbnb, Basecamp e Netflix. Com sua forte ênfase na Convenção sobre Configuração, produtividade do desenvolvedor e prototipagem rápida, o Rails se tornou uma estrutura de referência tanto para startups quanto para grandes empresas.
Unidade 515 Pesquisa: Expondo Vulnerabilidades Críticas em Rails
Durante uma investigação independente, Thai Do, membro da equipa da Unidade 515 da OPSWAT, identificou duas vulnerabilidades no Ruby on Rails - uma das quais poderia levar à execução remota de código (RCE). Estas descobertas foram divulgadas de forma responsável à equipa de segurança do Rails, com quem OPSWAT coordenou todo o processo.
Em 13 de agosto de 2025, a equipa do Rails publicou avisos públicos e lançou versões corrigidas que abordavam ambas as vulnerabilidades.
Versões afectadas e versões corrigidas
Componente | Versões afectadas | Versões fixas |
---|---|---|
Armazenamento ativo (CVE-2025-24293) | Rails ≥ 5.2.0 e abaixo da versão fixa | 7.1.5.2, 7.2.2.2, 8.0.2.1 |
Registo de registos activos (CVE-2025-55193) | Rails < 7.1.5.2, < 7.2.2.2, < 8.0.2.1 | 7.1.5.2, 7.2.2.2, 8.0.2.1 |
Problemas de segurança identificados no Rails
CVE-2025-24293 - Métodos de transformação inseguros do Active Storage
Esta vulnerabilidade afecta o Active Storage em versões do Rails ≥ 5.2.0. Ocorre quando são passados métodos de transformação de imagem inseguros para o mini_magick, o que - quando combinado com uma entrada de utilizador não validada - pode levar à execução remota de código (RCE). Embora o Rails note que a falha não é explorável na configuração padrão, as aplicações que expõem as opções de transformação aos utilizadores estão particularmente em risco.
CVE-2025-55193 - Injeção de escape ANSI no registro de gravação ativo
Esta vulnerabilidade afecta o registo Active Record em todas as versões do Rails anteriores a 7.1.5.2, 7.2.2.2 e 8.0.2.1. Os atacantes podem injetar identificadores especialmente criados contendo sequências de escape ANSI nos registos, manipulando potencialmente a forma como as consultas aparecem na saída do terminal e conduzindo a registos enganadores ou corrompidos. Embora a falha não exponha diretamente os dados nem permita a execução de código, pode dificultar a monitorização e os esforços de resposta a incidentes. A equipa de segurança do Rails resolveu o problema nas mesmas versões corrigidas.
Análise técnica do CVE-2025-24293 - Execução remota de código do Active Storage
Visão geral do armazenamento ativo
O Active Storage é a estrutura integrada do Rails para lidar com uploads de arquivos. Ele permite que os desenvolvedores anexem arquivos aos modelos Active Record e os armazenem localmente (para desenvolvimento/teste) ou em serviços de nuvem, como Amazon S3, Google Cloud Storage ou Microsoft Azure. Os Core recursos incluem a execução de transformações de imagem, a geração de visualizações prévias para arquivos que não sejam de imagem, como PDFs e vídeos, e o espelhamento de uploads para vários serviços para redundância ou migração.
Como funcionam as transformações de imagem
As transformações de imagem permitem aos programadores fornecer anexos em dimensões ou formatos específicos. Isto é feito chamando o método variant() num anexo de imagem e passando as operações suportadas.
Quando um cliente solicita um URL variante, o Active Storage executa a transformação a pedido do blob original, armazena o resultado no serviço configurado e devolve um redireccionamento para o ficheiro recém-gerado.
O Rails suporta dois processadores para transformações de imagem: Vips e MiniMagick. O processador em uso pode ser configurado via config.active_storage.variant_processor.
As operações específicas suportadas nas transformações de imagem são determinadas pela gem image_processing e dependem do processador subjacente que está configurado para a aplicação Rails.
Correção incompleta do CVE-2022-21831
No entanto, durante uma análise mais aprofundada do patch e do código-fonte do Rails, Thai DoOPSWAT Unit 515) descobriu um desvio que tornou a correção original incompleta. Este desvio reintroduziu um caminho para os atacantes conseguirem a Execução Remota de Código (RCE), levando à divulgação do CVE-2025-24293.
Causa raiz na Gem image_processing
Quando uma transformação é aplicada, o Rails delega a operação para a gem image_processing, que eventualmente chama ImageProcessing::Processor#call em lib/image_processing/processor.rb
Se o processador de variantes configurado for o MiniMagick, a vulnerabilidade reside em duas funções dentro de lib/image_processing/mini_magick.rb:
-load_image - aceita opções não validadas de **loader.
-save_image - aceita opções não validadas de **saver.
Para load_image, quaisquer pares chave-valor em **loader que não sejam page, geometry e auto_orient são preservados em **options. O mesmo se aplica a save_image, onde as chaves que não sejam allow_splitting permanecem em **options. Essas opções são posteriormente passadas para Utils.apply_options(magick, **options), que as aplica como sinalizadores CLI do MiniMagick (por exemplo, -quality).
Embora o loader e o saver estejam incluídos na lista de permissões padrão e, portanto, sejam considerados seguros, essa confiança é equivocada. Com uma entrada cuidadosamente elaborada, um atacante pode explorar essas opções para contornar as verificações e, por fim, fazer com que o Rails execute comandos arbitrários do sistema na máquina host.
Cenário de exploração em aplicações Rails
Se uma aplicação passar dados não validados do utilizador diretamente para os métodos de transformação, por exemplo:
Um atacante poderia criar entradas maliciosas para manipular as opções do carregador ou do protetor. Isto contornaria a lista de permissões e executaria comandos arbitrários no servidor, resultando em Execução Remota de Código (RCE).
Prova de conceito: Execução remota de código
Nas aplicações Rails com versões vulneráveis (anteriores a 8.0.2.1, 7.2.2.2 e 7.1.5.2), a Unidade 515 da OPSWAT demonstrou com êxito uma cadeia de exploração em que a entrada de transformação não validada resultava na execução de comandos shell.
Este vídeo PoC demonstra a possibilidade de exploração do CVE-2025-24293 e destaca o impacto no mundo real das aplicações Rails:
Mitigação e serviços profissionais de testes de penetração
As organizações devem resolver os problemas CVE-2025-24293 e CVE-2025-55193 actualizando o Ruby on Rails para as versões de segurança mais recentes (7.1.5.2, 7.2.2.2 ou 8.0.2.1). Se não for possível a aplicação imediata de correcções, as salvaguardas temporárias incluem a restrição das transformações de imagem a predefinições, a validação e higienização dos dados introduzidos pelo utilizador, o reforço das políticas do ImageMagick e a garantia de que os registos não podem interpretar sequências de escape ANSI.
No entanto, a aplicação de patches não elimina todos os riscos em ambientes web modernos. A lógica comercial personalizada, as integrações de terceiros e os complexos pipelines de implementação criam frequentemente caminhos exploráveis que vão para além dos avisos dos fornecedores. É por isso que os testes de penetração de aplicações Web são essenciais.
Na OPSWAT, a Unidade 515 fornece serviços especializados de testes de penetração de aplicações Web que vão muito além dos scanners automatizados ou das auditorias de listas de verificação. A nossa equipa é constituída por especialistas experientes em segurança ofensiva, com anos de experiência em testes de aplicações de grande escala em diversos sectores. Utilizando uma metodologia sistemática e adversária, descobrimos vulnerabilidades nos fluxos de autenticação, validação de entradas, controlo de acesso e tratamento de dados - problemas que podem persistir mesmo em estruturas totalmente corrigidas, como o Ruby on Rails.
Cada compromisso combina conhecimentos técnicos profundos com relatórios prontos para a empresa, fornecendo informações claras e acionáveis que permitem às equipas de desenvolvimento corrigir as falhas de forma eficaz. Ao contratar a Unit 515, as organizações ganham a garantia de que as suas aplicações críticas são testadas por especialistas que não só simulam técnicas de ataque do mundo real, como também validam que as correcções colmatam verdadeiramente as falhas. Essa experiência fortalece os esforços de correção, reduz o risco residual e aumenta a resiliência geral do aplicativo contra ameaças em evolução