CVE-2017-9805
KEV PoC massXML Deserialization RCE in Apache Struts 2 REST Plugin
CISA: Apache Struts Deserialization of Untrusted Data Vulnerability
CVE-2017-9805 is an unsafe deserialization vulnerability in the REST plugin of Apache Struts 2, which uses the XStream library to deserialize XML request payloads without any type filtering. An attacker triggers it by sending a crafted XML payload to an endpoint handled by the REST plugin, causing the payload to be deserialized into arbitrary objects. Successful exploitation yields remote code execution on the server with the privileges of the web application, typically enough to fully take over the host. Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 are affected, including products from Cisco and NetApp that bundle vulnerable Struts versions. The flaw has a public proof-of-concept exploit, is on CISA's Known Exploited Vulnerabilities catalog, and was reported as under active exploitation after its 2017 disclosure, although the Apache Foundation disputed suggestions that this specific flaw was used in the Equifax breach.
What to do: Upgrade Apache Struts to 2.3.34, 2.5.13, or later, or apply the fixed updates for any Cisco or NetApp product that embeds Struts per their advisories. If patching is not immediate, remove or disable the REST plugin, or restrict the XML content types it accepts. Inventory internet-facing applications for Struts REST endpoints and hunt for suspicious XML POSTs, since the CVE is on the CISA KEV list and was reported as actively exploited.
| Apache Struts 2 (REST plugin) | 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 |
| Cisco Digital Media Manager | Bundled Struts within affected ranges (2.1.1 to 2.3.33 or 2.5.0 to 2.5.12); exact product versions per Cisco advisory |
| Cisco Hosted Collaboration Solution | Bundled Struts within affected ranges (2.1.1 to 2.3.33 or 2.5.0 to 2.5.12); exact product versions per Cisco advisory |
| Cisco Media Experience Engine | Bundled Struts within affected ranges (2.1.1 to 2.3.33 or 2.5.0 to 2.5.12); exact product versions per Cisco advisory |
| Cisco Network Performance Analysis | Bundled Struts within affected ranges (2.1.1 to 2.3.33 or 2.5.0 to 2.5.12); exact product versions per Cisco advisory |
| Cisco Video Distribution Suite for Internet Streaming | Bundled Struts within affected ranges (2.1.1 to 2.3.33 or 2.5.0 to 2.5.12); exact product versions per Cisco advisory |
| NetApp OnCommand Balance | Bundled Struts within affected ranges (2.1.1 to 2.3.33 or 2.5.0 to 2.5.12); exact product versions per NetApp advisory |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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.
- Affected
- Apache Struts
- Required action
- Apply updates per vendor instructions.
- Due date
- Ransomware use
- Unknown