CVE-2017-9805
Struts REST Plugin XStream RCE: stopped at runtime
Waratek RASP’s secure runtime rules stop this class of attack out of the box - no application change, no vendor patch, no downtime.
Published September 15, 2017 · Updated June 30, 2026
The vulnerability
Remote code execution via unfiltered XStream deserialization
The Struts REST Plugin deserializes XML payloads using an XStreamHandler backed by XStream, without any type filtering. An attacker can submit a crafted XML payload to the REST endpoint to achieve remote code execution.
Running an affected version? We can help.
Waratek RASP shields the vulnerable code in production - the exploit is blocked at runtime with no library upgrade, no redeploy, and no downtime. We can have you covered fast.
How Waratek RASP stops it
Blocked at runtime by Waratek RASP
Waratek RASP applies a secure runtime rule that covers this whole class of attack out of the box - the exploit is stopped inside the JVM before it ever reaches a dangerous sink.
Runtime, not perimeter
Waratek RASP acts inside the JVM at the exact call that turns input into code, so obfuscated and encoded payloads are caught where a WAF misses them.
No code changes
Protection is applied as a rule at runtime. No source edits, no recompilation, no library upgrade, and no application restart required.
Zero false positives
Rules target the specific unsafe behaviour of the exploit, so legitimate traffic keeps flowing while the attack is blocked and logged.
| Mod | Rules | Enable |
|---|---|---|
| Struts REST Plugin XStream RCE protectionCVE-2017-9805 · Unsafe deserialization | 1 | |
| SQL Injection protectionQuery manipulation | 4 | |
| Path Traversal protectionUnsafe file access | 3 |
Flip one toggle in the Waratek Portal. The protection deploys to every attached application, with no restart.
Common questions
Struts REST Plugin XStream RCE FAQ
Is Struts REST Plugin XStream RCE (CVE-2017-9805) exploitable?
CVE-2017-9805 carries a CVSS 8.1/10 (HIGH) rating and affects Apache Struts 2 (REST Plugin) 2.1.1 through 2.3.33, and 2.5 through 2.5.12. The Struts REST Plugin deserializes XML payloads using an XStreamHandler backed by XStream, without any type filtering. An attacker can submit a crafted XML payload to the REST endpoint to achieve remote code execution. It is listed in CISA's Known Exploited Vulnerabilities catalog.
How does Waratek mitigate Struts REST Plugin XStream RCE (CVE-2017-9805)?
Waratek RASP blocks exploitation of Struts REST Plugin XStream RCE (CVE-2017-9805) inside the JVM at runtime, with no application code changes, no vendor patch and no restart.
How quickly was Struts REST Plugin XStream RCE (CVE-2017-9805) exploited after disclosure?
Exploit code for CVE-2017-9805 was already circulating publicly on September 6, 2017, before the vulnerability was even formally published in the NVD. Attackers had a head start before most defenders had a CVE record to react to.
Protect your apps in production
Get protected against Struts REST Plugin XStream RCE - without code changes or redeploying
Book a call and we’ll show you how Waratek RASP shields your running applications against CVE-2017-9805 and attacks like it, and get you covered in production.