The Struts 1 plugin in Apache Struts 2.1.x and 2.3.x might allow remote code execution via a malicious field value passed in a raw message to the ActionMessage.
CVE-2017-9791
Score elevated to 9.8 because this CVE is listed on the CISA Known Exploited Vulnerabilities catalog (added 2022-02-10), 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
- 99.9%
- KEV
- ⚠ Exploited
Published
July 10, 2017
Last Modified
April 21, 2026
Advisory Details (5)
Auto-updated Apr 30, 2026S2-048 - Apache Struts 2 Wiki - Apache Software Foundation
http://struts.apache.org/docs/s2-048.htmlApache Struts 2 - Struts 1 Plugin Showcase OGNL Code Execution (Metasploit) - Multiple remote Exploit
https://www.exploit-db.com/exploits/44643/Apache Struts 2.3.x Showcase - Remote Code Execution - Multiple webapps Exploit
https://www.exploit-db.com/exploits/42324/Patch Availability(1)
| Vendor / Ecosystem | Fixed in / Patch | Released | Source |
|---|---|---|---|
| maven | org.apache.struts:struts2-struts1-plugin | — | ghsa |
Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.
Affected Packages
(1 across 1 ecosystem)
Maven(1)
| Package | Vulnerable range | Fixed in | Dependents |
|---|---|---|---|
| org.apache.struts:struts2-struts1-plugin | 2.0.11 ... 2.3.8 (55 versions) | — | — |
Weakness Classification(1)
MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.
Data Freshness Timeline
(refreshed 94× in last 7d / 392× 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.
Showing the most recent 100 of 598 total refreshes for this CVE.
- 2026-07-12 17:15 UTCEG score recompute
- 2026-07-12 17:15 UTCGHSA enrichment
- 2026-07-12 13:28 UTCEG score recompute
- 2026-07-12 13:28 UTCGHSA enrichment
- 2026-07-12 09:40 UTCEG score recompute
- 2026-07-12 09:40 UTCGHSA enrichment
- 2026-07-12 05:53 UTCEG score recompute
- 2026-07-12 05:53 UTCGHSA enrichment
- 2026-07-12 02:06 UTCEG score recompute
- 2026-07-12 02:06 UTCGHSA enrichment
- 2026-07-11 22:18 UTCEG score recompute
- 2026-07-11 22:18 UTCGHSA enrichment
- 2026-07-11 18:31 UTCEG score recompute
- 2026-07-11 18:31 UTCGHSA enrichment
- 2026-07-11 14:44 UTCEG score recompute
- 2026-07-11 14:44 UTCGHSA enrichment
- 2026-07-11 10:57 UTCEG score recompute
- 2026-07-11 10:57 UTCGHSA enrichment
- 2026-07-11 08:24 UTCEPSS rescore
- 2026-07-11 07:10 UTCEG score recompute
- 2026-07-11 07:09 UTCGHSA enrichment
- 2026-07-11 03:22 UTCEG score recompute
- 2026-07-11 03:22 UTCGHSA enrichment
- 2026-07-10 23:35 UTCEG score recompute
- 2026-07-10 23:34 UTCGHSA enrichment
Show 75 moreShow fewer
- 2026-07-10 19:46 UTCEG score recompute
- 2026-07-10 19:46 UTCGHSA enrichment
- 2026-07-10 17:52 UTCCISA KEV update
- 2026-07-10 16:00 UTCEG score recompute
- 2026-07-10 16:00 UTCGHSA enrichment
- 2026-07-10 12:13 UTCEG score recompute
- 2026-07-10 12:13 UTCGHSA enrichment
- 2026-07-10 08:25 UTCEG score recompute
- 2026-07-10 08:25 UTCGHSA enrichment
- 2026-07-10 04:38 UTCEG score recompute
- 2026-07-10 04:38 UTCGHSA enrichment
- 2026-07-10 00:48 UTCEG score recompute
- 2026-07-10 00:47 UTCGHSA enrichment
- 2026-07-09 20:57 UTCEG score recompute
- 2026-07-09 20:57 UTCGHSA enrichment
- 2026-07-09 17:10 UTCEG score recompute
- 2026-07-09 17:09 UTCGHSA enrichment
- 2026-07-09 13:22 UTCEG score recompute
- 2026-07-09 13:22 UTCGHSA enrichment
- 2026-07-09 09:33 UTCEG score recompute
- 2026-07-09 09:33 UTCGHSA enrichment
- 2026-07-09 05:46 UTCEG score recompute
- 2026-07-09 05:46 UTCGHSA enrichment
- 2026-07-09 01:58 UTCEG score recompute
- 2026-07-09 01:58 UTCGHSA enrichment
- 2026-07-08 22:12 UTCEG score recompute
- 2026-07-08 22:12 UTCGHSA enrichment
- 2026-07-08 18:25 UTCEG score recompute
- 2026-07-08 18:25 UTCGHSA enrichment
- 2026-07-08 14:38 UTCEG score recompute
- 2026-07-08 14:37 UTCGHSA enrichment
- 2026-07-08 10:49 UTCEG score recompute
- 2026-07-08 10:49 UTCGHSA enrichment
- 2026-07-08 07:03 UTCEG score recompute
- 2026-07-08 07:02 UTCGHSA enrichment
- 2026-07-08 03:14 UTCEG score recompute
- 2026-07-08 03:14 UTCGHSA enrichment
- 2026-07-07 23:27 UTCEG score recompute
- 2026-07-07 23:27 UTCGHSA enrichment
- 2026-07-07 19:40 UTCEG score recompute
- 2026-07-07 19:40 UTCGHSA enrichment
- 2026-07-07 19:01 UTCCISA KEV update
- 2026-07-07 17:16 UTCCISA KEV update
- 2026-07-07 15:54 UTCEG score recompute
- 2026-07-07 15:53 UTCGHSA enrichment
- 2026-07-07 12:04 UTCEG score recompute
- 2026-07-07 12:04 UTCGHSA enrichment
- 2026-07-07 08:17 UTCEG score recompute
- 2026-07-07 08:17 UTCGHSA enrichment
- 2026-07-07 04:29 UTCEG score recompute
- 2026-07-07 04:29 UTCGHSA enrichment
- 2026-07-07 00:40 UTCEG score recompute
- 2026-07-07 00:40 UTCGHSA enrichment
- 2026-07-06 20:53 UTCEG score recompute
- 2026-07-06 20:53 UTCGHSA enrichment
- 2026-07-06 17:05 UTCEG score recompute
- 2026-07-06 17:05 UTCGHSA enrichment
- 2026-07-06 16:24 UTCEPSS rescore
- 2026-07-06 16:24 UTCEPSS rescore
- 2026-07-06 13:18 UTCEG score recompute
- 2026-07-06 13:18 UTCGHSA enrichment
- 2026-07-06 09:28 UTCEG score recompute
- 2026-07-06 09:28 UTCGHSA enrichment
- 2026-07-06 05:40 UTCEG score recompute
- 2026-07-06 05:40 UTCGHSA enrichment
- 2026-07-06 01:52 UTCEG score recompute
- 2026-07-06 01:52 UTCGHSA enrichment
- 2026-07-05 22:05 UTCEG score recompute
- 2026-07-05 22:05 UTCGHSA enrichment
- 2026-07-05 18:18 UTCEG score recompute
- 2026-07-05 18:18 UTCGHSA enrichment
- 2026-07-05 14:29 UTCEG score recompute
- 2026-07-05 14:29 UTCGHSA enrichment
- 2026-07-05 10:42 UTCEG score recompute
- 2026-07-05 10:42 UTCGHSA enrichment
Publicly available exploits
(6 references)Working exploit code is in the public domain (1 Metasploit module) (2 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-44643✓ verifiedFirst seen May 17, 2018
Apache Struts 2 - Struts 1 Plugin Showcase OGNL Code Execution (Metasploit)
Open source ↗ - Exploit-DBEDB-42324✓ verifiedFirst seen Jul 7, 2017
Apache Struts 2.3.x Showcase - Remote Code Execution
Open source ↗ - GitHub PoCdragoneeg/Struts2-048First seen Jul 7, 2017
CVE-2017-9791
Open source ↗ - GitHub PoCIanSmith123/s2-048First seen Jul 7, 2017
Apache struts struts 2 048, CVE-2017-9791.
Open source ↗ - Metasploitexploit/multi/http/struts2_code_exec_showcase✓ verifiedFirst seen Jul 7, 2017
Apache Struts 2 Struts 1 Plugin Showcase OGNL Code Execution
Open source ↗ - Nucleihttp/cves/2017/CVE-2017-9791.yamlFirst seen Jan 1, 2017
Apache Struts2 S2-053 - Remote Code Execution
Open source ↗
Related CVEs(same CWE)
Same CWE
10 shownCWE-20
- CVE-2002-2444EG 9.8CRITICAL
- CVE-2005-0116NVD 0.0EG 9.0EPSS 99%NONE
- CVE-2002-1359NVD 0.0EG 9.0EPSS 100%NONE
- CVE-2000-0380NVD 0.0EG 9.0EPSS 98%NONE
- CVE-2000-0258EG 7.5EPSS 97%HIGH
- CVE-2004-2771EG 0.0EPSS 93%NONE
- CVE-2002-2443EG 0.0EPSS 93%NONE
- CVE-2002-2433EG 0.0NONE
- CVE-2003-1569EG 0.0NONE
- CVE-2003-1568EG 0.0NONE
Frequently asked(6)
What is CVE-2017-9791?
When was CVE-2017-9791 disclosed?
Is CVE-2017-9791 actively exploited?
What is the CVSS score of CVE-2017-9791?
Which products are affected by CVE-2017-9791?
How do I remediate CVE-2017-9791?
Dependency Blast Radius
See which npm, PyPI, Go, and Maven packages are affected by CVE-2017-9791
Is Your Infrastructure Affected by CVE-2017-9791?
EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.