Apache Struts 2 framework, versions 2.5 to 2.5.12, with REST plugin insecurely deserializes untrusted XML data. A remote, unauthenticated attacker can leverage this vulnerability to execute arbitrary code in the context of the Struts application.
CWE-502: Deserialization of Untrusted Data - CVE-2017-9805
In Apache Struts 2 framework, versions 2.5 to 2.5.12, the REST plugin uses
XStreamHandler with an instance of XStream to deserialize XML data. Because there is no type filtering, a remote, unauthenticated attacker may send a specially crafted XML payload to execute arbitrary code in the context of the Struts application.
A remote, unauthenticated attacker may send a specially crafted XML payload to execute arbitrary code on vulnerable servers in the context of the Struts application.
Apply an update
The vendor has released version 2.5.13 to address this vulnerability. No workaround is possible according to the vendor, so patching is strongly recommended.
Remove or limit the REST plugin
If it is not used, consider removing the REST plugin. Per the vendor, it is also possible to limit its functionality to normal server pages or JSON with the following configuration change in
<constant name="struts.action.extension" value="xhtml,,json" />
Filter by status: All Affected Not Affected Unknown
Filter by content: __ Vendor has issued information
__ Sort by: Status Alphabetical
Affected Unknown __ Unaffected
Updated: September 06, 2017
No statement is currently available from the vendor regarding this vulnerability.
We are not aware of further vendor information regarding this vulnerability.
Group | Score | Vector
Base | 10.0 | AV:N/AC:L/Au:N/C:C/I:C/A:C
Temporal | 8.3 | E:F/RL:OF/RC:C
Environmental | 8.3 | CDP:ND/TD:H/CR:ND/IR:ND/AR:ND
Man Yue Mo of lgtm is credited with reporting this vulnerability to the vendor.
This document was written by Joel Land.
CVE IDs: | CVE-2017-9805
Date Public: | 2017-09-05
Date First Published: | 2017-09-06
Date Last Updated: | 2017-09-06 13:16 UTC
Document Revision: | 13