Skip to main content

Apache Struts CVE-2026-104711

| EUVDEUVD-2026-92622 CRITICAL
Improper Neutralization of Special Elements used in an Expression Language Statement (CWE-917)
9.8
CVSS 3.1 · Vendor
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Struts app using legacy RESTful mapper
  2. Exploit
    Send crafted request with embedded OGNL expression
  3. Execution
    Expression evaluated without allowlist protection
  4. Impact
    Execute arbitrary code on server

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Expression language sanitization
Exploitation Conditions

Exploitation requires the target application to be configured to use the legacy RESTful action mapper; this is the exact enabling condition. On the Struts 7 branch there is an additional prerequisite: the OGNL allowlist must have been explicitly disabled, as it is enabled by default and blocks the injection. Applications using the default action mapper, the restful2 mapper, or the Struts REST plugin are NOT affected regardless of version. The decisive limiting factor is therefore this non-default mapper configuration, which is not present in standard deployments; where it is absent, the vulnerability is not reachable despite the AV:N/PR:N base vector. No user interaction or authentication is required once the vulnerable configuration exists.

Impact

The raw signals appear alarming - CVSS 3.1 base of 9.8 with AV:N/AC:L/PR:N/UI:N and full C:H/I:H/A:H impact, consistent with unauthenticated remote code execution via OGNL/Expression Language injection (CWE-917) in a widely-deployed Java framework. However, these signals conflict sharply with the exploitation reality described by the vendor, and the aggregate picture is of a conditional, not blanket, critical. The flaw is reachable ONLY when the application is configured to use the legacy RESTful action mapper, and on the Struts 7 branch only when the OGNL allowlist (enabled by default) has been explicitly disabled; the default action mapper, the restful2 mapper, and the Struts REST plugin are all unaffected. This means the PR:N/AC:L base vector overstates real-world attackability, because a non-default, attacker-uncontrollable deployment condition must be present - a factor the CVSS 3.1 base score cannot express. The supporting threat intelligence corroborates a lower practical priority: EPSS is only 0.36% (28th percentile), there is no CISA KEV listing, and no public exploit code is referenced. Exploitation status is therefore 'no public exploit identified at time of analysis'. Bottom line: this is a genuine critical for the subset of organizations running the legacy RESTful mapper (where it warrants urgent patching), but for the majority on default configurations the effective risk is low. Treat the 9.8 as a worst-case ceiling gated behind a specific configuration, not as a ubiquitous network threat.

Exploit ScenarioDerived

An attacker enumerates internet-facing Apache Struts applications and identifies one configured with the legacy RESTful action mapper (or a Struts 7 instance with the OGNL allowlist disabled). They send a single crafted HTTP request embedding a malicious OGNL expression in the request path/action, which the mapper evaluates, achieving remote code execution as the web application's user. No public exploit code is referenced at time of analysis, and success is contingent on the non-default mapper configuration being present.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv2 – Oct 06, 2026

OGNL expression injection in Apache Struts can lead to remote code execution, but only when an application is explicitly configured with the legacy RESTful action mapper - a non-default setting that standard deployments do not use. All version branches are affected in the abstract (2.0.0 through 2.3.37, 2.5.0 through 2.5.33, 6.0.0 through 6.11.0, and 7.0.0 through 7.3.0), and on the Struts 7 branch exploitation additionally requires the OGNL allowlist to have been disabled, which is not the default. NVD rates this 9.8 (AV:N/AC:L/PR:N/UI:N), while our independent assessment lowers it to AC:H because the decisive limiting factor is the non-default mapper configuration; where that mapper is absent the flaw is not reachable. No public exploit code or CISA KEV entry has been identified at time of analysis, and EPSS is low at 0.36% (28th percentile), so exposure is driven principally by configuration review rather than by observed exploitation. Fixes are available in Struts 6.12.0 and 7.4.0.

Earlier versions of this analysis (1)
v1 Oct 05, 2026 - 18:24

