Patchfirst
CVE-2016-3087 Public exploit EPSS 81.9%

Apache Struts 2.3.19 to 2.3.20.2, 2.3.21 to 2.3.24.1, and 2.3.25 to 2.3.28, when Dynamic Method Invocation is enabled…

Summary

Apache Struts versions 2.3.19 to 2.3.20.2, 2.3.21 to 2.3.24.1, and 2.3.25 to 2.3.28 contain a flaw in the REST Plugin's handling of the "!" (exclamation mark) operator. An attacker with network access to an affected application can execute arbitrary code by sending crafted requests, provided Dynamic Method Invocation is enabled.

Official description · CVE.org

Apache Struts 2.3.19 to 2.3.20.2, 2.3.21 to 2.3.24.1, and 2.3.25 to 2.3.28, when Dynamic Method Invocation is enabled, allow remote attackers to execute arbitrary code via vectors related to an ! (exclamation mark) operator to the REST Plugin.

Breakdown
24.9 / 100
Exploited
Not confirmed
Reports
0
Tactics
0/15

Public exploit code (Metasploit) was available 6 days before disclosure.

  1. Public exploit codeMetasploit6 days before
  2. Disclosedday 0

8 fixes in struts2-core over 18 months. The latest fix listed for struts2-core is 2.5.1.

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

  1. 2.3.28CVE-2016-216212 Apr 2016
  2. 2.3.28CVE-2016-400312 Apr 2016
  3. 2.3.28.1CVE-2016-308126 Apr 2016KEV
  4. 2.3.28.1CVE-2016-308226 Apr 2016
  5. 2.3.28.1CVE-2016-30877 Jun 2016
  6. 2.3.29CVE-2016-44384 Jul 2016
  7. 2.3.29CVE-2016-446116 Oct 2017
  8. 2.5.1CVE-2016-44363 Oct 2016Latest listed

techniques

No techniques linked

No ATT&CK techniques are linked to this CVE yet. MITRE CTID has not mapped it, and no report passage in the corpus ties it to a technique.

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-core.

Mavenorg.apache.struts:struts2-coreGHSA-mmj6-cjj4-hpr5

Upgrade to 2.5.33

Fixes this CVE and 9 other known vulnerabilities in this package (CVE-2016-3081, CVE-2017-12611, +7).

Still affected on this line by CVE-2024-53677 (fixed in 6.4.0, a newer line); CVE-2025-68493 (no fix published).

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

First fixed in 2.3.28.1 for CVE-2016-3087.

Affected versions, by release line

If you runUpgrade to
2.3.25 up to 2.3.28.12.5.33first fix for this CVE: 2.3.28.1
2.3.21 up to 2.3.24.3

Still affected on this line by CVE-2017-12611 (fixed in 2.3.34, a newer line); CVE-2017-5638 (fixed in 2.3.32, a newer line); CVE-2018-11776 (fixed in 2.3.35, a newer line); CVE-2019-0230 (fixed in 2.5.22, a newer line); CVE-2019-0233 (fixed in 2.5.22, a newer line); CVE-2020-17530 (fixed in 2.5.26, a newer line); CVE-2021-31805 (fixed in 2.5.30, a newer line); CVE-2023-50164 (fixed in 2.5.33, a newer line); CVE-2024-53677 (fixed in 6.4.0, a newer line); CVE-2025-68493 (no fix published).

2.3.24.3
2.3.19 up to 2.3.20.3

Still affected on this line by CVE-2017-12611 (fixed in 2.3.34, a newer line); CVE-2017-5638 (fixed in 2.3.32, a newer line); CVE-2018-11776 (fixed in 2.3.35, a newer line); CVE-2019-0230 (fixed in 2.5.22, a newer line); CVE-2019-0233 (fixed in 2.5.22, a newer line); CVE-2020-17530 (fixed in 2.5.26, a newer line); CVE-2021-31805 (fixed in 2.5.30, a newer line); CVE-2023-50164 (fixed in 2.5.33, a newer line); CVE-2024-53677 (fixed in 6.4.0, a newer line); CVE-2025-68493 (no fix published).

2.3.20.3

“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

References

5 links, grouped by NVD tag
↑ ↓ chooseEnter openEsc close