← back
CVE-2014-0130highunder attackCWE-22

CVE-2014-0130

83Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.

ssvc Actcvss 7.5epss 54%
from disclosure to weapon1 days
Published on NVDMay 7
1st PoC+1d
CISA KEV+2879d
exploitation probability
54%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
1 public exploit(s)
Action required by CISAfederal deadline: 2022-04-15

Apply updates per vendor instructions.

Summary

Falha de directory traversal (CWE-22) no mecanismo de implicit render do Action Pack, o componente MVC do Ruby on Rails. Um atacante remoto não autenticado pode ler arquivos arbitrários acessíveis ao processo da aplicação, mas isso só ocorre em aplicações que usam rotas com "route globbing" (segmentos wildcard) — não é toda app Rails vulnerável, só uma configuração de roteamento específica. Está no catálogo KEV da CISA desde 2022, o que indica que instalações legadas nunca corrigidas continuam sendo alvo de scanning em massa quase uma década depois da publicação.

Technical detail

O bug está em actionpack/lib/abstract_controller/base.rb, na lógica de implicit render: quando uma action não define explicitamente qual template renderizar, o Rails tenta resolver automaticamente o caminho do template com base nos parâmetros da requisição. Em rotas configuradas com globbing (segmentos que capturam partes variáveis do path, tipicamente usados para URLs flexíveis tipo wildcard), o valor capturado nesse segmento é incorporado ao caminho do template sem sanitização das sequências de travessia de diretório.

O atacante controla o conteúdo do segmento glob da URL. Ao inserir sequências de "../" nesse segmento, ele desloca a resolução do template para fora do diretório de views esperado, fazendo o Rails tentar processar/exibir um arquivo arbitrário do sistema de arquivos acessível ao processo da aplicação — código-fonte, arquivos de configuração, credenciais, dependendo do que estiver no disco e das permissões do processo.

A falha não depende de autenticação nem de estado de sessão: é um problema de resolução de path no fluxo de request, exposto a qualquer requisição HTTP que caia numa rota com essa configuração. A pré-condição decisiva é o uso de route globbing — aplicações que só usam rotas RESTful convencionais (resources, match explícito sem wildcard) não expõem esse caminho de código vulnerável mesmo estando em versão afetada.

How it’s exploited

O vetor é uma única requisição HTTP, sem autenticação, direcionada a uma rota da aplicação que usa globbing. O atacante manipula o segmento capturado pela rota inserindo sequências de travessia de diretório para apontar a resolução do template para um arquivo fora da árvore de views — o resultado prático é a app tentando "renderizar" (e nesse processo, expor) o conteúdo de um arquivo arbitrário legível pelo processo Ruby.

Existe PoC pública desde a divulgação original em 2014, incluindo análise técnica detalhada da NCC Group/Matasano dissecando o mecanismo. A CISA incluiu a CVE no catálogo KEV (adicionada em 25/03/2022, prazo de correção 15/04/2022), confirmando exploração ativa observada — não apenas teórica — mesmo anos após o patch estar disponível, o que reflete a persistência de instâncias Rails desatualizadas expostas publicamente.

Complexidade de exploração é baixa: não exige engenharia social, múltiplos passos ou condições de corrida. O limitador real de superfície de ataque é a presença de rotas com glob configuradas — em ambientes que não usam esse padrão de roteamento, a CVE simplesmente não se aplica, independente da versão do Rails.

Versions

Affected
Ruby on Rails anterior a 3.2.18; 4.0.x anterior a 4.0.5; 4.1.x anterior a 4.1.1 — quando a aplicação usa configurações de rota com globbing (route globbing).
Fixed in
3.2.18, 4.0.5 e 4.1.1 (e versões posteriores dessas séries). Backport distribuído pela Red Hat via RHSA-2014:1863 no pacote ruby193-rubygem-actionpack-3.2.17-6.el6sam para Red Hat Subscription Asset Manager 1.4.

How to protect

Atualizar para Ruby on Rails 3.2.18, 4.0.5 ou 4.1.1 (ou qualquer versão posterior dentro dessas séries) corrige o problema na resolução de path do implicit render. Distribuições e produtos que embarcam gems Rails também receberam backports — por exemplo, o Red Hat Subscription Asset Manager 1.4 corrigiu via RHSA-2014:1863, distribuindo ruby193-rubygem-actionpack em versão com o patch backportado (pacote 3.2.17-6.el6sam), então em ambientes baseados em pacotes de distribuição o número de versão da gem sozinho não basta para confirmar a correção — é preciso checar se o patch específico foi aplicado no pacote.

Se a atualização não for viável no curto prazo, o paliativo real é revisar toda rota que usa route globbing na aplicação e garantir que ela não dependa de implicit render — ou seja, forçar render explícito nas actions atingidas por essas rotas, e/ou restringir via constraint de rota os caracteres aceitos no segmento glob para excluir "/" e sequências de travessia. Esse workaround tem custo de manutenção (exige auditoria de todas as rotas glob da aplicação) e não é tão robusto quanto o patch oficial, que corrige a causa na resolução do template.

Não funciona como mitigação: WAF genérico bloqueando "../" na URL pode reduzir tentativas triviais, mas não é controle confiável contra encoding alternativo e não resolve a causa raiz — a aplicação continua vulnerável a qualquer variação que escape a assinatura do WAF.

How to detect

Em logs de acesso, procurar requisições para rotas conhecidas de glob/wildcard contendo sequências de travessia de diretório ("../", variantes com URL-encoding) no segmento capturado, seguidas de respostas 200 com corpo inesperado (conteúdo de arquivo de sistema, código-fonte ou configuração em vez de HTML normal da aplicação). Erros 500 associados a tentativas de renderizar caminhos fora do diretório de views também são indício de tentativa, mesmo sem sucesso.

Como o PoC é público desde 2014, é comum encontrar tentativas de scanning automatizado contra esse padrão em qualquer aplicação Rails exposta à internet, independentemente de ela ser vulnerável — a presença de tentativas no log não confirma exploração bem-sucedida; é necessário confirmar que a aplicação de fato usa route globbing e está em versão não corrigida para avaliar risco real.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
Directory traversal vulnerability in actionpack/lib/abstract_controller/base.rb in the implicit-render implementation in Ruby on Rails before 3.2.18, 4.0.x before 4.0.5, and 4.1.x before 4.1.1, when certain route globbing configurations are enabled, allows remote attackers to read arbitrary files via a crafted request.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.