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)
A fix is available — apply it.
- CVSS v3
- 9.8
- EG Score
- 9.8CRITICALhigh confidence
- EG Risk
- 99EG Risk 99/100CISA SSVC
EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).
How it’s computedSeverity98% × 45%Exploitation100% × 40%Automatability100% × 15%CISA SSVC: Attend at low mission impact; Act at medium or high.Action: A fix is available. Apply it sooner than your standard update timelines at low mission impact and as soon as possible at medium or high. - EPSS PROB
- 100%
- EPSS %ILE
- 99th
- KEV
- ⚠ Exploited
CISA SSVCAttend at low mission impact; Act at medium or high.
A fix is available. Apply it sooner than your standard update timelines at low mission impact and as soon as possible at medium or high.
Exploitation active (CISA Vulnrichment) · Automatable yes (CISA Vulnrichment) · Technical impact total (CISA Vulnrichment). Mission impact is CISA's Mission & Well-being decision point, and only you can judge it: high means the affected system is essential to your organisation's mission, or its compromise could cause irreversible harm to people. CISA's decision table
Published
March 11, 2017
Last Modified
June 17, 2026
Advisory Details (8)
Auto-updated Oct 6, 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 | eWeek
http://www.eweek.com/security/apache-struts-vulnerability-under-attack.htmlContent-Type: Malicious - New Apache Struts2 0-day Under Attack
http://blog.talosintelligence.com/2017/03/apache-0-day-exploited.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/Affected Packages
(1 across 1 ecosystem)
Maven(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| org.apache.struts:struts2-core | 2.5 ... 2.5.8 (6 versions) |
| — |
Weakness Classification(1)
MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.
Data Freshness Timeline
(refreshed 0× in last 7d / 13× 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-09-28 23:46 UTCEG score recompute
- 2026-09-27 21:51 UTCCISA KEV update
- 2026-09-25 19:35 UTCCISA KEV update
- 2026-09-25 14:55 UTCCISA KEV update
- 2026-09-24 19:31 UTCCISA KEV update
- 2026-09-22 19:36 UTCCISA KEV update
- 2026-09-21 19:09 UTCCISA KEV update
- 2026-09-18 19:20 UTCCISA KEV update
- 2026-09-18 14:15 UTCCISA KEV update
- 2026-09-16 14:10 UTCCISA KEV update
- 2026-09-14 19:24 UTCCISA KEV update
- 2026-09-11 18:49 UTCCISA KEV update
- 2026-09-10 19:28 UTCCISA KEV update
- 2026-09-09 19:08 UTCCISA KEV update
- 2026-09-08 18:54 UTCCISA KEV update
- 2026-09-04 17:38 UTCCISA KEV update
- 2026-09-02 17:33 UTCCISA KEV update
- 2026-08-31 14:19 UTCCISA KEV update
- 2026-08-27 17:22 UTCCISA KEV update
- 2026-08-26 17:41 UTCCISA KEV update
- 2026-08-24 18:52 UTCCISA KEV update
- 2026-08-21 16:49 UTCCISA KEV update
- 2026-08-20 17:06 UTCCISA KEV update
- 2026-08-19 17:33 UTCCISA KEV update
- 2026-08-18 16:58 UTCCISA KEV update
Show 69 moreShow fewer
- 2026-08-17 13:56 UTCCISA KEV update
- 2026-08-11 19:32 UTCCISA KEV update
- 2026-08-07 17:09 UTCCISA KEV update
- 2026-08-05 17:25 UTCCISA KEV update
- 2026-08-04 17:02 UTCCISA KEV update
- 2026-08-03 19:22 UTCCISA KEV update
- 2026-07-30 09:56 UTCEG score recompute
- 2026-07-29 19:27 UTCCISA KEV update
- 2026-07-27 19:24 UTCCISA KEV update
- 2026-07-27 17:17 UTCCISA KEV update
- 2026-07-26 10:49 UTCEG score recompute
- 2026-07-23 01:29 UTCEG score recompute
- 2026-07-22 21:49 UTCEG score recompute
- 2026-07-22 19:40 UTCCISA KEV update
- 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
- 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 (2 Metasploit modules) (6 GitHub PoCs) (2 Exploit-DB entries). Defenders should treat patch urgency accordingly — public PoCs typically lead to mass-exploitation within 24-72 hours.
- 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 ↗ - 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 ↗ - Metasploitexploit/multi/http/struts2_content_type_ognl✓ verifiedFirst seen Mar 7, 2017
Apache Struts Jakarta Multipart Parser OGNL Injection
Open source ↗ - 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 ↗ - GitHub PoCjrrdev/cve-2017-5638First seen Mar 15, 2017
cve-2017-5638 Vulnerable site sample
Open source ↗ - GitHub PoCmazen160/struts-pwnFirst seen Mar 12, 2017
An exploit for Apache Struts CVE-2017-5638
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 PoCimmunio/apache-struts2-CVE-2017-5638First seen Mar 10, 2017
Demo Application and Exploit
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
Related CVEs(same product + same CWE)
Same product
10 shownMaven:org.apache.struts:struts2-core
- CVE-2013-4316EG 10.0EPSS p95HIGH
- CVE-2012-0838EG 10.0EPSS p96HIGH
- CVE-2024-53677EG 9.8EPSS p99CRITICAL
- CVE-2023-50164EG 9.8EPSS p100CRITICAL
- CVE-2021-31805EG 9.8EPSS p100CRITICAL
- CVE-2020-17530EG 9.8 KEVEPSS p100CRITICAL
- CVE-2019-0230EG 9.8EPSS p100CRITICAL
- CVE-2011-3923EG 9.8EPSS p100CRITICAL
- CVE-2017-12611EG 9.8EPSS p100CRITICAL
- CVE-2016-4436EG 9.8EPSS p94CRITICAL
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.