CVE-2017-5638 Apache Struts
| Affected software | Apache Struts |
|---|---|
| Severity | 9.8 Critical CVSS 3.1 3 scores |
| Fixed in | 2.3.32, 2.5.10.1 |
| Weakness | Improper input validation (CWE-20) |
| Published | 11 Mar 2017 |
| Updated | 17 Jun 2026 |
Description
The Jakarta Multipart parser in Apache Struts 2 2.3.x before 2.3.32 and 2.5.x before 2.5.10.1 has incorrect exception handling and error-message generation during file-upload attempts, which allows remote attackers to execute arbitrary commands via a crafted Content-Type, Content-Disposition, or Content-Length HTTP header, as exploited in the wild in March 2017 with a Content-Type header containing a #cmd= string.
CWE-755
Exploitation status
Exploited
Confirmed real-world exploitation.
Exploitation status
- CISA KEV listed Confirmed exploitation in the wild. Added 2021-11-03 · remediation due 2022-05-03 · ransomware use: known
- VulnCheck KEV listed Exploitation reported in the wild. 48 citations · honeypot sightings · 70 exploits · earliest 2017-03-11.
- CISA Vulnrichment exploitation: active CISA records active exploitation. Automatable: yes, technical impact: total.
- Indexed PoC 77 indexed Published artifacts you can open, in Exploit-DB, GitHub PoC, Metasploit, Nuclei; first seen 2017-03-07.
- EPSS 99.9% chance in 30 days A model's forecast, not a report of exploitation. Higher than 99.9% of all scored CVEs.
VulnCheck KEV
Exploitation evidence from VulnCheck Known Exploited Vulnerabilities (VulnCheck KEV), used under VulnCheck's community terms. View CVE-2017-5638 in VulnCheck (free account), which lists 43 more citations and 65 more exploit references not shown here.
| Evidence | Source | Detail | Date |
|---|---|---|---|
| Honeypot sighting | Shadowserver honeypots | Exploitation attempts seen on 554 days | 2023-11-18 to 2026-11-12 |
| Reported exploitation | cve.org | /CVERecord?id=CVE-2017-5638 | 2017-03-11 |
| Reported exploitation | f5.com | /labs/articles/threat-intelligence/from-ddos-to-server-ransomware-apache-struts-2-cve-2017-5638-campaign-25922 | 2017-03-27 |
| Reported exploitation | isc.sans.edu | /diary/Java+Struts2+Vulnerability+Used+To+Install+Cerber+Crypto+Ransomware/22264 | 2017-04-06 |
| Reported exploitation | trendmicro.com | /vinfo/us/security/news/vulnerabilities-and-exploits/2017-notable-vulnerabilities-and-exploits | 2017-12-06 |
| Reported exploitation | cisa.gov | /news-events/ics-alerts/ics-alert-14-281-01 | 2018-08-23 |
| Exploit reference | VulnCheck XDB a920eeb5ee6a | Exploit type: initial-access | 2017-03-07 |
| Exploit reference | VulnCheck XDB 92baced400a4 | Exploit type: initial-access | 2017-03-10 |
| Exploit reference | VulnCheck XDB b5c1ab2d5bc5 | Exploit type: initial-access | 2017-03-10 |
| Exploit reference | VulnCheck XDB df60c287f1cd | Exploit type: initial-access | 2017-03-10 |
| Exploit reference | VulnCheck XDB 38dd7dd03007 | Exploit type: initial-access | 2017-03-11 |
| Index | Artifact | Stars | First seen |
|---|---|---|---|
| GitHub PoC | An exploit for Apache Struts CVE-2017-5638 | 445 | 2017-03-12 |
| Nuclei | Apache Struts 2 - Remote Command Execution | ||
| Exploit-DB | Apache Struts 2.3.5 < 2.3.31 / 2.5 < 2.5.10 - 'Jakarta' Multipart Parser OGNL Injection (Metasploit) | 2017-03-15 | |
| Metasploit | Apache Struts Jakarta Multipart Parser OGNL Injection (excellent rank) | ||
| GitHub PoC | Struts2 S2-045(CVE-2017-5638)Exp with GUI | 61 | 2017-03-07 |
| Exploit-DB | Apache Struts 2.3.5 < 2.3.31 / 2.5 < 2.5.10 - Remote Code Execution | 2017-03-07 | |
| GitHub PoC | Demo Application and Exploit | 34 | 2017-03-10 |
| GitHub PoC | S2-045 漏洞 POC-TOOLS CVE-2017-5638 | 25 | 2017-03-09 |
| GitHub PoC | Struts2 S2-045(CVE-2017-5638)Vulnerability environment - http://www.mottoin.com/97954.html | 23 | 2017-03-07 |
| GitHub PoC | Example PoC Code for CVE-2017-5638 | Apache Struts Exploit | 22 | 2017-03-10 |
Waratek protection
Waratek has a rule that blocks attacks on this vulnerability.
- Protection full
- Action available patch rule
- Review human ARMR file
- Record active
| Decided by | An ARMR patch file on disk for this CVE |
|---|---|
| Finding | CVE has an ARMR patch rule that provides mitigation |
ARMR rule files
1 fileThe rule files Waratek ships for this CVE. Some CVEs need more than one, for example one per affected library or one per ARMR version.
CVE-2017-5638.armr patch rule, ARMR 2.6 added 2019-11-26 updated 2026-03-04How to mitigate CVE-2017-5638
Upgrade Apache Struts to a release that fixes it: 2.3.32 or 2.5.10.1. Until you can, Waratek RASP blocks exploitation with a rule written for this CVE. It runs inside the Java application, with no code changes.
CVSS
9.8 CRITICAL
v3.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
3 metrics
CVSS
9.8 CRITICAL v3.1CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
3 metrics
We show the highest score from the newest CVSS version. Scores from different versions can't be compared, and the first score listed is sometimes a 0.0 placeholder.
| Version | Score | Band | Vector | Assigner | Type | |
|---|---|---|---|---|---|---|
| CVSS 3.1 | 9.8 | CRITICAL | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
NVD | Primary | published |
| CVSS 3.1 | 9.8 | CRITICAL | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
CISA-ADP | Secondary | |
| CVSS 2.0 | 10.0 | none | AV:N/AC:L/Au:N/C:C/I:C/A:C |
NVD | Primary |
Affected software and releases
Oracle advisories
| Advisory | Type | Quarter | Products Oracle names in its risk matrix |
|---|---|---|---|
| Oracle Critical Patch Update July 2017 ↗ | CPU | 2017-Q3 | Oracle Fusion Middleware / Sample apps (Struts 2) (10.3.6.0, 12.1.3.0, 12.2.1.1, 12.2.1.2) |
| Oracle Critical Patch Update April 2017 ↗ | CPU | 2017-Q2 | Oracle Communications Applications / Security (Struts 2) (12.2) Oracle Financial Services Applications / Core (Struts 2) (1.5.0, 1.5.1, 8.0.1, 8.0.2, 8.0.3, 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (12.0.1, 12.0.2, 12.0.3, 12.1.0) Oracle Financial Services Applications / Core (Struts 2) (6.0.0, 6.1.0, 6.1.1, 8.0.1, 8.0.2, 8.0.3, 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (6.0.0, 6.1.0, 6.1.1, 8.0.1, 8.0.2, 8.0.3, 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (6.0.0, 6.1.0, 6.1.1, 8.0.1, 8.0.2, 8.0.3, 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (6.1.1, 8.0.1, 8.0.2, 8.0.3, 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (6.1.2, 6.1.3, 8.0.2, 8.0.3) Oracle Financial Services Applications / Core (Struts 2) (6.1.2, 6.1.3, 8.0.2, 8.0.3) Oracle Financial Services Applications / Core (Struts 2) (7.3.3, 7.3.4, 7.3.5) Oracle Financial Services Applications / Core (Struts 2) (8.0.0 to 8.0.3) Oracle Financial Services Applications / Core (Struts 2) (8.0.0 to 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (8.0.0 to 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (8.0.0 to 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (8.0.0 to 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (8.0.0, 8.0.1, 8.0.2) Oracle Financial Services Applications / Core (Struts 2) (8.0.1, 8.0.2, 8.0.3, 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (8.0.1, 8.0.2, 8.0.3, 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (8.0.1, 8.0.2, 8.0.3, 8.0.4) Oracle Financial Services Applications / Core (Struts 2) (8.0.1, 8.0.2, 8.0.4) Oracle Fusion Middleware / Samples (Struts 2) (10.3.6.0, 12.1.3.0, 12.2.1.0, 12.2.1.1, 12.2.1.2) Oracle Fusion Middleware / Third Party Tools (Struts 2) (11.1.1.8.0, 12.2.1.0.0, 12.2.1.1.0, 12.2.1.2.0) Oracle MySQL / Monitoring: General (Struts 2) (3.1.6.8003 and earlier, 3.2.1182 and earlier, 3.3.2.1162 and earlier,) Oracle Retail Applications / Internal Operations (Struts 2) (10.0.1, 10.5.0, 10.6.0, 10.7.0, 10.8.0, 10.8.1) Oracle Siebel CRM / Security (Struts 2) (6.1, 6.2, 7.0, 7.1) |
Oracle components and versions
| Family | Component | Versions, as Oracle lists them | Read as |
|---|---|---|---|
| Oracle Communications Applications | Security (Struts 2) | 12.2 | 12.2 |
| Oracle Financial Services Applications | Core (Struts 2) | 1.5.0, 1.5.1, 8.0.1, 8.0.2, 8.0.3, 8.0.4 | 1.5.0 · 1.5.1 · 6.0.0 · 6.1.0 · 6.1.1 · 6.1.2 · 6.1.3 · 7.3.3 · 7.3.4 · 7.3.5 · 8.0.0 · 8.0.0.8.0.3 · 8.0.0.8.0.4 · 8.0.1 · 8.0.2 · 8.0.3 · 8.0.4 · 12.0.1 · 12.0.2 · 12.0.3 · 12.1.0 |
| Oracle Fusion Middleware | Sample apps (Struts 2) | 10.3.6.0, 12.1.3.0, 12.2.1.1, 12.2.1.2 | 10.3.6.0 · 12.1.3.0 · 12.2.1.1 · 12.2.1.2 |
| Oracle Fusion Middleware | Samples (Struts 2) | 10.3.6.0, 12.1.3.0, 12.2.1.0, 12.2.1.1, 12.2.1.2 | 10.3.6.0 · 12.1.3.0 · 12.2.1.0 · 12.2.1.1 · 12.2.1.2 |
| Oracle Fusion Middleware | Third Party Tools (Struts 2) | 11.1.1.8.0, 12.2.1.0.0, 12.2.1.1.0, 12.2.1.2.0 | 11.1.1.8.0 · 12.2.1.0.0 · 12.2.1.1.0 · 12.2.1.2.0 |
| Oracle MySQL | Monitoring: General (Struts 2) | 3.1.6.8003 and earlier, 3.2.1182 and earlier, 3.3.2.1162 and earlier, | |
| Oracle Retail Applications | Internal Operations (Struts 2) | 10.0.1, 10.5.0, 10.6.0, 10.7.0, 10.8.0, 10.8.1 | 10.0.1 · 10.5.0 · 10.6.0 · 10.7.0 · 10.8.0 · 10.8.1 |
| Oracle Siebel CRM | Security (Struts 2) | 6.1, 6.2, 7.0, 7.1 | 6.1 · 6.2 · 7.0 · 7.1 |
Maven packages
Affected and fixed versions, from OSV.dev| Package | Introduced | Fixed | Last affected |
|---|---|---|---|
org.apache.struts:struts2-core |
2.3.0 | 2.3.32 |
unbounded |
org.apache.struts:struts2-core |
2.5.0 | 2.5.10.1 |
unbounded |
Products and versions
10 products, 23 version entries| Source | Vendor | Product | Scheme | Affected versions |
|---|---|---|---|---|
| nvd | apache | struts | generic | ≥ 2.2.3 and < 2.3.32 · ≥ 2.5.0 and < 2.5.10.1 |
| nvd | arubanetworks | clearpass policy manager | generic | < 6.6.5 |
| nvd | hp | server automation | generic | 9.1.0 · 10.0.0 · 10.1.0 · 10.2.0 · 10.5.0 |
| nvd | ibm | storwize v3500 firmware | generic | 7.7.1.6 · 7.8.1.0 |
| nvd | ibm | storwize v5000 firmware | generic | 7.7.1.6 · 7.8.1.0 |
| nvd | ibm | storwize v7000 firmware | generic | 7.7.1.6 · 7.8.1.0 |
| nvd | lenovo | storage v5030 firmware | generic | 7.7.1.6 · 7.8.1.0 |
| nvd | netapp | oncommand balance | generic | any version |
| nvd | oracle | weblogic server | generic | 10.3.6.0.0 · 12.1.3.0.0 · 12.2.1.1.0 · 12.2.1.2.0 |
| osv | org.apache.struts | struts2-core | generic | ≥ 2.3.0 and < 2.3.32 · ≥ 2.5.0 and < 2.5.10.1 |
References
Timeline
Timeline
| Published | 2017-03-11 | By the CVE Program. |
|---|---|---|
| VulnCheck KEV: earliest evidence | 2017-03-11 | Date of the oldest evidence of exploitation in VulnCheck KEV's record. VulnCheck does not publish the date it listed the CVE. |
| ARMR remediation created | 2019-11-26 | Earliest commit adding this CVE's ARMR patch or security rule. |
| Added to CISA KEV | 2021-11-03 | Listed in CISA's Known Exploited Vulnerabilities catalog. |
| 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. |
| VulnCheck KEV: latest evidence | 2026-11-12 | Date of the newest report, exploit reference or honeypot sighting in VulnCheck KEV's record. |