Skip to content
Fencer Vulns
critical 9.8

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 struts
    not 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

  1. First public exploit (Metasploit exploit/multi/http/struts_dmi_rest_exec)
  2. 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

Sources

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.