← volver
CVE-2022-22965criticalbajo ataqueCWE-94

CVE-2022-22965

100Vexday Risk Score

Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.

ssvc Actcvss 9.8epss 100%
de la publicación al arma0 días
Publicada en NVD1 abr
1ª PoC26 mar
metasploit31 mar
CISA KEV+3d
probabilidad de explotación
100%top 1% de las CVE
explotación observada
CISA + VulnCheck
160 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-04-25

Apply updates per vendor instructions.

Resumen

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).

Detalle 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.

Cómo se explota

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.

Versiones

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

Cómo protegerse

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.

Cómo 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.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
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
Productos afectados
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/b352d0391cf6no verificadovulncheckvulncheck.com/xdb/a3bc31588469no verificadovulncheckvulncheck.com/xdb/0e01e1f9bd5ano verificadovulncheckvulncheck.com/xdb/a1ab2e7f37bdno verificadovulncheckvulncheck.com/xdb/cdc0fd2e25dcno verificadovulncheckvulncheck.com/xdb/697638d15686no verificadovulncheckvulncheck.com/xdb/b383e52d60ddno verificadovulncheckvulncheck.com/xdb/30bd37a7b9c8no verificadovulncheckvulncheck.com/xdb/32aee2a0b3b4no verificadovulncheckvulncheck.com/xdb/b2f106eac2b1no verificadovulncheckvulncheck.com/xdb/4ae197406cecno verificadovulncheckvulncheck.com/xdb/3532ae2b1db3no verificadovulncheckvulncheck.com/xdb/44a4aa67f46dno verificadovulncheckvulncheck.com/xdb/a2a434dff59dno verificadovulncheckvulncheck.com/xdb/f697d4d9577bno verificadovulncheckvulncheck.com/xdb/16f47f13dfb3no verificadovulncheckvulncheck.com/xdb/e538f647f0f7no verificadovulncheckvulncheck.com/xdb/43e4620d8285no verificadovulncheckvulncheck.com/xdb/2f1e13cd31bbno verificadovulncheckvulncheck.com/xdb/99a67c155fa1no verificadovulncheckvulncheck.com/xdb/598802190749no verificadovulncheckvulncheck.com/xdb/a99dfc9a1fa0no verificadovulncheckvulncheck.com/xdb/a00bd5404625no verificadovulncheckvulncheck.com/xdb/2fa78259b5d9no verificadovulncheckvulncheck.com/xdb/1d2c273a6a58no verificadovulncheckvulncheck.com/xdb/41c3baef6240no verificadovulncheckvulncheck.com/xdb/c5654abe65ddno verificadovulncheckvulncheck.com/xdb/2d17c8128624no verificadovulncheckvulncheck.com/xdb/20accf3817fano verificadovulncheckvulncheck.com/xdb/3f8ffc5be01fno verificadovulncheckvulncheck.com/xdb/b98563f18c75no verificadovulncheckvulncheck.com/xdb/ba950aab55adno verificadovulncheckvulncheck.com/xdb/c982d62ac774no verificadovulncheckvulncheck.com/xdb/7f595932a60cno verificadovulncheckvulncheck.com/xdb/f1130a964b4fno verificadovulncheckvulncheck.com/xdb/94d4cd3e1504no verificadovulncheckvulncheck.com/xdb/01a71759b184no verificadovulncheckvulncheck.com/xdb/ae290b96b916no verificadovulncheckvulncheck.com/xdb/a06a094eaf77no verificadovulncheckvulncheck.com/xdb/5978e9609a96no verificadocve_referencepacketstormsecurity.com/files/167011/Spring4Shell-Spring-Framework-Class-Property-Remote-Code-Execution.htmlno verificadovulncheckvulncheck.com/xdb/813cebc364f3no verificadocve_referencepacketstormsecurity.com/files/166713/Spring4Shell-Code-Execution.htmlno verificadovulncheckvulncheck.com/xdb/7c26b11a86f0no verificadovulncheckvulncheck.com/xdb/cb8af208c905no verificadovulncheckvulncheck.com/xdb/079a4eabc6cbno verificadovulncheckvulncheck.com/xdb/6db677f753b7no verificadovulncheckvulncheck.com/xdb/4b35b8084b29no verificadovulncheckvulncheck.com/xdb/a73d53d733d9no verificadovulncheckvulncheck.com/xdb/29679c6bfbb1no verificadovulncheckvulncheck.com/xdb/fabec78da0ffno verificadovulncheckvulncheck.com/xdb/e2354921ce12no verificadovulncheckvulncheck.com/xdb/5e9e936704a6no verificadovulncheckvulncheck.com/xdb/16356d1c89dbno verificadovulncheckvulncheck.com/xdb/dd66e42c90b5no verificadovulncheckvulncheck.com/xdb/c3b4b774db0eno verificadovulncheckvulncheck.com/xdb/0560b073b083no verificadovulncheckvulncheck.com/xdb/30d6ff807f1fno verificadovulncheckvulncheck.com/xdb/6f90b74eefe8no verificadovulncheckvulncheck.com/xdb/8b60ecb426c1no verificadovulncheckvulncheck.com/xdb/95e0360c39a0no verificadovulncheckvulncheck.com/xdb/303de791b29cno verificado
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.