CVE-2016-9878An issue was discovered in Pivotal Spring Framework before 3.2.18, 4.2.x before 4.2.9, and 4.3.x before 4.3.5. Paths provided to the ResourceServlet were not properly sanitized and as a result exposed to directory traversal attacks.
CWE-22 · Path traversal
No public exploit
Nothing published shows this CVE being exploited, which is not the same as ruling it out. nothing published in 9 years.
CVSS E:U
A Waratek agent blocks this today.
Applicable rule: CVE has an ARMR patch rule that provides mitigation
| Decided by | armr-patch-file : An ARMR patch file on disk for this CVE |
|---|---|
| Finding | CVE has an ARMR patch rule that provides mitigation |
Shipped files covering this CVE. A CVE genuinely takes more than one: separate Maven artifacts hooking different parser classes, the same patch built for two ARMR versions, or a fix at both the framework and the container.
rules/frameworks/spring/CVE-2016-9878/patch/2.6/CVE-2016-9878.armr patch rule added 2020-06-25 updated 2026-03-04app("SPRING"):
requires(version: "ARMR/2.6")
/***************************************************************************
CVE-2016-9878 (SPRING)
CVSS 3.0 Summary:
Base Score | 7.5
Attack Vector | Network
Attack Complexity | Low
Privileges Required | None
User Interaction | None
Scope | Unchanged
Confidentiality Impact | High
Integrity Impact | None
Availability Impact | None
Description:
It was discovered that paths provided to the ResourceServlet were not
properly sanitized and as a result exposed to directory traversal
attacks.
Resources:
https://github.com/spring-projects/spring-framework/pull/1299/commits/e2d6e709c3c65a4951eb096843ee75d5200cfcad
Affected Operating Systems:
Any
Affected Versions:
Spring Framework: 3.2.17, 4.2.8, 4.3.4
Tested Versions:
4.3.4
Protection Provided:
Functional
Patch Version:
1.0
***************************************************************************/
patch("CVE-2016-9878 :01"):
function("org/springframework/web/servlet/ResourceServlet.doInclude(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljava/lang/String;)V",
checksums: ["314cc3d0bf"]) // 4.3.4
callreturn("org/springframework/util/StringUtils.tokenizeToStringArray(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;")
code(language: java, import: ["org.springframework.util.StringUtils"]):
public void patch(JavaFrame frame) {
String[] resourceUrls = (String[]) frame.loadObjectOperand(0);
String[] cleanResourceUrls = new String[resourceUrls.length];
for (int i = 0; i < resourceUrls.length; i++) {
String cleanedUrl = StringUtils.cleanPath(resourceUrls[i]);
cleanResourceUrls[i] = cleanedUrl;
}
frame.storeObjectOperand(0, cleanResourceUrls);
}
endcode
endpatch
endapp
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
2 metrics
VRT selects the newest version's highest entry and
publishes it as cvssScore, newest rather than largest because scores are not comparable
across versions, and highest rather than first because the first entry is frequently a CNA placeholder
scoring 0.0 over NVD's own analysis.
| Version | Score | Band | Vector | Assigner | Type | |
|---|---|---|---|---|---|---|
| CVSS 3.0 | 7.5 | HIGH | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
NVD | Primary | published |
| CVSS 2.0 | 5.0 | no band published | AV:N/AC:L/Au:N/C:P/I:N/A:N |
NVD | Primary |
| Advisory | Type | Quarter | Products Oracle named in risk matrix |
|---|---|---|---|
| Oracle Critical Patch Update July 2018 ↗ | CPU | 2018-Q3 | Oracle Enterprise Manager Products Suite / Framework (Spring Framework) (12.2.2, 12.3.3) Oracle Retail Applications / Install (Spring Framework) (14.0.x, 14.1.x, 15.0.x, 16.0.x) Oracle Retail Applications / Security (14.0, 14.1) Oracle Retail Applications / Security (Spring Framework) (14.0, 14.1) Oracle Retail Applications / Security (Spring Framework) (14.0, 14.1) Oracle Retail Applications / Transaction (Spring Framework) (14.0, 14.1) |
| Oracle Critical Patch Update April 2018 ↗ | CPU | 2018-Q2 | Oracle MySQL / EM Plugin: General (Spring Framework) (3.3.7.3306 and prior, 3.4.5.4248 and prior, 4.0.2.5168 and prior) Oracle Retail Applications / Internal Operations (Spring Framework) (16.0) Oracle Retail Applications / RPAS Fusion Client (Spring Framework) (13.4.3, 14.0.3, 14.1.3) |
| Oracle Critical Patch Update January 2018 ↗ | CPU | 2018-Q1 | Oracle Retail Applications / Operations & Maintenance (Spring Framework) (14.1.3, 15.0.3, 16.0.1) |
| Family | Component | Oracle's version cell (verbatim) | Indexed as |
|---|---|---|---|
| Oracle Enterprise Manager Products Suite | Framework (Spring Framework) | 12.2.2, 12.3.3 | 12.2.2 · 12.3.3 |
| Oracle MySQL | EM Plugin: General (Spring Framework) | 3.3.7.3306 and prior, 3.4.5.4248 and prior, 4.0.2.5168 and prior | |
| Oracle Retail Applications | Install (Spring Framework) | 14.0.x, 14.1.x, 15.0.x, 16.0.x | 14.0 · 14.1 · 15.0 · 16.0 |
| Oracle Retail Applications | Internal Operations (Spring Framework) | 16.0 | 16.0 |
| Oracle Retail Applications | Operations & Maintenance (Spring Framework) | 14.1.3, 15.0.3, 16.0.1 | 14.1.3 · 15.0.3 · 16.0.1 |
| Oracle Retail Applications | RPAS Fusion Client (Spring Framework) | 13.4.3, 14.0.3, 14.1.3 | 13.4.3 · 14.0.3 · 14.1.3 |
| Oracle Retail Applications | Security | 14.0, 14.1 | 14.0 · 14.1 |
| Oracle Retail Applications | Security (Spring Framework) | 14.0, 14.1 | 14.0 · 14.1 |
| Oracle Retail Applications | Transaction (Spring Framework) | 14.0, 14.1 | 14.0 · 14.1 |
| Package Coordinate | Introduced | Fixed | Last affected |
|---|---|---|---|
org.springframework:spring-webmvc |
0 | 3.2.18 |
unbounded |
org.springframework:spring-webmvc |
4.2.0 | 4.2.9 |
unbounded |
org.springframework:spring-webmvc |
4.3.0 | 4.3.5 |
unbounded |
| Source | Vendor | Product | Scheme | Affected Versions |
|---|---|---|---|---|
| osv | org.springframework | spring-webmvc | generic | < 3.2.18 · ≥ 4.2.0 and < 4.2.9 · ≥ 4.3.0 and < 4.3.5 |
| nvd | pivotal software | spring framework | generic | ≤ 3.2.0 · 4.2.0 · 4.3.0 |
| nvd | vmware | spring framework | generic | 3.2.1 · 3.2.2 · 3.2.3 · 3.2.4 · 3.2.5 · 3.2.6 · 3.2.7 · 3.2.8 · 3.2.9 · 3.2.10 · 3.2.11 · 3.2.12 · 3.2.13 · 3.2.14 · 3.2.15 · 3.2.16 · 3.2.17 · 4.2.1 · 4.2.2 · 4.2.3 · 4.2.4 · 4.2.5 · 4.2.6 · 4.2.7 · 4.2.8 · 4.3.1 · 4.3.2 · 4.3.3 · 4.3.4 |
| Published | 2016-12-29 | By the CVE Program. |
|---|---|---|
| ARMR remediation created | 2020-06-25 | Earliest commit adding this CVE's ARMR patch or security rule. |
| ARMR remediation last updated | 2026-03-04 | Most recent commit touching this CVE's ARMR patch or security rule. |
| Last VRT activity | 2026-03-04 | Most recent commit touching this CVE's classification, patch or rule file. |
| NVD record modified | 2026-06-17 | NVD's own last-modified date for this record. |