OGNL expression injection in Apache Struts (2.0.0 through 2.3.37, 2.5.0 through 2.5.33, 6.0.0 through 6.11.0, and 7.0.0 through 7.3.0) can let an unauthenticated remote attacker reach remote code execution by sending a crafted request that injects an OGNL expression - but only when the application is explicitly configured to use the legacy RESTful action mapper. Applications using the default action mapper, the restful2 mapper, or the Struts REST plugin are not affected, and on Struts 7 the flaw is only reachable if the OGNL allowlist has been manually disabled, since it is enabled by default. The Apache Struts project rates this as Moderate severity (S2-075) and has released fixes in 6.12.0 and 7.4.0; at time of analysis there is no confirmed active exploitation (not in CISA KEV) and no public exploit identified at time of analysis, though the underlying OGNL-injection-to-RCE class has historically been heavily targeted in Struts.

RemediationAI

Upgrade to Apache Struts 6.12.0 or 7.4.0, the versions the vendor identifies as fixing this issue (advisory: https://cwiki.apache.org/confluence/display/WW/S2-075). Because reachability depends on configuration rather than version alone, prioritize an inventory pass to find any application wired to the legacy RESTful action mapper and migrate it to the default action mapper, the restful2 mapper, or the Struts REST plugin - these are not affected and the change removes the vulnerable code path entirely. On Struts 7, ensure the OGNL allowlist remains enabled (its default state); if it was disabled for compatibility reasons, re-enabling it blocks the injection but may break applications that rely on previously permitted OGNL classes, so test in staging before rollout. If a Struts 7.4.0 upgrade is not immediately possible, disabling the allowlist must be avoided and the legacy mapper must be removed from the configuration; this is a configuration-level compensating control, not a code fix, and should be treated as temporary until the upgrade lands. Note that no vendor-released patch is available for the discontinued 2.0.x and 2.3.x branches, so those deployments must either migrate to a supported release or eliminate use of the legacy RESTful action mapper and accept the residual risk. No public exploit code has been identified at time of analysis and EPSS is low (0.36%), so remediation can be scheduled on a normal risk-based cadence, but internet-facing Struts instances with the legacy mapper should be treated as urgent given the CVSS 9.8 rating and unauthenticated AV:N/PR:N vector.

Affected VersionsENISA

Apache Struts 7.0.0 ≤7.3.0
Apache Struts 2.5.0 ≤2.5.33
Apache Struts 6.0.0 ≤6.11.0
Apache Struts 2.0.0 ≤2.3.37

Affected Packages

euvd apache_struts no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability is CWE-917, Improper Neutralization of Special Elements used in an Expression Language Statement, realized in Struts as Object-Graph Navigation Language (OGNL) injection. Struts historically maps request parameters into OGNL expressions, so a crafted request reaching an expression-evaluation path can execute arbitrary Java code. The specific entry point here is the legacy RESTful action mapper, the component that decides how incoming request URLs are translated into Struts actions; when it is in use, attacker-controlled input can be fed into an expression that is evaluated rather than treated as data. The CPE/version data and EUVD mirror the advisory ranges: Apache Struts 2.0.0 ≤ 2.3.37, 2.5.0 ≤ 2.5.33, 6.0.0 ≤ 6.11.0, and 7.0.0 ≤ 7.3.0. On Struts 7 the framework ships an OGNL allowlist enabled by default that restricts which classes and methods expressions may touch; only if an operator has explicitly turned that allowlist off does the injection become exploitable. Applications using the default action mapper, the restful2 mapper, or the Struts REST plugin do not route traffic through the vulnerable code path and are unaffected regardless of version, which is why the reachable attack surface is substantially narrower than the raw 9.8 base score implies. The CVSS vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) confirms unauthenticated remote reachability with no user interaction in the vulnerable configuration, with full confidentiality, integrity, and availability impact on successful exploitation.

Know when Struts gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (CNA) PRIMARY 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

