← voltar
CVE-2022-22965criticalsob ataqueCWE-94

CVE-2022-22965

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 9.8epss 100%
da publicação à arma0 dias
Publicada no NVD1 de abr.
1ª PoC26 de mar.
metasploit31 de mar.
CISA KEV+3d
probabilidade de exploração
100%top 1% das CVEs
exploração observada
simCISA + VulnCheck
160 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-04-25

Apply updates per vendor instructions.

Resumo

Falha de code injection (CWE-915, modificação não controlada de atributos de objeto) no data binding do Spring Framework, que ficou conhecida como Spring4Shell. Permite RCE remota e não autenticada, mas apenas sob um conjunto específico de pré-condições — JDK 9+, deploy como WAR em Tomcat e dependência de spring-webmvc ou spring-webflux — o que faz o impacto real ser muito menor do que o CVSS 9.8 sugere para a maioria dos deploys Spring Boot padrão (jar executável embutido).

Detalhamento técnico

O Spring DataBinder permite vincular parâmetros de requisição HTTP a propriedades de objetos Java expostos por um controller (o clássico padrão de data binding do Spring MVC/WebFlux). O problema é que esse binding, se não restringido, alcança propriedades encadeadas via getters/setters de reflexão — incluindo a cadeia class.classLoader, que no JDK 9+ passou a expor métodos adicionais no ClassLoader que não existiam (ou eram protegidos) em versões anteriores do Java.

Em um deploy WAR sob Apache Tomcat, essa cadeia dá acesso ao ClassLoader do próprio Tomcat, e a partir dele é possível alcançar objetos internos do container, como o AccessLogValve. Manipulando propriedades desse Valve (padrão de log, diretório, prefixo, sufixo, formato de data) via parâmetros de request, um atacante consegue fazer o Tomcat escrever um arquivo controlado por ele em um local dentro do diretório da aplicação web — efetivamente um write primitivo arbitrário disfarçado de configuração de logging.

É essencialmente uma reincidência de uma vulnerabilidade antiga do Spring (CVE-2010-1622), que havia sido mitigada mas voltou a ser explorável por causa da mudança de superfície do ClassLoader no JDK 9+ combinada com o comportamento padrão de exposição de propriedades encadeadas do DataBinder.

O atacante controla os valores dos parâmetros de request que o binder mapeia para as propriedades do objeto de destino; não precisa de nenhum input privilegiado, upload de arquivo ou endpoint administrativo — qualquer controller com data binding ativo em um objeto exposto é superfície potencial.

Como é explorada

O vetor é uma requisição HTTP simples (GET ou POST) para qualquer endpoint da aplicação que faça data binding de parâmetros para um objeto — não precisa ser um endpoint sensível, qualquer form-backed object ou @ModelAttribute serve como porta de entrada. Não há autenticação envolvida na maioria dos casos documentados, o que torna a exploração pré-autenticação quando as pré-condições de ambiente são atendidas.

As pré-condições reais, e a informação mais importante da página, são: JDK 9 ou superior, Apache Tomcat como servlet container, aplicação empacotada como WAR (não como jar executável do Spring Boot, que é o padrão), e dependência direta de spring-webmvc ou spring-webflux. A VMware afirma explicitamente que a distribuição padrão do Spring Boot (jar executável) não é vulnerável a esse exploit específico, embora reconheça que a falha é mais geral e outros vetores de exploração podem existir fora desse cenário.

Uma vez satisfeitas as condições, o resultado documentado publicamente é escrita de um arquivo (tipicamente uma JSP webshell) dentro do diretório da aplicação via manipulação das propriedades do AccessLogValve do Tomcat, seguida de uma segunda requisição para acessar esse arquivo e obter execução de comando com os privilégios do processo do Tomcat. A CVE está no catálogo KEV da CISA — houve exploração ativa confirmada em campo, curto tempo entre disclosure e exploração massiva, e existe módulo Metasploit, template Nuclei e PoC pública, o que tornou a varredura em massa trivial nos dias seguintes ao anúncio.

Versões

Afetadas
Spring Framework 5.3.0 até 5.3.17; 5.2.19 e versões anteriores dessa ramificação (segundo a VMware/Tanzu).
Corrigidas em
5.3.18 (branch 5.3.x) e 5.2.20 (branch 5.2.x), disponíveis como OSS.

Como se proteger

A correção do fornecedor é atualizar o Spring Framework para 5.3.18 ou 5.2.20 (ou versões posteriores dessas ramificações). Segundo a VMware, nenhuma etapa adicional é necessária após o upgrade — a correção trata a causa raiz no data binder.

