CVE-2022-22947
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Spring Cloud Gateway, quando expõe o endpoint Actuator de gateway sem autenticação, permite que um atacante remoto crie rotas dinâmicas contendo expressões SpEL maliciosas, resultando em execução arbitrária de código no host. O CVSS 10.0 é justificado tecnicamente, mas a exploração depende de uma configuração específica — endpoint 'gateway' habilitado e exposto — que não é o padrão do Spring Boot Actuator em produção bem configurada.
Detalhamento técnico
A falha é um code injection (CWE-94) no endpoint Actuator 'gateway' do Spring Cloud Gateway. Esse endpoint permite gerenciar rotas em tempo de execução via API REST (criar, atualizar, remover rotas e disparar refresh), e as definições de rota aceitam filtros e predicates que suportam Spring Expression Language (SpEL) para lógica dinâmica de roteamento.
O problema é que o atacante controla o conteúdo desses filtros/predicates ao submeter uma nova definição de rota via requisição HTTP ao endpoint Actuator. Como o valor é avaliado como expressão SpEL pelo motor interno do Spring, uma expressão maliciosa embutida no campo é executada no contexto da JVM da aplicação, com os mesmos privilégios do processo Spring Cloud Gateway.
O vetor completo normalmente envolve duas chamadas: uma para registrar/atualizar a rota malformada no endpoint de gerenciamento, e outra para forçar o refresh das rotas, momento em que a expressão é avaliada. Não há validação ou sanitização do conteúdo aceito nesses campos antes de submetê-lo ao interpretador SpEL — o problema clássico de tratar entrada de usuário como código confiável.
Como é explorada
Pré-requisito central: o endpoint Actuator 'gateway' precisa estar habilitado (management.endpoint.gateway.enabled) e exposto na web (incluído em management.endpoints.web.exposure.include), sem proteção de autenticação via Spring Security. Isso não é o comportamento padrão de todo deployment — mas é comum em ambientes que habilitam Actuator amplamente para observabilidade sem restringir exposição, e foi exatamente esse cenário que tornou a CVE crítica em massa.
A exploração não exige autenticação (PR:N) nem interação do usuário (UI:N), apenas acesso de rede ao endpoint HTTP exposto. Não há complexidade de exploração relevante: a técnica é registrada em ferramentas públicas (módulo Metasploit, templates Nuclei, PoCs), o que reduz drasticamente a barreira técnica — inclusive para scanners automatizados de internet.
A CISA confirma exploração ativa em massa (KEV, adicionada em 16/05/2022, prazo de correção 06/06/2022), coerente com o padrão observado em CVEs críticas de RCE não autenticado expostas na internet: campanhas de scan em massa começam dias após a publicação do PoC. O resultado final da exploração é execução arbitrária de código no host, com o mesmo nível de privilégio do processo da aplicação — tipicamente suficiente para shell reverso, exfiltração ou pivotamento lateral.
Versões
Como se proteger
A correção do fornecedor é atualizar para Spring Cloud Gateway 3.1.1 (branch 3.1.x) ou 3.0.7 (branch 3.0.x). Não há indicação de backport para versões anteriores a 3.0 no advisory oficial — se seu deployment estiver em uma linha mais antiga não coberta por esses branches, trate como sem patch disponível e aplique os controles abaixo.
Se a atualização não for imediata, o paliativo real citado pelo próprio fornecedor é desabilitar o endpoint Actuator de gateway via `management.endpoint.gateway.enabled: false`, quando ele não for necessário operacionalmente. Se for necessário mantê-lo ativo, deve ser protegido com Spring Security (autenticação/autorização no endpoint), conforme a documentação de segurança de endpoints Actuator do Spring Boot. Esse controle tem custo baixo — normalmente é configuração, não código — mas exige revisão de quem depende do endpoint para automação de rotas dinâmicas.
Não funciona como mitigação apenas restringir por 'security through obscurity' (mudar o path do Actuator) sem also restringir exposição de rede ou autenticação — scanners de exploração testam paths conhecidos do Actuator diretamente, e a restrição de exposição via `management.endpoints.web.exposure.include` sem desabilitar o endpoint gateway especificamente não é suficiente se 'gateway' ainda estiver na lista de exposição.
Como detectar
Nos logs de acesso, procurar requisições HTTP (POST/PUT/DELETE) ao path do Actuator relacionado a gateway (ex.: /actuator/gateway/routes/{id}) seguidas de chamada ao endpoint de refresh (/actuator/gateway/refresh), especialmente originadas de IPs externos não administrativos. O corpo dessas requisições, se logado, pode conter sintaxe SpEL característica (uso de `#{...}`) dentro de campos de filtro ou predicate — presença disso é sinal forte de tentativa de exploração.
Como o endpoint aceita tráfego HTTP legítimo de administração, não há um único indicador de rede infalível sem inspecionar payload; ambientes sem log de corpo de requisição no Actuator terão baixa visibilidade retroativa. Presença de processos filhos anômalos gerados pela JVM do Gateway (shells, ferramentas de rede) é o sinal mais confiável de exploração já concretizada, dado que a técnica pública documentada resulta em execução de comando via processo do sistema operacional.