← back
CVE-2022-22963criticalunder attackCWE-94

CVE-2022-22963

100Vexday Risk Score

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

ssvc Actcvss 9.8epss 100%
from disclosure to weapon0 days
Published on NVDApr 1
1st PoCMar 26
metasploitMar 29
CISA KEV+146d
exploitation probability
100%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
50 public exploit(s)
Action required by CISAfederal deadline: 2022-09-15

Apply updates per vendor instructions.

Summary

Falha crítica no Spring Cloud Function que permite RCE não autenticado através de uma expressão SpEL (Spring Expression Language) enviada pelo atacante como cabeçalho de roteamento HTTP. Afeta qualquer aplicação que use a funcionalidade de routing do framework, mesmo sem endpoints de negócio expostos — o próprio mecanismo de roteamento interno é o vetor. Está no catálogo KEV da CISA com exploração confirmada e possui PoC pública, módulo Metasploit e template Nuclei, o que a torna trivial de varrer em massa.

Technical detail

Spring Cloud Function implementa uma funcionalidade de roteamento dinâmico de funções via o cabeçalho HTTP (ou atributo de mensagem) `spring.cloud.function.routing-expression`. O valor desse campo é avaliado pelo framework como uma expressão SpEL para decidir qual bean de função invocar. O problema é que a aplicação avalia essa expressão sem qualquer sanitização ou sandboxing, tratando input externo como código a ser interpretado — uma injeção de expressão que dá ao atacante acesso à API Java completa via SpEL (reflexão, instanciação de classes, invocação de métodos arbitrários).

O advisory da VMware referencia CWE-770 (alocação de recursos sem limites) e CWE-497 (exposição de informação de controle a esfera não autorizada), mas o catálogo KEV da CISA classifica a falha como CWE-94 (injeção de código), que descreve melhor o mecanismo prático: o atacante controla integralmente o conteúdo avaliado como SpEL, sem qualquer filtro de classes ou métodos permitidos.

O ponto crítico é que essa avaliação ocorre na camada de roteamento, antes de qualquer lógica de negócio da aplicação ser executada. Isso significa que não é necessário que exista uma função ou rota legítima correspondente ao payload — basta que a aplicação tenha a dependência do Spring Cloud Function com routing habilitado e um endpoint HTTP exposto, qualquer endpoint, para o cabeçalho ser processado.

How it’s exploited

O vetor é uma requisição HTTP simples (tipicamente POST) contra qualquer endpoint exposto pela aplicação Spring Cloud Function, incluindo o cabeçalho `spring.cloud.function.routing-expression` com uma expressão SpEL manipulada. Não há necessidade de autenticação (PR:N no CVSS), interação do usuário ou acesso prévio à rede interna — só é preciso alcançar a porta HTTP da aplicação vulnerável. A complexidade de ataque é baixa (AC:L): a expressão SpEL, uma vez processada, pode invocar classes Java para execução de comandos no sistema operacional subjacente ao processo Java.

O impacto declarado é execução remota de código com os privilégios do processo da aplicação, além de acesso a recursos locais do sistema (leitura de arquivos, variáveis de ambiente, etc.), conforme o próprio texto do advisory. Como a exploração não depende de rotas de negócio específicas, scanners automatizados conseguem testar a presença da falha injetando expressões inofensivas (ex.: operações aritméticas) e observando o efeito na resposta, antes de escalar para payloads de execução de comando.

A CISA adicionou a CVE ao catálogo KEV em 25/08/2022 com prazo de correção em 15/09/2022, confirmando exploração ativa no mundo real. A disponibilidade pública de PoC, módulo Metasploit e template Nuclei desde pouco depois da divulgação (29/03/2022) tornou a varredura em massa contra instâncias expostas rápida e generalizada — é o padrão de exploração esperado para uma vulnerabilidade dessa classe, análoga em espírito ao Spring4Shell divulgado na mesma janela de tempo.

Versions

Affected
Spring Cloud Function 3.2.2 e anteriores (linha 3.2.x), 3.1.6 e anteriores (linha 3.1.x), e versões mais antigas sem suporte.
Fixed in
3.2.3 e 3.1.7 (branches OSS correspondentes).

How to protect

A correção oficial é atualizar o Spring Cloud Function. A Cisco, ao investigar seus produtos, declarou explicitamente que não existe workaround que endereça essa vulnerabilidade — a única mitigação real é a atualização de versão. Não há flag de configuração documentada pelo fornecedor para desabilitar a avaliação da expressão de roteamento sem atualizar o código.

Se a atualização imediata não for viável, os controles compensatórios praticáveis são: bloquear ou sanitizar no WAF/proxy reverso qualquer requisição contendo o cabeçalho `spring.cloud.function.routing-expression` com conteúdo que não corresponda a um valor de roteamento simples esperado (nome de função), e restringir o acesso de rede ao serviço apenas a clientes confiáveis enquanto o patch não é aplicado. Nenhuma dessas medidas substitui o patch — são paliativos para reduzir a janela de exposição.

