CVE-2017-9805
REST Plugin in Apache Struts uses an XStreamHandler with an instance of XStream for deserialization without any type filtering
The REST Plugin in Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to Remote Code Execution when deserializing XML payloads.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
8.1
The REST Plugin in Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to Remote Code Execution when deserializing XML payloads.
- Record
CVE-2017-9805- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS 2.0
- 6.8 Medium
AV:N/AC:M/Au:N/C:P/I:P/A:P - Weakness
- CWE-502
- Updated
- 2026-11-02
CVE List
8.1
The REST Plugin in Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to Remote Code Execution when deserializing XML payloads.
- Record
CVE-2017-9805- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
EUVDEUVD-2018-0602
8.1
The REST Plugin in Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to Remote Code Execution when deserializing XML payloads.
- Record
EUVD-2018-0602- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-gg9m-fj3v-r58c
8.1
REST Plugin in Apache Struts uses an XStreamHandler with an instance of XStream for deserialization without any type filtering
The REST Plugin in Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to Remote Code Execution when deserializing XML payloads.
- Record
GHSA-gg9m-fj3v-r58c- CVSS 3.0
- 8.1 High
CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H/E:H - Weakness
- CWE-502
- Updated
- 2026-11-02
CISA KEV No score
Apache Struts Deserialization of Untrusted Data Vulnerability
Apache Struts REST Plugin uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to remote code execution when deserializing XML payloads.
- Record
CVE-2017-9805- Weakness
- CWE-502
- Updated
- 2026-11-02
OSV
8.1
The REST Plugin in Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to Remote Code Execution when deserializing XML payloads.
- Record
CVE-2017-9805- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-gg9m-fj3v-r58c
8.1
REST Plugin in Apache Struts uses an XStreamHandler with an instance of XStream for deserialization without any type filtering
The REST Plugin in Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to Remote Code Execution when deserializing XML payloads.
- Record
GHSA-gg9m-fj3v-r58c- CVSS 3.0
- 8.1 High
CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H/E:H - Weakness
- CWE-502
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
org.apache.struts:struts2-rest-pluginMaven |
2.5.0 up to 2.5.13 | 2.5.13 |
org.apache.struts:struts2-rest-pluginMaven |
2.1.1 up to 2.3.34 | 2.3.34 |
org.apache.struts:struts2-rest-pluginMaven |
2.1.1 up to 2.3.34, plus listed versions 2.1.22.1.62.1.82.1.8.12.2.1 Show 37 moreShow less2.2.1.12.2.32.2.3.12.3.12.3.1.12.3.1.22.3.122.3.142.3.14.12.3.14.22.3.14.32.3.152.3.15.12.3.15.22.3.15.32.3.162.3.16.12.3.16.22.3.16.32.3.202.3.20.12.3.20.32.3.242.3.24.12.3.24.32.3.282.3.28.12.3.292.3.32.3.302.3.312.3.322.3.332.3.42.3.4.12.3.72.3.8 |
2.3.34 |
org.apache.struts:struts2-rest-pluginMaven |
2.5.0 up to 2.5.13, plus listed versions 2.52.5.12.5.102.5.10.12.5.122.5.22.5.52.5.8 |
2.5.13 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| Metasploit | Apache Struts 2 REST Plugin XStream RCE | 2017-09-05 |
| Exploit-DB | Apache Struts 2.5 < 2.5.12 - REST Plugin XStream Remote Code Execution | 2017-09-06 |
| PoC in GitHub | luc10/struts-rce-cve-2017-9805 | 2017-09-06 |
| PoC in GitHub | hahwul/struts2-rce-cve-2017-9805-ruby | 2017-09-07 |
| PoC in GitHub | mazen160/struts-pwn_CVE-2017-9805 | 2017-09-09 |
| PoC in GitHub | Lone-Ranger/apache-struts-pwn_CVE-2017-9805 | 2017-09-10 |
| PoC in GitHub | 0x00-0x00/-CVE-2017-9805 | 2017-11-24 |
| PoC in GitHub | BeyondCy/S2-052 | 2017-11-28 |
| PoC in GitHub | chrisjd20/cve-2017-9805.py | 2017-12-04 |
| PoC in GitHub | UbuntuStrike/struts_rest_rce_fuzz-CVE-2017-9805- | 2019-08-31 |
Show 13 moreShow less
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | UbuntuStrike/CVE-2017-9805-Apache-Struts-Fuzz-N-Sploit | 2019-09-02 |
| PoC in GitHub | AvishkaSenadheera/CVE-2017-9805---Documentation---IT19143378 | 2020-05-12 |
| PoC in GitHub | wifido/CVE-2017-9805-Exploit | 2020-06-11 |
| PoC in GitHub | rvermeulen/apache-struts-cve-2017-9805 | 2020-11-13 |
| PoC in GitHub | jongmartinez/-CVE-2017-9805- | 2020-11-28 |
| PoC in GitHub | z3bd/CVE-2017-9805 | 2021-03-05 |
| PoC in GitHub | agent3137/CVE-2017-9805-Exploit | 2021-04-04 |
| PoC in GitHub | Shakun8/CVE-2017-9805 | 2022-10-03 |
| PoC in GitHub | NoSpaceAvailable/CVE-2017-9805_example_build | 2025-12-13 |
| PoC in GitHub | Fl5xia/CVE-2017-9805 | 2026-01-04 |
| PoC in GitHub | 7s26simon/CVE-2017-9805-S2-052 | 2026-02-28 |
| PoC in GitHub | Experience-rookie/struts-s2-052-deserialization-rce-lab | 2026-03-16 |
| Nuclei | Apache Struts2 S2-052 - Remote Code Execution |
History
| Recorded | Changed | Sources |
|---|---|---|
| exploitation, exploits | ||
| first indexed | CVE List, EUVD, Exploit-DB, GitHub Advisories, CISA KEV, Metasploit, Nuclei, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2017-9805 is a high vulnerability (CVSS 8.1) in Apache Struts, published September 15, 2017. CISA lists it as known to be exploited, since November 3, 2021. EUVD reports exploitation since November 3, 2021. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 99.4%, the 99th percentile. Fixed in org.apache.struts:struts2-rest-plugin 2.5.13.
References
oracle.com/technetwork/security-advisory/alert-cve-2017-9805-3889403.html
struts.apache.org/docs/s2-052.html
securitytracker.com/id/1039263
securityfocus.com/bid/100609
tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20170907-struts2
bugzilla.redhat.com/show_bug.cgi?id=1488482
Show 14 moreShow less
blogs.apache.org/foundation/entry/apache-struts-statement-on-equifax
exploit-db.com/exploits/42627
lgtm.com/blog/apache_struts_CVE-2017-9805
cwiki.apache.org/confluence/display/WW/S2-052
security.netapp.com/advisory/ntap-20170907-0001
kb.cert.org/vuls/id/112992
cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2017-9805
nvd.nist.gov/vuln/detail/CVE-2017-9805
github.com/apache/struts/commit/19494718865f2fb7da5ea363de3822f87fbda26
github.com/apache/struts/commit/6dd6e5cfb7b5e020abffe7e8091bd63fe97c10a
web.archive.org/web/20170909031344/http://www.securityfocus.com/bid/100609
web.archive.org/web/20170922053119/http://www.securitytracker.com/id/1039263
github.com/advisories/GHSA-gg9m-fj3v-r58c
github.com/apache/struts