CVE-2017-9791 Apache Struts
| Affected software | Apache Struts |
|---|---|
| Severity | 9.8 Critical CVSS 3.1 3 scores |
| Weakness | Improper input validation (CWE-20) |
| Published | 10 Jul 2017 |
| Updated | 13 Nov 2026 |
Description
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.
Exploitation status
Exploited
Confirmed real-world exploitation.
Exploitation status
- CISA KEV listed Confirmed exploitation in the wild. Added 2022-02-10 · remediation due 2022-08-10 · ransomware use: unknown
- VulnCheck KEV listed Exploitation reported in the wild. 2 citations · honeypot sightings · 3 exploits · earliest 2020-06-24.
- CISA Vulnrichment exploitation: active CISA records active exploitation. Automatable: yes, technical impact: total.
- Indexed PoC 8 indexed Published artifacts you can open, in Exploit-DB, GitHub PoC, Metasploit, Nuclei; first seen 2017-07-07.
- EPSS 99% 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-9791 in VulnCheck (free account).
| Evidence | Source | Detail | Date |
|---|---|---|---|
| Honeypot sighting | Shadowserver honeypots | Exploitation attempts seen on 37 days | 2026-09-18 to 2026-11-12 |
| Reported exploitation | unit42.paloaltonetworks.com | /lucifer-new-cryptojacking-and-ddos-hybrid-malware | 2020-06-24 |
| Reported exploitation | cisa.gov | /sites/default/files/feeds/known_exploited_vulnerabilities.json | 2022-02-10 |
| Exploit reference | VulnCheck XDB 8b1dd6d0c703 | Exploit type: initial-access | 2017-07-07 |
| Exploit reference | VulnCheck XDB 2fe7d1498974 | Exploit type: initial-access | 2023-12-20 |
| Exploit reference | VulnCheck XDB bacc4a0c75f1 | Exploit type: initial-access | 2023-12-21 |
| Index | Artifact | Stars | First seen |
|---|---|---|---|
| GitHub PoC | CVE-2017-9791 | 27 | 2017-07-07 |
| GitHub PoC | Apache struts struts 2 048, CVE-2017-9791. | 2 | 2017-07-07 |
| Exploit-DB | Apache Struts 2 - Struts 1 Plugin Showcase OGNL Code Execution (Metasploit) | 2018-05-17 | |
| Exploit-DB | Apache Struts 2 - Struts 1 Plugin Showcase OGNL Code Execution (Metasploit) | 2018-05-17 | |
| GitHub PoC | Metasploit module for Apache Struts CVE-2017-9791 Remote Code Execution Vulnerability | 2017-09-23 | |
| Exploit-DB | Apache Struts 2.3.x Showcase - Remote Code Execution | 2017-07-07 | |
| Metasploit | Apache Struts 2 Struts 1 Plugin Showcase OGNL Code Execution (excellent rank) | ||
| Nuclei | Apache Struts2 S2-053 - Remote Code Execution |
Waratek protection
Waratek has a rule that blocks attacks on this vulnerability.
- Protection full Process
- Action available security rule
- Review human Researcher
- Record active
| Decided by | A researcher's recorded decision for this specific CVE |
|---|---|
| Finding | A researcher found this CVE protected by the ARMR Process rule. |
Waratek research note
written 2026-11-13Written by a Waratek engineer who reviewed this CVE. Their decision sets the status above, ahead of every automated rule except a withdrawal.
Comments
Rule Name: ARMR Process rule
Exploitation forks a process. Blocked by the Process rule in PROTECT mode.
Only stops attacks that start a program; an expression that reads files or data directly in Java is not stopped.
The Marshal rule does not apply: rce() arms only inside a deserialization boundary.
How to mitigate CVE-2017-9791
Apply the vendor's fix for Apache Struts. Until you can, Waratek RASP blocks exploitation with its process rule. 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 | 7.5 | none | AV:N/AC:L/Au:N/C:P/I:P/A:P |
NVD | Primary |
Affected software and releases
Maven packages
Affected and fixed versions, from OSV.dev| Package | Introduced | Fixed | Last affected |
|---|---|---|---|
org.apache.struts:struts2-struts1-plugin |
0 | none | 2.3.37 |
Products and versions
2 products, 34 version entries| Source | Vendor | Product | Scheme | Affected versions |
|---|---|---|---|---|
| nvd | apache | struts | generic | 2.3.1 · 2.3.1.1 · 2.3.1.2 · 2.3.3 · 2.3.4 · 2.3.4.1 · 2.3.7 · 2.3.8 · 2.3.12 · 2.3.14 · 2.3.14.1 · 2.3.14.2 · 2.3.14.3 · 2.3.15 · 2.3.15.1 · 2.3.15.2 · 2.3.15.3 · 2.3.16 · 2.3.16.1 · 2.3.16.2 · 2.3.16.3 · 2.3.20 · 2.3.20.1 · 2.3.20.3 · 2.3.24 · 2.3.24.1 · 2.3.24.3 · 2.3.28 · 2.3.28.1 · 2.3.29 · 2.3.30 · 2.3.31 · 2.3.32 |
| osv | org.apache.struts | struts2-struts1-plugin | generic | ≤ 2.3.37 |
References
Timeline
Timeline
| Published | 2017-07-10 | By the CVE Program. |
|---|---|---|
| VulnCheck KEV: earliest evidence | 2020-06-24 | Date of the oldest evidence of exploitation in VulnCheck KEV's record. VulnCheck does not publish the date it listed the CVE. |
| Added to CISA KEV | 2022-02-10 | Listed in CISA's Known Exploited Vulnerabilities catalog. |
| 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. |
| Classification created | 2026-11-13 | First commit adding this CVE's research note. |
| Last VRT activity | 2026-11-13 | Most recent commit touching this CVE's classification, patch or rule file. |