CVE-2016-1000027:
Spring Framework Unsafe Java Deserialization Vulnerability
9.8
CVSS Score
3.1
Basic Information
CVE ID
GHSA ID
EPSS Score
0.97664%
CWE
Published
5/24/2022
Updated
6/1/2023
KEV Status
No
Technology
Java
Technical Details
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
org.springframework:spring-web | maven | < 6.0.0 | 6.0.0 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability CVE-2016-1000027 concerns unsafe Java deserialization in Pivotal Spring Framework's HTTP invoker components.
- Commit
5cbe90b2cd91b866a5a9586e460f311860e11cfa
adds explicit Javadoc warnings toHttpInvokerServiceExporter.java
about the dangers of Java deserialization. The methodreadRemoteInvocation(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. - Commit
2b051b8b321768a4cfef83077db65c6328ffd60f
deprecatesSimpleHttpInvokerServiceExporter.java
, which provides similar functionality for Sun's HTTP server and also relies on Java deserialization via itsreadRemoteInvocation(InputStream)
method. - Both
HttpInvokerServiceExporter
andSimpleHttpInvokerServiceExporter
extendRemoteInvocationSerializingExporter
and utilize itsdoReadRemoteInvocation(ObjectInputStream)
method to perform the actualois.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. ThereadRemoteInvocation
methods are the entry points in the patched/deprecated classes that process the malicious input, anddoReadRemoteInvocation
is where the criticalreadObject()
call occurs.