Patchfirst
CVE-2017-9805 KEVPublic exploit High · 8.1 EPSS 99.4%

Apache Struts Deserialization of Untrusted Data Vulnerability

Apache · Struts

Summary

A deserialization flaw in the REST Plugin of Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 stems from an XStreamHandler that deserializes XML without any type filtering. An attacker who can send crafted XML payloads to an affected REST endpoint can achieve remote code execution, with the attack complexity noted as high and no authentication or user interaction required.

Official description · NVD

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.

Breakdown
78.7 / 100
Exploited
Yes, in CISA KEV
Reports
0
Tactics
2/15

How an attack unfolds

Based on mappings. Select a step to see the evidence.
  1. How attackers get in

  2. What they do

First seen exploited 4 years after disclosure. Public exploit code (Metasploit) was available 10 days before disclosure.

  1. Public exploit codeMetasploit10 days before
  2. Disclosedday 0
  3. First seen exploitedVulnCheck KEV evidenceAdded to CISA KEVEU database agrees+4 yrs

CISA KEV listing is when exploitation was confirmed, not necessarily the first attack.

6 fixes in struts2-rest-plugin over 4 years. The latest fix listed for struts2-rest-plugin is 2.5.16.

Fixes in struts2-rest-pluginMaven package, by fixed version. Earlier and later fixes in the same package, not necessarily the same bug.

  1. 2.3.15.2CVE-2013-431630 Sep 2013
  2. 2.3.29CVE-2016-44384 Jul 2016
  3. 2.5.13CVE-2017-980515 Sep 2017KEV
  4. 2.5.13CVE-2017-979320 Sep 2017
  5. 2.5.16CVE-2017-157071 Dec 2017
  6. 2.5.16CVE-2018-132727 Mar 2018Latest listed

techniques

2 , grouped by in kill-chain order 2

Initial AccessTA0001

MITRE CTID mapping of the KEV entry · how it is exploited

CVE-2017-9805 is a deserialization vulnerability in the Apache Struts REST Plugin that could allow an attacker to execute arbitrary commands remotely on the affected systems by sending a specially crafted web request to the application.

ExecutionTA0002

MITRE CTID mapping of the KEV entry · primary impact

Detection

0 rules for this CVE · 244 general rules for its techniques

Rules for this CVE

0 that reference CVE-2017-9805 directly.

CVE-specific rules are not available in this build. Search SigmaHQ ↗

Sigma rules © SigmaHQ, Detection Rule License 1.1; linked, not reproduced.

Am I affected? What do I upgrade to?

From GitHub Security Advisories and OSV

1 package in 1 ecosystem. Main package: org.apache.struts:struts2-rest-plugin.

Mavenorg.apache.struts:struts2-rest-pluginGHSA-gg9m-fj3v-r58c

Upgrade to 2.5.13 or later

Set the version to 2.5.13 or later in your pom.xml or build.gradle.

The first fix for CVE-2017-9805. No other CVE tracked by Patchfirst affects this package.

Affected versions, by release line

If you runUpgrade to
2.5.0 up to 2.5.132.5.13
2.1.1 up to 2.3.342.3.34

“Up to” means the second version is the fix and is not affected.

Check your lockfile against all CVEs

What security researchers reported

Not named in any threat report yet

Also mentioned in 50 community threat pulses (AlienVault OTX)

Weaker evidence

Pulses are indicator collections that anyone can publish. A mention is not confirmation of exploitation.

References

13 links, grouped by NVD tag (12 duplicates merged)
↑ ↓ chooseEnter openEsc close