CVE-2016-3087 in the critical feed json
Apache Struts vulnerable to arbitrary remote code execution due to improper input validation
published 2016-06-07 10 y ago modified 2026-06-17 4 mo ago also GHSA-mmj6-cjj4-hpr5 , EUVD-2022-4592
- cvss
- 9.8
- version 3.0, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 81.9%
- EPSS 81.9% chance of exploitation in 30 days, percentile 99.6%
- public exploits
- 3
- Metasploit, Exploit-DB
Summary
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.
Patch / fix
- maven org.apache.struts:struts2-core 2.3.20.3, 2.3.24.3, 2.3.28.1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2016-3087 updated cvss 6.8
struts: Passing malicious expression can cause RCE when Dynamic Method Invocation is enabled and REST plugin is used
-
Red Hat Enterprise Linux 5 struts Red Hat Satellite 5 strutsnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Timeline
- First public exploit (Metasploit exploit/multi/http/struts_dmi_rest_exec)
- Published
Exploit prediction
81.87% chance of exploitation in the next 30 days, higher than 99.6% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- Metasploit exploit/multi/http/struts_dmi_rest_exec Apache Struts REST Plugin With Dynamic Method Invocation Remote Code Execution metasploit exploit, excellent rank, 2016-06-01
- EDB-43382 Apache Struts - REST Plugin With Dynamic Method Invocation Remote Code Execution remote, 2017-06-06
- EDB-39919 Apache Struts - REST Plugin With Dynamic Method Invocation Remote Code Execution (Metasploit) remote, 2016-06-10
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.0 | 9.8 | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| NVD | 2.0 | 7.5 | AV:N/AC:L/Au:N/C:P/I:P/A:P |
| GitHub | 3.0 | 9.8 | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| maven | org.apache.struts:struts2-core | >=2.3.19, <2.3.20.3 >=2.3.21, <2.3.24.3 >=2.3.25, <2.3.28.1 |
2.3.20.3 2.3.24.3 2.3.28.1 |
Classification
- Weakness
-
- CWE-20 Improper Input Validation
References
-
github.com
/apache/struts/commit/6bd694b7980494c12d49ca1bf39f12aec3e03e2f
web
-
exploit-db.com
/exploits/39919/
exploit
-
struts.apache.org
/docs/s2-033.html
web, vendor-advisory
-
securitytracker.com
/id/1036017
vdb-entry
-
www-01.ibm.com
/support/docview.wss?uid=swg21987854
web
-
securityfocus.com
/bid/90960
vdb-entry
-
nvd.nist.gov
/vuln/detail/CVE-2016-3087
advisory
-
github.com
/apache/struts
package
-
web.archive.org
/web/20160616082237/http://www.securitytracker.com/id/1036017
web
-
web.archive.org
/web/20160728170709/http://www.securityfocus.com/bid/90960
web
-
exploit-db.com
/exploits/39919
web
Sources
- CVE List CVE-2016-3087
- GitHub Advisory GHSA-mmj6-cjj4-hpr5
- NVD CVE-2016-3087
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.