Network-reachable and unauthenticated (AV:N/PR:N), but AC:H because exploitation depends on a non-default, attacker-uncontrollable configuration (legacy RESTful mapper / disabled allowlist); OGNL RCE yields full C:H/I:H/A:H.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Red Hat 8.1 HIGH

Primary rating from Vendor (CNA).

CVSS VectorVendor

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
CVSS changed
Oct 06, 2026 - 15:22 NVD
9.8 (CRITICAL)
CVE Published
Oct 05, 2026 - 17:42 oss-security
CRITICAL

Description PRE-NVD

Disclosed via oss-security. NVD scoring and full description are pending.

Executive ViewAI

Why It Matters

Apache Struts, a widely embedded Java web framework used across many enterprise and vendor applications, carries a critical-severity remote code execution flaw (CVE-2026-104711) that is only reachable when an application has been explicitly configured with the legacy RESTful action mapper - a non-default setting that standard deployments do not enable, with Struts 7 deployments additionally requiring the OGNL allowlist to be turned off. Because exposure depends on configuration rather than a default-install condition, leadership's risk is concentrated in a small subset of applications that were customized for legacy compatibility, and no public exploit code or confirmed active exploitation has been identified at time of analysis. The practical priority is therefore configuration discovery and version currency, not emergency incident response.

Business Impact: Medium
Compensating Controls

Apply vendor patch. Where upgrade to Apache Struts 6.12.0 or 7.4.0 cannot be completed immediately, remove the legacy RESTful action mapper from application configuration, ensure the OGNL allowlist is enabled on all Struts 7 deployments, and restrict network reachability of affected applications at the edge; treat 2.x and 2.5.x deployments as unpatchable and prioritize migration off those branches.

Threat Intelligence Overview

EPSS Score
0.4%
Top 72% exploitable
Prevalence
High
widely-deployed enterprise Java web application framework
Social Media
2
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Medium
Technical Impact
Total

Priority Score

49
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +49
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in Struts

View all
CVE-2016-3081 HIGH POC
8.1 Apr 26

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, a

CVE-2013-2251 CRITICAL POC
9.8 Jul 20

Apache Struts 2.0.0 through 2.3.15 allows remote attackers to execute arbitrary OGNL expressions via a parameter with a

CVE-2017-5638 CRITICAL POC
9.8 Mar 11

The Jakarta Multipart parser in Apache Struts 2 2.3.x before 2.3.32 and 2.5.x before 2.5.10.1 has incorrect exception ha

CVE-2017-9805 HIGH POC
8.1 Sep 15

The REST Plugin in Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 uses an XStreamHandler with a

CVE-2013-1966 CRITICAL POC
9.3 Jul 10

Apache Struts 2 before 2.3.14.2 allows remote attackers to execute arbitrary OGNL code via a crafted request that is not

CVE-2016-3087 CRITICAL POC
9.8 Jun 07

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, a

CVE-2014-0114 HIGH POC
7.5 Apr 30

Apache Commons BeanUtils, as distributed in lib/commons-beanutils-1.8.0.jar in Apache Struts 1.x through 1.3.10 and in o

CVE-2014-0112 HIGH POC
7.5 Apr 29

ParametersInterceptor in Apache Struts before 2.3.20 does not properly restrict access to the getClass method, which all

CVE-2017-12611 CRITICAL POC
9.8 Sep 20

In Apache Struts 2.0.0 through 2.3.33 and 2.5 through 2.5.10.1, using an unintentional expression in a Freemarker tag in

CVE-2013-2115 HIGH POC
8.1 Jul 10

Apache Struts 2 before 2.3.14.2 allows remote attackers to execute arbitrary OGNL code via a crafted request that is not

CVE-2012-0394 MEDIUM POC
6.8 Jan 08

The DebuggingInterceptor component in Apache Struts before 2.3.1.1, when developer mode is used, allows remote attackers

CVE-2013-1965 CRITICAL POC
9.3 Jul 10

Apache Struts Showcase App 2.0.0 through 2.3.13, as used in Struts 2 before 2.3.14.3, allows remote attackers to execute

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy