GHSA-wfm5-pq4p-gff9
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Struts app using legacy RESTful mapper
-
ExploitSend crafted request with embedded OGNL expression
-
ExecutionExpression evaluated without allowlist protection
-
ImpactExecute 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – 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)
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
Affected Packages
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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
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.
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
2Description PRE-NVD
Articles & Coverage 1
Executive ViewAI
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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
Apache Struts 2.0.0 through 2.3.15 allows remote attackers to execute arbitrary OGNL expressions via a parameter with a
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
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
Apache Struts 2 before 2.3.14.2 allows remote attackers to execute arbitrary OGNL code via a crafted request that is not
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
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
ParametersInterceptor in Apache Struts before 2.3.20 does not properly restrict access to the getClass method, which all
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
Apache Struts 2 before 2.3.14.2 allows remote attackers to execute arbitrary OGNL code via a crafted request that is not
The DebuggingInterceptor component in Apache Struts before 2.3.1.1, when developer mode is used, allows remote attackers
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
EUVD-2026-92622
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB