Miggo Logo

CVE-2022-22965:
Remote Code Execution in Spring Framework

9.8

CVSS Score

Basic Information

EPSS Score
-
Published
3/31/2022
Updated
1/29/2025
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
org.springframework:spring-beansmaven>= 5.3.0, < 5.3.185.3.18
org.springframework:spring-webmvcmaven>= 5.3.0, < 5.3.185.3.18
org.springframework.boot:spring-boot-starter-webmaven< 2.5.122.5.12
org.springframework.boot:spring-boot-starter-webmaven>= 2.6.0, < 2.6.62.6.6
org.springframework:spring-webfluxmaven>= 5.3.0, < 5.3.185.3.18
org.springframework.boot:spring-boot-starter-webfluxmaven< 2.5.122.5.12
org.springframework.boot:spring-boot-starter-webfluxmaven>= 2.6.0, < 2.6.62.6.6
org.springframework:spring-beansmaven< 5.2.20.RELEASE5.2.20.RELEASE
org.springframework:spring-webmvcmaven< 5.2.20.RELEASE5.2.20.RELEASE
org.springframework:spring-webfluxmaven< 5.2.20.RELEASE5.2.20.RELEASE

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from improper PropertyDescriptor filtering in Spring's data binding mechanism. The commit 002546b shows the original code allowed binding to Class.class properties except 'classLoader'/'protectionDomain' by name, but didn't check property types. Attackers could exploit this by accessing ClassLoader/ProtectionDomain properties through alternative property paths or interface inheritance. The vulnerable functions are directly responsible for processing property descriptors during object binding, making them the root cause of the RCE vulnerability when combined with JDK 9+ and Tomcat WAR deployment.

Vulnerable functions

CachedIntrospectionResults.CachedIntrospectionResults(Class<?>)
spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java
The constructor processes PropertyDescriptors without properly filtering ClassLoader and ProtectionDomain types prior to patching, allowing attackers to bind malicious parameters to these sensitive properties during data binding.
CachedIntrospectionResults.introspectInterfaces
spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java
This method processed interface properties without adequate filtering of ClassLoader/ProtectionDomain types, enabling access to dangerous properties through derived interfaces.

WAF Protection Rules

WAF Rule

Sprin* *r*m*work prior to v*rsions *.*.** *n* *.*.** *ont*ins * r*mot* *o** *x**ution vuln*r**ility known *s `Sprin**S**ll`. ## Imp**t * Sprin* MV* or Sprin* W***lux *ppli**tion runnin* on J*K *+ m*y ** vuln*r**l* to r*mot* *o** *x**ution (R**) vi

Reasoning

T** vuln*r**ility st*ms *rom improp*r Prop*rty**s*riptor *ilt*rin* in Sprin*'s **t* *in*in* m****nism. T** *ommit ******* s*ows t** ori*in*l *o** *llow** *in*in* to *l*ss.*l*ss prop*rti*s *x**pt '*l*ssLo***r'/'prot**tion*om*in' *y n*m*, *ut *i*n't **