Quando o upgrade imediato não é viável, o próprio blog de anúncio antecipado da Spring (referenciado pela VMware) lista mitigações alternativas para quem não pode atualizar de imediato; essa página não reproduz os detalhes técnicos exatos dessas mitigações porque não estavam nas fontes lidas — consulte o post oficial 'Spring Framework RCE Early Announcement' para os passos específicos (customização de WebDataBinder, restrição de campos permitidos no binding, etc.).

O que não resolve por si só: apenas trocar de JDK 9+ para uma versão anterior não é uma mitigação suportada oficialmente, e depender exclusivamente do fato de 'estar em Spring Boot com jar executável' como mitigação é arriscado — a VMware é explícita que a falha é mais ampla que o exploit demonstrado contra WAR/Tomcat, e outros vetores podem existir. Ambientes com WAF podem tentar bloquear padrões de parâmetros como 'class.module.classLoader' ou 'class.classLoader' nas requisições como controle compensatório temporário, mas isso é paliativo e contornável, não substitui o patch.

Como detectar

Em logs de acesso do Tomcat ou do WAF, procurar requisições HTTP (GET/POST) contendo parâmetros com os prefixos 'class.module.classLoader' ou 'class.classLoader' seguidos de propriedades como 'resources.context.parent.pipeline' — esse é o padrão característico usado nos PoCs públicos para alcançar o AccessLogValve do Tomcat. A presença de arquivos JSP inesperados recém-criados em diretórios da aplicação web, especialmente com nomes ou conteúdo incomuns, é outro indicador forte de exploração bem-sucedida (webshell plantado via write primitivo).

