Miggo Logo

CVE-2016-1000027:
Spring Framework Unsafe Java Deserialization Vulnerability

9.8

CVSS Score
3.1

Basic Information

EPSS Score
0.97664%
Published
5/24/2022
Updated
6/1/2023
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-webmaven< 6.0.06.0.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability CVE-2016-1000027 concerns unsafe Java deserialization in Pivotal Spring Framework's HTTP invoker components.

  1. Commit 5cbe90b2cd91b866a5a9586e460f311860e11cfa adds explicit Javadoc warnings to HttpInvokerServiceExporter.java about the dangers of Java deserialization. The method readRemoteInvocation(HttpServletRequest, InputStream) within this class is responsible for handling the input stream that is subsequently deserialized. Issue #24434 (referenced in CVE details) specifically mentions 'The readRemoteInvocation method in HttpInvokerServiceExporter.class' as problematic.
  2. Commit 2b051b8b321768a4cfef83077db65c6328ffd60f deprecates SimpleHttpInvokerServiceExporter.java, which provides similar functionality for Sun's HTTP server and also relies on Java deserialization via its readRemoteInvocation(InputStream) method.
  3. Both HttpInvokerServiceExporter and SimpleHttpInvokerServiceExporter extend RemoteInvocationSerializingExporter and utilize its doReadRemoteInvocation(ObjectInputStream) method to perform the actual ois.readObject() call. This method is therefore central to the vulnerability as it's where the untrusted data is deserialized. These three functions are directly involved in the vulnerable deserialization process. The readRemoteInvocation methods are the entry points in the patched/deprecated classes that process the malicious input, and doReadRemoteInvocation is where the critical readObject() call occurs.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

Pivot*l Sprin* *r*m*work ***or* *.*.* su***rs *rom * pot*nti*l r*mot* *o** *x**ution (R**) issu* i* us** *or J*v* **s*ri*liz*tion o* untrust** **t*. **p*n*in* on *ow t** li*r*ry is impl*m*nt** wit*in * pro*u*t, t*is issu* m*y or not o**ur, *n* *ut**n

Reasoning

T** vuln*r**ility *V*-****-******* *on**rns uns*** J*v* **s*ri*liz*tion in Pivot*l Sprin* *r*m*work's *TTP invok*r *ompon*nts. *. *ommit `****************************************` ***s *xpli*it J*v**o* w*rnin*s to `*ttpInvok*rS*rvi***xport*r.j*v*` *