{"id":"CVE-2016-3087","aliases":["EUVD-2022-4592","GHSA-mmj6-cjj4-hpr5"],"status":"published","title":"Apache Struts vulnerable to arbitrary remote code execution due to improper input validation","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.","severity":{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-07","score":0.81873,"percentile":0.99651,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":true},"cwes":["CWE-20"],"published":"2016-06-07T18:00:00Z","modified":"2026-10-24T10:30:34Z","exploits":[{"source":"exploitdb","id":"EDB-39919","title":"Apache Struts - REST Plugin With Dynamic Method Invocation Remote Code Execution (Metasploit)","type":"remote","platform":"multiple","date":"2016-06-10","verified":true,"url":"https://www.exploit-db.com/exploits/39919"},{"source":"exploitdb","id":"EDB-43382","title":"Apache Struts - REST Plugin With Dynamic Method Invocation Remote Code Execution","type":"remote","platform":"multiple","date":"2017-06-06","url":"https://www.exploit-db.com/exploits/43382"},{"source":"metasploit","id":"exploit/multi/http/struts_dmi_rest_exec","title":"Apache Struts REST Plugin With Dynamic Method Invocation Remote Code Execution","type":"exploit","platform":"Java,Linux,Windows","date":"2016-06-01","verified":true,"url":"https://www.rapid7.com/db/modules/exploit/multi/http/struts_dmi_rest_exec"}],"fixes":[{"ecosystem":"Maven","package":"org.apache.struts:struts2-core","fixed_in":["2.3.20.3","2.3.24.3","2.3.28.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Maven","package":"org.apache.struts:struts2-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.19"},{"fixed":"2.3.20.3"}]}]},{"source":"ghsa","ecosystem":"Maven","package":"org.apache.struts:struts2-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.21"},{"fixed":"2.3.24.3"}]}]},{"source":"ghsa","ecosystem":"Maven","package":"org.apache.struts:struts2-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.25"},{"fixed":"2.3.28.1"}]}]},{"source":"osv","ecosystem":"Maven","package":"org.apache.struts:struts2-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.19"},{"fixed":"2.3.20.3"}]}],"versions":["2.3.20","2.3.20.1"]},{"source":"osv","ecosystem":"Maven","package":"org.apache.struts:struts2-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.21"},{"fixed":"2.3.24.3"}]}],"versions":["2.3.24","2.3.24.1"]},{"source":"osv","ecosystem":"Maven","package":"org.apache.struts:struts2-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.25"},{"fixed":"2.3.28.1"}]}],"versions":["2.3.28"]}],"products":[{"vendor":"apache","product":"struts"}],"references":[{"url":"http://www.securitytracker.com/id/1036017","tags":["vdb-entry","x_refsource_SECTRACK","x_transferred","web"]},{"url":"https://www.exploit-db.com/exploits/39919/","tags":["exploit","x_refsource_EXPLOIT-DB","x_transferred","web"]},{"url":"http://struts.apache.org/docs/s2-033.html","tags":["x_refsource_CONFIRM","x_transferred","Vendor Advisory","advisory","web"]},{"url":"http://www-01.ibm.com/support/docview.wss?uid=swg21987854","tags":["x_refsource_CONFIRM","x_transferred","web"]},{"url":"http://www.securityfocus.com/bid/90960","tags":["vdb-entry","x_refsource_BID","x_transferred","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2016-3087","tags":["advisory"]},{"url":"https://github.com/apache/struts/commit/6bd694b7980494c12d49ca1bf39f12aec3e03e2f","tags":["web"]},{"url":"https://web.archive.org/web/20160616082237/http://www.securitytracker.com/id/1036017","tags":["web"]},{"url":"https://web.archive.org/web/20160728170709/http://www.securityfocus.com/bid/90960","tags":["web"]},{"url":"https://github.com/advisories/GHSA-mmj6-cjj4-hpr5"},{"url":"https://github.com/apache/struts","tags":["package"]},{"url":"https://www.exploit-db.com/exploits/39919","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2016-3087","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.","status":"published","published":"2016-06-07T18:00:00Z","modified":"2024-08-05T23:40:15.549Z","updated_at":"2026-11-02T14:33:33.758954Z"}],"euvd":[{"id":"EUVD-2022-4592","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.","status":"published","published":"2016-06-07T18:00:00Z","modified":"2024-08-05T23:40:15Z","updated_at":"2026-11-03T02:22:51.132305Z"}],"ghsa":[{"id":"GHSA-mmj6-cjj4-hpr5","title":"Apache Struts vulnerable to arbitrary remote code execution due to improper input validation","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.","status":"published","published":"2022-05-14T00:54:14Z","modified":"2023-12-29T17:27:43Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-20"],"updated_at":"2026-11-02T14:37:28.753349Z"}],"nvd":[{"id":"CVE-2016-3087","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.","status":"published","published":"2016-06-07T18:59:02.713Z","modified":"2026-06-17T00:44:56.647Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-20"],"updated_at":"2026-11-02T14:03:26.642445Z"}],"osv":[{"id":"CVE-2016-3087","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.","status":"published","published":"2016-06-07T18:59:02.713Z","modified":"2026-10-24T10:30:34.22847851Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:44:02.114472Z"},{"id":"GHSA-mmj6-cjj4-hpr5","title":"Apache Struts vulnerable to arbitrary remote code execution due to improper input validation","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.","status":"published","published":"2022-05-14T00:54:14Z","modified":"2024-02-22T05:25:07.805657Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-20"],"updated_at":"2026-11-02T15:46:52.170928Z"}]}}
