← back
CVE-2022-22947criticalunder attackCWE-94

CVE-2022-22947

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 10epss 98%
from disclosure to weapon0 days
Published on NVDMar 3
1st PoCJan 25
metasploitJan 26
CISA KEV+74d
exploitation probability
98%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
89 public exploit(s)
Action required by CISAfederal deadline: 2022-06-06

Apply updates per vendor instructions.

Summary

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.

Technical detail

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.

How it’s exploited

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.

Versions

Affected
Spring Cloud Gateway 3.1.0 (apenas essa versão na linha 3.1.x) e 3.0.6 e versões anteriores na linha 3.0.x, conforme advisory oficial da VMware/Tanzu.
Fixed in
3.1.1 (linha 3.1.x) e 3.0.7 (linha 3.0.x), disponíveis como OSS conforme advisory oficial.

How to protect

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.

How to detect

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.

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.
In spring cloud gateway versions prior to 3.1.1+ and 3.0.7+ , applications are vulnerable to a code injection attack when the Gateway Actuator endpoint is enabled, exposed and unsecured. A remote attacker could make a maliciously crafted request that could allow arbitrary remote execution on the remote host.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
public PoCs found89
exploitdbwww.exploit-db.com/exploits/50799unverifiedgithubgithub.com/lucksec/Spring-Cloud-Gateway-CVE-2022-22947223githubgithub.com/whwlsfb/cve-2022-22947-godzilla-memshell210githubgithub.com/SecNN/CVE-2022-22947_Rce_Exp77githubgithub.com/tangxiaofeng7/CVE-2022-22947-Spring-Cloud-Gateway71githubgithub.com/0730Nophone/CVE-2022-22947-60githubgithub.com/crowsec-edtech/CVE-2022-2294738githubgithub.com/0x7eTeam/CVE-2022-2294735githubgithub.com/Zh0um1/CVE-2022-2294728githubgithub.com/Tas9er/SpringCloudGatewayRCE28githubgithub.com/Enokiy/cve-2022-22947-spring-cloud-gateway18githubgithub.com/viemsr/spring_cloud_gateway_memshell18githubgithub.com/B0rn2d/Spring-Cloud-Gateway-Nacos16githubgithub.com/MoCh3n/CVE-2022-22947-Spring-Cloud-Gateway-SpelRCE14githubgithub.com/k3rwin/spring-cloud-gateway-rce12githubgithub.com/4nNns/CVE-2022-2294712githubgithub.com/Wrin9/CVE-2022-2294711githubgithub.com/twseptian/cve-2022-2294711githubgithub.com/Vulnmachines/spring-cve-2022-2294710githubgithub.com/dingxiao77/-cve-2022-22947-9githubgithub.com/SiJiDo/CVE-2022-229479githubgithub.com/hunzi0/CVE-2022-22947-Rce_POC7githubgithub.com/mrknow001/CVE-2022-229477githubgithub.com/anansec/CVE-2022-22947_EXP7githubgithub.com/darkb1rd/cve-2022-229476githubgithub.com/YutuSec/SpEL6githubgithub.com/Greetdawn/CVE-2022-229475githubgithub.com/Arrnitage/CVE-2022-22947_exp5githubgithub.com/sagaryadav8742/springcloudRCE4githubgithub.com/nu0l/cve-2022-229473githubgithub.com/stayfoolish777/CVE-2022-22947-POC3githubgithub.com/LY613313/CVE-2022-229473githubgithub.com/kkx600/Burp_VulPscan2githubgithub.com/22ke/CVE-2022-229472githubgithub.com/Vancomycin-g/CVE-2022-229472githubgithub.com/dbgee/CVE-2022-229472githubgithub.com/Le1a/CVE-2022-229472githubgithub.com/bysinks/CVE-2022-229471githubgithub.com/kmahyyg/CVE-2022-229471githubgithub.com/Wrong-pixel/CVE-2022-22947-exp1githubgithub.com/talentsec/Spring-Cloud-Gateway-CVE-2022-229471githubgithub.com/qq87234770/CVE-2022-229471githubgithub.com/Nathaniel1025/CVE-2022-229471githubgithub.com/Jun-5heng/CVE-2022-229471githubgithub.com/fbion/CVE-2022-229470githubgithub.com/scopion/CVE-2022-22947-exp0githubgithub.com/aesm1p/CVE-2022-22947-POC-Reproduce0githubgithub.com/flying0er/CVE-2022-22947-goby0githubgithub.com/skysliently/CVE-2022-22947-pb-ai0githubgithub.com/ciri3/spring-cloud-gateway-cve-2022-22947-report0githubgithub.com/Summer177/Spring-Cloud-Gateway-CVE-2022-229470githubgithub.com/BerMalBerIst/CVE-2022-229470githubgithub.com/scopion/cve-2022-229470githubgithub.com/Sumitpathania03/CVE-2022-229470githubgithub.com/superneilcn/SpringExploitGUI0githubgithub.com/shoucheng3/spring-cloud__spring-cloud-gateway_CVE-2022-22947_3-0-60githubgithub.com/cc3305/CVE-2022-229470githubgithub.com/SanderSchepers1993/CyberSec20260githubgithub.com/PaoPaoLong-lab/Spring-CVE-2022-22947-0githubgithub.com/hh-hunter/cve-2022-22947-docker0githubgithub.com/nanaao/CVE-2022-22947-POC0githubgithub.com/entr0pie/demo-cve-2022-229470vulncheckvulncheck.com/xdb/48f7a107c7f1unverifiedvulncheckvulncheck.com/xdb/769ad48809b9unverifiedvulncheckvulncheck.com/xdb/fd72b929a3aeunverifiedvulncheckvulncheck.com/xdb/0751146bcae7unverifiedvulncheckvulncheck.com/xdb/7bc2856e5f63unverifiedvulncheckvulncheck.com/xdb/66245b597db0unverifiedvulncheckvulncheck.com/xdb/32e3404666d2unverifiedvulncheckvulncheck.com/xdb/ee5d2b5c3f92unverifiedvulncheckvulncheck.com/xdb/a02abe0b70a0unverifiedvulncheckvulncheck.com/xdb/6eeb91b260d2unverifiedvulncheckvulncheck.com/xdb/d03fdfb98036unverifiedvulncheckvulncheck.com/xdb/a48d3f6ecc63unverifiedvulncheckvulncheck.com/xdb/e709c7824d6funverifiedvulncheckvulncheck.com/xdb/0e346534d99cunverifiedvulncheckvulncheck.com/xdb/ef11176b296dunverifiedvulncheckvulncheck.com/xdb/3e6c0320c020unverifiedvulncheckvulncheck.com/xdb/2665970cc7d0unverifiedvulncheckvulncheck.com/xdb/497a7868a7f8unverifiedvulncheckvulncheck.com/xdb/9344fae60775unverifiedvulncheckvulncheck.com/xdb/e911b1c2597funverifiedvulncheckvulncheck.com/xdb/06a474d9b7ecunverifiedvulncheckvulncheck.com/xdb/e7ca8c762802unverifiedvulncheckvulncheck.com/xdb/afa67d1ce366unverifiedvulncheckvulncheck.com/xdb/bd2a06bbd8bbunverifiedvulncheckvulncheck.com/xdb/1c0791ff43d4unverifiedcve_referencepacketstormsecurity.com/files/168742/Spring-Cloud-Gateway-3.1.0-Remote-Code-Execution.htmlunverifiedcve_referencepacketstormsecurity.com/files/166219/Spring-Cloud-Gateway-3.1.0-Remote-Code-Execution.htmlunverified
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.