Critical
Security advisory
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.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2016-3087
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 06:00 UTC · Revision 1
Source evidence
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.
osv:CVE-2016-3087
Complete source record
{
"id": "8f9fa9ce01ca8cfa095071691bb5a43b51f10935d14886bf76ec4a38ed65aaa6",
"url": "https://osv.dev/vulnerability/CVE-2016-3087",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2016-3087",
"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.",
"evidence": "osv:CVE-2016-3087",
"products": [],
"severity": "critical",
"structured": {
"id": "CVE-2016-3087",
"aliases": [
"CVE-2016-3087",
"GHSA-mmj6-cjj4-hpr5"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/apache/struts",
"type": "GIT",
"events": [
{
"introduced": "0320310406f6b11cfd235d7a9b866cf1de483a1e"
},
{
"last_affected": "0ac8932aa3a1b28a8f950863c17165cdc63b1474"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:apache:struts:2.3.20:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.3.20"
},
{
"last_affected": "2.3.20"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:apache:struts:2.3.20.1:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.3.20.1"
},
{
"last_affected": "2.3.20.1"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:apache:struts:2.3.24:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.3.24"
},
{
"last_affected": "2.3.24"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:apache:struts:2.3.24.1:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.3.24.1"
},
{
"last_affected": "2.3.24.1"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:apache:struts:2.3.28:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.3.28"
},
{
"last_affected": "2.3.28"
}
],
"source": "CPE_STRING"
}
]
}
}
],
"versions": [
"2.3.20",
"2.3.20.1",
"2.3.24",
"2.3.24.1",
"2.3.28"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2016-3087.json"
}
}
],
"modified": "2026-10-24T10:30:34.228478510Z",
"provider": "osv",
"references": [
"https://www.exploit-db.com/exploits/39919/"
],
"provider_metadata": {
"unresolved_ranges": [
{
"cpes": [
"cpe:2.3:a:apache:struts:2.3.20.1:*:*:*:*:*:*:*",
"cpe:2.3:a:apache:struts:2.3.20:*:*:*:*:*:*:*",
"cpe:2.3:a:apache:struts:2.3.24.1:*:*:*:*:*:*:*",
"cpe:2.3:a:apache:struts:2.3.24:*:*:*:*:*:*:*",
"cpe:2.3:a:apache:struts:2.3.28:*:*:*:*:*:*:*"
],
"vendor_product": "apache:struts",
"extracted_events": [
{
"range": [
{
"introduced": "2.3.20"
},
{
"last_affected": "2.3.20"
},
{
"introduced": "2.3.20.1"
},
{
"last_affected": "2.3.20.1"
},
{
"introduced": "2.3.24"
},
{
"last_affected": "2.3.24"
},
{
"introduced": "2.3.24.1"
},
{
"last_affected": "2.3.24.1"
},
{
"introduced": "2.3.28"
},
{
"last_affected": "2.3.28"
}
],
"source": "CPE_STRING"
}
]
}
]
}
},
"related_cves": [
{
"value": "CVE-2016-3087",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 433465,
"published_at": "2016-06-07T18:59:02.713+00:00"
}