NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
☕
☕ Maven
Not in CISA KEV
MEDIUM severity

CVE-2016-4003 — struts2-core

MEDIUMFix: apache/struts@4720f46

CVE-2016-4003 is a medium-severity (CVSS 6.1) Cross-site Scripting (XSS) vulnerability in org.apache.struts:struts2-core. EPSS puts its 30-day exploitation probability at 11.6% (96th percentile). A fix is available for org.apache.struts:struts2-core — see the affected versions and patch details below.

Cross-site Scripting in Apache Struts

Also known asGHSA-m3x6-9v6h-4g28
Published
Updated
Affected
1 pkg
Patched
1 / 1
Exploits
None indexed
Exploitation data as of Oct 30, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

EPSS Exploitation Probability

via FIRST.org ↗
11.6%probability of exploitation in next 30 days
Moderate Risk0.00%
Lower risk than most CVEs96th percentile — riskier than 96% of all scored CVEsHighest risk
0.00%4.94%9.89%14.8%2.6%11.6%Apr 26Aug 26Oct 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

How urgent is this, really

Where this sits among everything scored

Real-World Exposure

1 pkg affected
☕org.apache.struts:struts2-core

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Maven packages — download data is not available via public APIs for these ecosystems.

Description

Cross-site scripting (XSS) vulnerability in the URLDecoder function in JRE before 1.8, as used in Apache Struts 2.x before 2.3.28, when using a single byte page encoding, allows remote attackers to inject arbitrary web script or HTML via multi-byte characters in a url-encoded parameter.

Affected Packages

1 total 1 fixed
EcosystemPackageVulnerable rangeFix
☕Mavenorg.apache.struts:struts2-core≥ 2.0.0&&< 2.3.282.3.28org.apache.struts:struts2-core:2.3.28

Affected Products

1 product · 1 configurations
Application
strutsapache
≥ 2.0.0 && ≤ 2.3.24.1
range

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for org.apache.struts:struts2-core, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update org.apache.struts:struts2-core to 2.3.28 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2016-4003 is resolved across your whole dependency graph.

  3. Workarounds

    Escape or sanitise the affected output on the server side rather than relying on client-side filtering, and add a Content-Security-Policy that blocks inline script execution so injected markup cannot run even if it reaches the page.

Frequently Asked Questions

Cross-site scripting (XSS) vulnerability in the URLDecoder function in JRE before 1.8, as used in Apache Struts 2.x before 2.3.28, when using a single byte page encoding, allows remote attackers to inject arbitrary web script or HTML via multi-byte characters in a url-encoded parameter.
O3 Security · Impact-Aware SCA

Is CVE-2016-4003 in your dependencies?

Find it across Maven, including transitive dependencies.

CVE-2016-4003: struts2-core XSS — Fixed in 2.3.28