Como o vetor pode variar (a própria VMware reconhece que existem outras formas potenciais de exploração), a ausência desses padrões específicos nos logs não garante que não houve tentativa — trate a superfície do data binding como ponto amplo, não como assinatura única confiável.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
A Spring MVC or Spring WebFlux application running on JDK 9+ may be vulnerable to remote code execution (RCE) via data binding. The specific exploit requires the application to run on Tomcat as a WAR deployment. If the application is deployed as a Spring Boot executable jar, i.e. the default, it is not vulnerable to the exploit. However, the nature of the vulnerability is more general, and there may be other ways to exploit it.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
n/a · Spring Framework
PoCs públicas encontradas160
githubgithub.com/BobTheShoplifter/Spring4Shell-POC377githubgithub.com/reznok/Spring4Shell-POC324githubgithub.com/tpt11fb/SpringVulScan154githubgithub.com/TheGejr/SpringShell131githubgithub.com/zangcc/CVE-2022-22965-rexbb102githubgithub.com/alt3kx/CVE-2022-22965101githubgithub.com/SecNN/SpringFramework_CVE-2022-22965_RCE72githubgithub.com/4nth0ny1130/spring4shell_behinder63githubgithub.com/Mr-xn/spring-core-rce50githubgithub.com/FourCoreLabs/spring4shell-exploit-poc44githubgithub.com/colincowie/Safer_PoC_CVE-2022-2296544githubgithub.com/tangxiaofeng7/CVE-2022-22965-Spring-Core-Rce39githubgithub.com/Kirill89/CVE-2022-22965-PoC32githubgithub.com/k3rwin/spring-core-rce28githubgithub.com/liangyueliangyue/spring-core-rce26githubgithub.com/p1ckzi/CVE-2022-2296523githubgithub.com/DDuarte/springshell-rce-poc19githubgithub.com/Bouquets-ai/CVE-2022-22965-GUItools17githubgithub.com/alt3kx/CVE-2022-22965_PoC17githubgithub.com/itsecurityco/CVE-2022-2296516githubgithub.com/wjl110/CVE-2022-22965_Spring_Core_RCE16githubgithub.com/me2nuk/CVE-2022-2296514githubgithub.com/viniciuspereiras/CVE-2022-22965-poc13githubgithub.com/zer0yu/CVE-2022-2296512githubgithub.com/fracturelabs/go-scan-spring12githubgithub.com/gpiechnik2/nmap-spring4shell8githubgithub.com/sunnyvale-it/CVE-2022-22965-PoC7githubgithub.com/Wrin9/CVE-2022-229657githubgithub.com/wikiZ/springboot_CVE-2022-229656githubgithub.com/GuayoyoCyber/CVE-2022-229656githubgithub.com/mariomamo/CVE-2022-229655githubgithub.com/khidottrivi/CVE-2022-229654githubgithub.com/nu0l/CVE-2022-229654githubgithub.com/iloveflag/Fast-CVE-2022-229654githubgithub.com/Loneyers/Spring4Shell4githubgithub.com/wshon/spring-framework-rce4githubgithub.com/0xrobiul/CVE-2022-229653githubgithub.com/BKLockly/CVE-2022-229653githubgithub.com/likewhite/CVE-2022-229653githubgithub.com/netcode/Spring4shell-CVE-2022-22965-POC3githubgithub.com/CalumHutton/CVE-2022-22965-PoC_Payara3githubgithub.com/twseptian/cve-2022-229652githubgithub.com/rwincey/spring4shell-CVE-2022-229652githubgithub.com/bL34cHig0/Telstra-Cybersecurity-Virtual-Experience-2githubgithub.com/LudovicPatho/CVE-2022-22965_Spring4Shell2githubgithub.com/irgoncalves/irule-cve-2022-229652githubgithub.com/datawiza-inc/spring-rec-demo2githubgithub.com/jakabakos/CVE-2022-22965-Spring4Shell2githubgithub.com/D1mang/Spring4Shell-CVE-2022-229652githubgithub.com/fracturelabs/spring4shell_victim2githubgithub.com/gokul-ramesh/Spring4Shell-PoC-exploit1githubgithub.com/cxzero/CVE-2022-22965-spring4shell1githubgithub.com/Joe1sn/CVE-2022-229651githubgithub.com/daniel0x00/Invoke-CVE-2022-22965-SafeCheck1githubgithub.com/Snip3R69/spring-shell-vuln1githubgithub.com/salo-404/firewall1githubgithub.com/clemoregan/SSE4-CVE-2022-229651githubgithub.com/c4mx/CVE-2022-22965_PoC1githubgithub.com/mylo-2001/GhostStrike1githubgithub.com/lcarea/CVE-2022-229651githubgithub.com/helsecert/CVE-2022-229651githubgithub.com/YUTING-HUANG0/Spring4Shell-CTF0githubgithub.com/snicoll-scratches/spring-boot-cve-2022-229650githubgithub.com/mebibite/springhound0githubgithub.com/mwojterski/cve-2022-229650githubgithub.com/0xr1l3s/CVE-2022-229650githubgithub.com/luoqianlin/CVE-2022-229650githubgithub.com/t3amj3ff/Spring4ShellPoC0githubgithub.com/fransvanbuul/CVE-2022-22965-susceptibility0githubgithub.com/te5t321/Spring4Shell-CVE-2022-22965.py0githubgithub.com/Omaraitbenhaddi/-Spring4Shell-CVE-2022-22965-0githubgithub.com/Enokiy/spring-RCE-CVE-2022-229650githubgithub.com/ClemExp/CVE-2022-22965-PoC0githubgithub.com/devengpk/CVE-2022-229650githubgithub.com/ajith737/Spring4Shell-CVE-2022-22965-POC0githubgithub.com/c33dd/CVE-2022-229650githubgithub.com/dbgee/Spring4Shell0githubgithub.com/sohamsharma966/Spring4Shell-CVE-2022-229650githubgithub.com/LucasPDiniz/CVE-2022-229650githubgithub.com/ESSAFAR/Firewall-Rules0githubgithub.com/xsxtw/SpringFramework_CVE-2022-22965_RCE0githubgithub.com/Aur3ns/Block-Spring4Shell0githubgithub.com/guigui237/Expoitation-de-la-vuln-rabilit-CVE-2022-229650githubgithub.com/jashan-lefty/Spring4Shell0githubgithub.com/brunoh6/web-threat-mitigation0githubgithub.com/osungjinwoo/CVE-2022-229650githubgithub.com/Nosie12/fire-wall-server0githubgithub.com/shoucheng3/spring-projects__spring-framework_CVE-2022-22965_5-2-19-RELEASE0githubgithub.com/NickoPS87/Spring4Shell-Python-Firewall-POC0githubgithub.com/xenosf/CS4239-Spring4Shell-POC0githubgithub.com/nhattanhh/CVE-2022-229650githubgithub.com/Shakur1314/CVE-2022-22965-Spring4Shell-Security-Operations-Analysis0githubgithub.com/suyash-R-K/dfir-malware-investigation0githubgithub.com/aditidutta696-dev/Spring4Shell-CVE-2022-22965-Exploitation-Attempt0githubgithub.com/0xBlackash/CVE-2022-229650githubgithub.com/felisha-elmer/Sandbox-Challenge-Spring4Shell-CVE-2022-22965-0githubgithub.com/march0n/PoC-CVE-2022-22965-Spring4Shell0githubgithub.com/ernestom-commits/jfrog-apptrust-demo0vulncheckvulncheck.com/xdb/b352d0391cf6não verificadovulncheckvulncheck.com/xdb/a3bc31588469não verificadovulncheckvulncheck.com/xdb/0e01e1f9bd5anão verificadovulncheckvulncheck.com/xdb/a1ab2e7f37bdnão verificadovulncheckvulncheck.com/xdb/cdc0fd2e25dcnão verificadovulncheckvulncheck.com/xdb/697638d15686não verificadovulncheckvulncheck.com/xdb/b383e52d60ddnão verificadovulncheckvulncheck.com/xdb/30bd37a7b9c8não verificadovulncheckvulncheck.com/xdb/32aee2a0b3b4não verificadovulncheckvulncheck.com/xdb/b2f106eac2b1não verificadovulncheckvulncheck.com/xdb/4ae197406cecnão verificadovulncheckvulncheck.com/xdb/3532ae2b1db3não verificadovulncheckvulncheck.com/xdb/44a4aa67f46dnão verificadovulncheckvulncheck.com/xdb/a2a434dff59dnão verificadovulncheckvulncheck.com/xdb/f697d4d9577bnão verificadovulncheckvulncheck.com/xdb/16f47f13dfb3não verificadovulncheckvulncheck.com/xdb/e538f647f0f7não verificadovulncheckvulncheck.com/xdb/43e4620d8285não verificadovulncheckvulncheck.com/xdb/2f1e13cd31bbnão verificadovulncheckvulncheck.com/xdb/99a67c155fa1não verificadovulncheckvulncheck.com/xdb/598802190749não verificadovulncheckvulncheck.com/xdb/a99dfc9a1fa0não verificadovulncheckvulncheck.com/xdb/a00bd5404625não verificadovulncheckvulncheck.com/xdb/2fa78259b5d9não verificadovulncheckvulncheck.com/xdb/1d2c273a6a58não verificadovulncheckvulncheck.com/xdb/41c3baef6240não verificadovulncheckvulncheck.com/xdb/c5654abe65ddnão verificadovulncheckvulncheck.com/xdb/2d17c8128624não verificadovulncheckvulncheck.com/xdb/20accf3817fanão verificadovulncheckvulncheck.com/xdb/3f8ffc5be01fnão verificadovulncheckvulncheck.com/xdb/b98563f18c75não verificadovulncheckvulncheck.com/xdb/ba950aab55adnão verificadovulncheckvulncheck.com/xdb/c982d62ac774não verificadovulncheckvulncheck.com/xdb/7f595932a60cnão verificadovulncheckvulncheck.com/xdb/f1130a964b4fnão verificadovulncheckvulncheck.com/xdb/94d4cd3e1504não verificadovulncheckvulncheck.com/xdb/01a71759b184não verificadovulncheckvulncheck.com/xdb/ae290b96b916não verificadovulncheckvulncheck.com/xdb/a06a094eaf77não verificadovulncheckvulncheck.com/xdb/5978e9609a96não verificadocve_referencepacketstormsecurity.com/files/167011/Spring4Shell-Spring-Framework-Class-Property-Remote-Code-Execution.htmlnão verificadovulncheckvulncheck.com/xdb/813cebc364f3não verificadocve_referencepacketstormsecurity.com/files/166713/Spring4Shell-Code-Execution.htmlnão verificadovulncheckvulncheck.com/xdb/7c26b11a86f0não verificadovulncheckvulncheck.com/xdb/cb8af208c905não verificadovulncheckvulncheck.com/xdb/079a4eabc6cbnão verificadovulncheckvulncheck.com/xdb/6db677f753b7não verificadovulncheckvulncheck.com/xdb/4b35b8084b29não verificadovulncheckvulncheck.com/xdb/a73d53d733d9não verificadovulncheckvulncheck.com/xdb/29679c6bfbb1não verificadovulncheckvulncheck.com/xdb/fabec78da0ffnão verificadovulncheckvulncheck.com/xdb/e2354921ce12não verificadovulncheckvulncheck.com/xdb/5e9e936704a6não verificadovulncheckvulncheck.com/xdb/16356d1c89dbnão verificadovulncheckvulncheck.com/xdb/dd66e42c90b5não verificadovulncheckvulncheck.com/xdb/c3b4b774db0enão verificadovulncheckvulncheck.com/xdb/0560b073b083não verificadovulncheckvulncheck.com/xdb/30d6ff807f1fnão verificadovulncheckvulncheck.com/xdb/6f90b74eefe8não verificadovulncheckvulncheck.com/xdb/8b60ecb426c1não verificadovulncheckvulncheck.com/xdb/95e0360c39a0não verificadovulncheckvulncheck.com/xdb/303de791b29cnão verificado
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.