WaratekVRT Sign in

CVE-2016-3087 Apache Struts

Affected softwareApache Struts
Severity9.8 Critical CVSS 3.0 2 scores
Fixed in2.3.20.3, 2.3.24.3, 2.3.28.1
WeaknessImproper input validation (CWE-20)
Published7 Jun 2016
Updated17 Jun 2026

Description

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.

Exploitation status

Working exploit published

A reviewed exploit catalogue lists ready-to-run exploit code for this CVE.

  • CISA KEV not listed
  • VulnCheck KEV not listed
  • CISA Vulnrichment no assessment published
  • Indexed PoC 3 indexed Published artifacts you can open, in Exploit-DB, Metasploit; first seen 2016-06-10.
  • EPSS 82% chance in 30 days A model's forecast, not a report of exploitation. Higher than 99.7% of all scored CVEs.
IndexArtifactStarsFirst seen
Exploit-DB Apache Struts - REST Plugin With Dynamic Method Invocation Remote Code Execution 2017-06-06
Exploit-DB Apache Struts - REST Plugin With Dynamic Method Invocation Remote Code Execution (Metasploit) 2016-06-10
Metasploit Apache Struts REST Plugin With Dynamic Method Invocation Remote Code Execution (excellent rank)

Waratek protection

Mitigation candidate

A kind of vulnerability Waratek's rules address, with exploit code published or exploitation reported. No rule exists and none is planned yet. The decision below says what we found to build a rule from.

  • Protection none
  • Action unverified
  • Review automated Inferred
  • Record active
Decided by The affected package being open source on Maven, so the fix can be read
Finding This CVE affects an open-source Java library published on Maven Central (Maven packages: org.apache.struts:struts2-core), so it is squarely in ARMR's territory and the source needed to understand the defect is public. That makes it a candidate for an ARMR patch rule. No rule exists and none is scheduled: the diff between the affected and fixed versions has not been read, and a closer look may find no hook point ARMR can act on.

CVSS

9.8 CRITICAL v3.0 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 2 metrics

We show the highest score from the newest CVSS version. Scores from different versions can't be compared, and the first score listed is sometimes a 0.0 placeholder.

VersionScoreBandVectorAssignerType
CVSS 3.0 9.8 CRITICAL CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H NVD Primary published
CVSS 2.0 7.5 none AV:N/AC:L/Au:N/C:P/I:P/A:P NVD Primary

Affected software and releases

Maven packages

Affected and fixed versions, from OSV.dev
PackageIntroducedFixedLast affected
org.apache.struts:struts2-core 2.3.19 2.3.20.3 unbounded
org.apache.struts:struts2-core 2.3.21 2.3.24.3 unbounded
org.apache.struts:struts2-core 2.3.25 2.3.28.1 unbounded

Products and versions

2 products, 8 version entries
SourceVendorProductSchemeAffected versions
nvd apache struts generic 2.3.20 · 2.3.20.1 · 2.3.24 · 2.3.24.1 · 2.3.28
osv org.apache.struts struts2-core generic ≥ 2.3.19 and < 2.3.20.3 · ≥ 2.3.21 and < 2.3.24.3 · ≥ 2.3.25 and < 2.3.28.1

References

URLTags
https://github.com/apache/struts/commit/6bd694b7980494c12d49ca1bf39f12aec3e03e2f WEB
https://github.com/apache/struts PACKAGE
https://web.archive.org/web/20160616082237/http://www.securitytracker.com/id/1036017 WEB
https://web.archive.org/web/20160728170709/http://www.securityfocus.com/bid/90960 WEB
https://www.exploit-db.com/exploits/39919 WEB
http://struts.apache.org/docs/s2-033.html WEB
http://www-01.ibm.com/support/docview.wss?uid=swg21987854 WEB
http://www.securityfocus.com/bid/90960
http://www.securitytracker.com/id/1036017
https://www.exploit-db.com/exploits/39919/

Timeline

Published2016-06-07By the CVE Program.
NVD record modified2026-06-17NVD's own last-modified date for this record.