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

CVE-2016-4438 — struts2-core

CRITICALFix: apache/struts@6d7ac40

CVE-2016-4438 is a critical-severity (CVSS 9.8) Improper Input Validation vulnerability in org.apache.struts:struts2-core. EPSS puts its 30-day exploitation probability at 16.7% (97th percentile). A fix is available for org.apache.struts:struts2-core — see the affected versions and patch details below.

Arbitrary code execution in Apache Struts 2

Also known asGHSA-4prj-vw9j-v6pr
Published
Updated
Affected
2 pkgs
Patched
2 / 2
Exploits
None indexed
Exploitation data as of Nov 1, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

EPSS Exploitation Probability

via FIRST.org ↗
16.7%probability of exploitation in next 30 days
Moderate Risk0.00%
Lower risk than most CVEs97th percentile — riskier than 97% of all scored CVEsHighest risk
2.97%27.2%51.5%75.7%62.1%16.7%May 26Aug 26Nov 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

2 pkgs affected
☕org.apache.struts:struts2-core☕org.apache.struts:struts2-rest-plugin

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

The REST plugin in Apache Struts 2 2.3.19 through 2.3.28.1 allows remote attackers to execute arbitrary code via a crafted expression.

Affected Packages

2 total 2 fixed
EcosystemPackageVulnerable rangeFix
☕Mavenorg.apache.struts:struts2-core≥ 2.3.19&&< 2.3.292.3.29org.apache.struts:struts2-core:2.3.29
☕Mavenorg.apache.struts:struts2-rest-plugin≥ 2.3.19&&< 2.3.292.3.29org.apache.struts:struts2-rest-plugin:2.3.29

Affected Products

1 product · 7 configurations
Application
strutsapache
7 versions
2.3.202.3.20.12.3.20.32.3.242.3.24.12.3.24.32.3.28

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.29 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2016-4438 is resolved across your whole dependency graph.

  3. Workarounds

    If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.

Frequently Asked Questions

The REST plugin in Apache Struts 2 2.3.19 through 2.3.28.1 allows remote attackers to execute arbitrary code via a crafted expression.
O3 Security · Impact-Aware SCA

Is CVE-2016-4438 in your dependencies?

Find it across Maven, including transitive dependencies.

CVE-2016-4438: struts2-core RCE — Fixed in 2.3.29