Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach endpoint evaluating untrusted OGNL
-
DeliverySubmit expression invoking reflection proxy
-
ExploitMethod.invoke bypasses stricter-invocation check
-
ExecutionReach blocked class (e.g. ProcessBuilder)
-
ImpactExecute attacker-controlled operation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Protection mechanism completeness
|
| Exploitation Conditions | Exploitation is gated on three specific, stacked conditions that must ALL hold: (1) the application must evaluate untrusted/attacker-controlled OGNL expressions; (2) it must use the default or an equivalently permissive MemberAccess that permits reflection; and (3) it must rely on OGNL's optional stricter-invocation mode (OgnlRuntime.invokeMethod) as its sandbox/guardrail. The concrete bypass uses java.lang.reflect.Method, Constructor, or Field as a proxy so the blocked operation runs inside JDK reflection. A major LIMITING factor: applications using a restrictive MemberAccess - explicitly including Apache Struts with SecurityMemberAccess - are NOT affected, so the dominant OGNL deployment is out of scope. No user interaction or authentication is required by the attacker (PR:N/UI:N), but the vulnerable configuration itself is non-default for hardened deployments, driving the high attack complexity. |
| Impact | This is a defense-in-depth bypass (CWE-693, protection mechanism failure) in the OGNL library's optional stricter-invocation mode, not a directly exploitable remote flaw. The provided CVSS vector (AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L = 5.6 Medium) reflects the conservative view that the issue only matters under specific conditions. No EPSS score was provided and there is no CISA KEV listing, so there is no public signal of active exploitation or high exploitation probability; no public exploit code was supplied in the intelligence either. The real-world risk is narrow but, where applicable, significant: the referenced fix and test code show the reflection-proxy trick (e.g. #methods[i].invoke(#pb, null)) can reach blocked classes such as ProcessBuilder, meaning a successful bypass can escalate to arbitrary code execution rather than the low C/I/A the base score implies - this is a notable tension between the vendor's L/L/L impact rating and the actual technical consequence of the bypass. The AC:H rating is well justified because exploitation is gated on three stacked preconditions (untrusted OGNL evaluation, permissive MemberAccess, and reliance on stricter invocation as the sandbox). Critically, the most common real-world consumer - Apache Struts with SecurityMemberAccess - is explicitly NOT affected, which sharply limits the exploitable population. Net: prioritize patching for any application that evaluates untrusted OGNL and depends on stricter invocation as its only guardrail, but treat it as lower urgency than the raw RCE potential would suggest because the vulnerable configuration is uncommon and no exploitation is confirmed. |
| Exploit ScenarioDerived | An application evaluates attacker-supplied OGNL expressions and relies on the stricter-invocation mode (with a default/permissive MemberAccess) as its sandbox. The attacker submits an expression that invokes java.lang.reflect.Method.invoke (or Constructor.newInstance / Field.get) as a proxy, so the real call to an otherwise-blocked class executes inside JDK reflection without re-passing the stricter-invocation check, enabling reach to classes like ProcessBuilder. No public exploit was provided in the intelligence, though the fix's test suite documents the Method.invoke vector; high attack complexity (AC:H) applies because the permissive-but-stricter-invocation configuration must be present. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
OGNL versions before 3.4.13 can be tricked into executing blocked operations through Java reflection when an application evaluates attacker-controlled OGNL expressions under the optional stricter-invocation sandbox and a permissive MemberAccess. The bypass uses java.lang.reflect.Method, Constructor, or Field as a proxy so the real call runs inside JDK reflection without a second stricter-invocation check; applications that use a restrictive MemberAccess, including Apache Struts with SecurityMemberAccess, are not affected. No public exploit code or confirmed active exploitation was identified at time of analysis, and exploitation requires the specific stacked configuration described rather than default hardened deployments.
RemediationAI
Vendor-released patch: OGNL 3.4.13, available from the OGNL_3_4_13 release at https://github.com/orphan-oss/ognl/releases/tag/OGNL_3_4_13 and documented in the GitHub advisory https://github.com/orphan-oss/ognl/security/advisories/GHSA-crwc-vw2r-qr6m; the fixes are in commits 16396fa4b560221294c2ab9ca04b76b161115e7d and f4c17f794754d516ea799c36ed8524d1b7fb98e2. If upgrading immediately is not possible, stop evaluating untrusted OGNL expressions and replace the default or permissive MemberAccess with a restrictive implementation such as Apache Struts SecurityMemberAccess, noting that restrictive MemberAccess can break legitimate expressions that depend on reflection. Do not treat stricter-invocation mode as the sole sandbox until 3.4.13 is deployed, because the reflection proxy bypass remains available in that configuration.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OGNL is a Java object-graph navigation and expression language used by frameworks and applications to evaluate expressions against Java objects. This is CWE-693, protection mechanism failure: the optional stricter-invocation mode in OgnlRuntime.invokeMethod is intended as a sandbox guardrail, but prior to 3.4.13 it checked the declaring class of the method OGNL invokes without blocking the core reflection entry points java.lang.reflect.Method, java.lang.reflect.Constructor, and java.lang.reflect.Field. An attacker-controlled expression can therefore invoke Method.invoke, Constructor.newInstance, or Field.get/set as a proxy so the blocked operation executes inside JDK reflection without passing through the stricter-invocation check again. The fix adds assignability checks for Method, Constructor, and Field in OgnlRuntime and adds regression tests for the reflection-proxy bypass. The provided NVD score is 5.6 with AC:H, reflecting the stacked preconditions and limited scope; the independent assessment raises confidentiality, integrity, and availability impact to high when this bypass defeats the only sandbox. Applications using a restrictive MemberAccess, explicitly including Apache Struts with SecurityMemberAccess, are out of scope because reflection is already restricted.
Know when the next one hits your stack
- 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:H/PR:N/UI:N/S:U/C:L/I:L/A:L
AV:N as OGNL expressions typically arrive over the network and PR:N/UI:N as the attacker needs no account; AC:H for the stacked permissive-plus-stricter-invocation precondition; C/I/A:H because the bypass can reach ProcessBuilder for code execution.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
OGNL is an Object Graph Navigation Library for Java. Prior to 3.4.13, the optional stricter-invocation mode in OgnlRuntime.invokeMethod checks the declaring class of the method that OGNL invokes but does not block java.lang.reflect.Method, java.lang.reflect.Constructor, or java.lang.reflect.Field. An attacker-controlled expression can invoke one of these reflection objects as a proxy for a method on a blocked class, causing the real operation to execute inside JDK reflection without passing through the stricter-invocation check again. Exploitation requires an application to evaluate untrusted OGNL expressions, use the default or an equivalently permissive MemberAccess that permits reflection, and rely on stricter invocation as a sandbox. Applications using a restrictive MemberAccess, including Apache Struts with SecurityMemberAccess, are not affected by this bypass. This issue is fixed in 3.4.13.
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.
EUVD-2026-106421
GHSA-crwc-vw2r-qr6m
NVD
CVE.org
EPSS
Exploit-DB