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.
CVE-2017-5638
Score elevated to 9.8 because this CVE is listed on the CISA Known Exploited Vulnerabilities catalog (added 2021-11-03), indicating real-world exploitation has been confirmed by US federal agencies. NVD baseline CVSS 9.8 retained for reference. Confidence: HIGH.
- Actively exploited in the wild (CISA-KEV)
No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.
- CVSS v3
- 9.8
- EG Score
- 9.8(high)
- EPSS
- 100.0%
- KEV
- ⚠ Exploited
Published
March 11, 2017
Last Modified
June 17, 2026
Advisory Details (6)
Auto-updated Apr 29, 2026S2-046 - Apache Struts 2 Wiki - Apache Software Foundation
https://cwiki.apache.org/confluence/display/WW/S2-046S2-045 - Apache Struts 2 Wiki - Apache Software Foundation
https://cwiki.apache.org/confluence/display/WW/S2-045Critical vulnerability under “massive” attack imperils high-impact sites [Updated] - Ars Technica
https://arstechnica.com/security/2017/03/critical-vulnerability-under-massive-attack-imperils-high-impact-sites/Apache Struts Vulnerability Exposes Sites to Attack
http://www.eweek.com/security/apache-struts-vulnerability-under-attack.htmlApache Struts 2 Vulnerability Leads to RCE | Trend Micro (US)
http://blog.trendmicro.com/trendlabs-security-intelligence/cve-2017-5638-apache-struts-vulnerability-remote-code-execution/Content-Type: Malicious - New Apache Struts2 0-day Under Attack
http://blog.talosintelligence.com/2017/03/apache-0-day-exploited.htmlAffected Packages
(1 across 1 ecosystem)
Maven(1)
| Package | Vulnerable range | Fixed in | Dependents |
|---|---|---|---|
| org.apache.struts:struts2-core | 2.5 ... 2.5.8 (6 versions) | 2.5.10.1 | — |
Weakness Classification(1)
MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.
Data Freshness Timeline
(refreshed 3× in last 7d / 15× in last 30d)
Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.
- 2026-07-21 14:37 UTCCISA KEV update
- 2026-07-17 10:46 UTCEG score recompute
- 2026-07-16 17:04 UTCCISA KEV update
- 2026-07-15 16:49 UTCCISA KEV update
- 2026-07-15 15:04 UTCCISA KEV update
- 2026-07-14 18:05 UTCCISA KEV update
- 2026-07-13 17:07 UTCCISA KEV update
- 2026-07-10 17:52 UTCCISA KEV update
- 2026-07-07 19:01 UTCCISA KEV update
- 2026-07-07 17:16 UTCCISA KEV update
- 2026-07-01 19:16 UTCCISA KEV update
- 2026-06-29 19:12 UTCCISA KEV update
- 2026-06-25 19:15 UTCCISA KEV update
- 2026-06-25 13:47 UTCEPSS rescore
- 2026-06-23 17:44 UTCCISA KEV update
- 2026-06-18 16:13 UTCCISA KEV update
- 2026-06-16 19:33 UTCCISA KEV update
- 2026-06-15 19:33 UTCCISA KEV update
- 2026-06-15 17:45 UTCEPSS rescore
- 2026-06-12 23:09 UTCEPSS rescore
- 2026-06-12 17:35 UTCCISA KEV update
- 2026-06-11 19:10 UTCCISA KEV update
- 2026-06-09 18:42 UTCCISA KEV update
- 2026-06-09 17:12 UTCCISA KEV update
- 2026-06-08 19:16 UTCCISA KEV update
Show 30 moreShow fewer
- 2026-06-08 17:26 UTCCISA KEV update
- 2026-06-05 22:43 UTCCISA KEV update
- 2026-06-03 19:09 UTCCISA KEV update
- 2026-06-02 18:32 UTCCISA KEV update
- 2026-06-01 20:42 UTCCISA KEV update
- 2026-05-31 22:28 UTCEPSS rescore
- 2026-05-31 22:28 UTCEPSS rescore
- 2026-05-31 03:25 UTCOSV refresh
- 2026-05-29 22:20 UTCCISA KEV update
- 2026-05-29 13:41 UTCEPSS rescore
- 2026-05-28 13:42 UTCEPSS rescore
- 2026-05-28 13:42 UTCEPSS rescore
- 2026-05-27 20:35 UTCCISA KEV update
- 2026-05-26 19:13 UTCCISA KEV update
- 2026-05-26 13:42 UTCEPSS rescore
- 2026-05-26 13:42 UTCEPSS rescore
- 2026-05-22 21:15 UTCEPSS rescore
- 2026-05-22 21:15 UTCEPSS rescore
- 2026-05-22 21:15 UTCEPSS rescore
- 2026-05-22 21:15 UTCEPSS rescore
- 2026-05-22 21:15 UTCEPSS rescore
- 2026-05-22 19:13 UTCCISA KEV update
- 2026-05-21 22:36 UTCCISA KEV update
- 2026-05-20 17:33 UTCCISA KEV update
- 2026-05-20 11:21 UTCEPSS rescore
- 2026-05-20 11:21 UTCEPSS rescore
- 2026-05-18 21:54 UTCEG score recompute
- 2026-05-18 21:30 UTCEPSS rescore
- 2026-05-18 21:22 UTCCISA KEV update
- 2026-05-18 21:22 UTCCISA KEV update
Publicly available exploits
(10 references)Working exploit code is in the public domain (1 Metasploit module) (7 GitHub PoCs) (2 Exploit-DB entries). Defenders should treat patch urgency accordingly — public PoCs typically lead to mass-exploitation within 24-72 hours.
- GitHub PoCwin3zz/CVE-2017-5638First seen May 13, 2018
Apache Struts 2.3.5 < 2.3.31 / 2.5 < 2.5.10 - Remote Code Execution - Shell Script
Open source ↗ - GitHub PoCjas502n/st2-046-pocFirst seen Mar 21, 2017
st2-046-poc CVE-2017-5638
Open source ↗ - Exploit-DBEDB-41614✓ verifiedFirst seen Mar 15, 2017
Apache Struts 2.3.5 < 2.3.31 / 2.5 < 2.5.10 - 'Jakarta' Multipart Parser OGNL Injection (Metasploit)
Open source ↗ - GitHub PoCjrrdev/cve-2017-5638First seen Mar 15, 2017
cve-2017-5638 Vulnerable site sample
Open source ↗ - GitHub PoCret2jazzy/Struts-Apache-ExploitPackFirst seen Mar 12, 2017
These are just some script which you can use to detect and exploit the Apache Struts Vulnerability (CVE-2017-5638)
Open source ↗ - GitHub PoCmazen160/struts-pwnFirst seen Mar 12, 2017
An exploit for Apache Struts CVE-2017-5638
Open source ↗ - GitHub PoCimmunio/apache-struts2-CVE-2017-5638First seen Mar 10, 2017
Demo Application and Exploit
Open source ↗ - GitHub PoCxsscx/cve-2017-5638First seen Mar 10, 2017
Example PoC Code for CVE-2017-5638 | Apache Struts Exploit
Open source ↗ - Metasploitexploit/multi/http/struts2_content_type_ognl✓ verifiedFirst seen Mar 10, 2017
OGNL injection via Content-Type header — the exploit chain used in the Equifax breach.
Open source ↗ - Exploit-DBEDB-41570✓ verifiedFirst seen Mar 9, 2017
Standalone Python exploit, weaponised within 48h of patch release.
Open source ↗
Past incidents using this CVE
(1)This CVE was central to one or more publicly-documented breaches. Each card links to authoritative reporting at the time of the incident.
- Equifax breach (Apache Struts)Sep 2017147M+ affected
Apache Struts OGNL injection vulnerability — Equifax failed to patch for 2 months, leading to one of the largest PII breaches in history. 147M US consumers exposed.
Source: CSO Online
Frequently asked(6)
What is CVE-2017-5638?
When was CVE-2017-5638 disclosed?
Is CVE-2017-5638 actively exploited?
What is the CVSS score of CVE-2017-5638?
Which products are affected by CVE-2017-5638?
How do I remediate CVE-2017-5638?
Dependency Blast Radius
See which npm, PyPI, Go, and Maven packages are affected by CVE-2017-5638
Is Your Infrastructure Affected by CVE-2017-5638?
EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.