Não funciona como mitigação: remover apenas o endpoint de rota principal da aplicação ou desabilitar autenticação de outras camadas, já que a avaliação da expressão ocorre no roteamento interno do framework independentemente da lógica de negócio exposta.

How to detect

Em logs de acesso HTTP/aplicação, procurar pela presença do cabeçalho `spring.cloud.function.routing-expression` (ou parâmetro equivalente) contendo tokens típicos de SpEL malicioso, como `T(`, referências a `java.lang.Runtime`, `ProcessBuilder`, `exec`, ou sequências de caracteres incomuns para um nome de função de roteamento legítimo (que normalmente seria um identificador simples). A Cisco publicou regras Snort específicas (SID 59388 e 59416) para detecção de tráfego de exploração na rede.

Como o disparo inicial de varreduras automatizadas frequentemente usa payloads de teste inofensivos (expressões aritméticas simples) antes de escalar, a ausência de comandos de sistema óbvios no log não garante que não houve tentativa de reconhecimento — qualquer valor não trivial nesse cabeçalho, vindo de origem não confiável, deve ser tratado como indicador de tentativa de exploração.

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 Function versions 3.1.6, 3.2.2 and older unsupported versions, when using routing functionality it is possible for a user to provide a specially crafted SpEL as a routing-expression that may result in remote code execution and access to local resources.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
public PoCs found50
exploitdbwww.exploit-db.com/exploits/51577unverifiedgithubgithub.com/hktalent/spring-spel-0day-poc355githubgithub.com/dinosn/CVE-2022-22963115githubgithub.com/darryk10/CVE-2022-2296334githubgithub.com/J0ey17/CVE-2022-22963_Reverse-Shell-Exploit24githubgithub.com/me2nuk/CVE-2022-2296319githubgithub.com/RanDengShiFu/CVE-2022-2296315githubgithub.com/kh4sh3i/Spring-CVE14githubgithub.com/Kirill89/CVE-2022-22963-PoC9githubgithub.com/k3rwin/spring-cloud-function-rce8githubgithub.com/charis3306/CVE-2022-229638githubgithub.com/lemmyz4n3771/CVE-2022-22963-PoC4githubgithub.com/iliass-dahman/CVE-2022-22963-POC4githubgithub.com/randallbanner/Spring-Cloud-Function-Vulnerability-CVE-2022-22963-RCE4githubgithub.com/stevemats/Spring0DayCoreExploit3githubgithub.com/twseptian/cve-2022-229632githubgithub.com/AayushmanThapaMagar/CVE-2022-229631githubgithub.com/puckiestyle/CVE-2022-229631githubgithub.com/SealPaPaPa/SpringCloudFunction-Research1githubgithub.com/SourM1lk/CVE-2022-22963-Exploit1githubgithub.com/xmqaq/CVE-2022-229631githubgithub.com/BearClaw96/CVE-2022-22963-Poc-Bearcules0githubgithub.com/Mustafa1986/CVE-2022-229630githubgithub.com/gunzf0x/CVE-2022-229630githubgithub.com/nikn0laty/RCE-in-Spring-Cloud-CVE-2022-229630githubgithub.com/jrbH4CK/CVE-2022-229630githubgithub.com/Shayz614/CVE-2022-229630githubgithub.com/808rsec/CVE-2022-229630githubgithub.com/cyberager/CVE-2022-229630githubgithub.com/75ACOL/CVE-2022-229630githubgithub.com/G01d3nW01f/CVE-2022-229630vulncheckvulncheck.com/xdb/6857dd5dc99eunverifiedvulncheckvulncheck.com/xdb/5922af7bf5b9unverifiedvulncheckvulncheck.com/xdb/8fdc0fdf513eunverifiedvulncheckvulncheck.com/xdb/b67b2f1cc825unverifiedvulncheckvulncheck.com/xdb/b3ed0886366bunverifiedvulncheckvulncheck.com/xdb/25acfb6faf58unverifiedvulncheckvulncheck.com/xdb/28f51035796bunverifiedvulncheckvulncheck.com/xdb/a1c6ea2e02bcunverifiedvulncheckvulncheck.com/xdb/e735e076c22dunverifiedvulncheckvulncheck.com/xdb/28fa125e7119unverifiedvulncheckvulncheck.com/xdb/1066ae419f9bunverifiedvulncheckvulncheck.com/xdb/a05078d88fe4unverifiedcve_referencepacketstormsecurity.com/files/173430/Spring-Cloud-3.2.2-Remote-Command-Execution.htmlunverifiedvulncheckvulncheck.com/xdb/c00844238ab5unverifiedvulncheckvulncheck.com/xdb/365b57443ae6unverifiedvulncheckvulncheck.com/xdb/fed25e003946unverifiedvulncheckvulncheck.com/xdb/e2c12294de2eunverifiedvulncheckvulncheck.com/xdb/8182bb40e66aunverifiedvulncheckvulncheck.com/xdb/698c9d96f1d6unverified
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.