CVE-2026-113730

CVE-2026-113730 is a medium-severity security vulnerability in ognl:ognl (maven), affecting versions <= 3.4.12. It is fixed in 3.4.13.

Does this CVE actually affect you?

Kodem shows which CVEs are reachable and running in your applications, so you fix what's exploitable, not just what's listed.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Runtime intelligence, not another scanner.

Summary

OGNL stricter-invocation block list bypass via java.lang.reflect reflection proxies

OGNL's optional stricter invocation mode maintains a block list that prevents expressions from directly calling methods on dangerous classes such as Runtime, ProcessBuilder, and ClassLoader. The block list filters on the declaring class of the method OGNL invokes. Because java.lang.reflect.Method (and Constructor/Field) are not on the list, an expression can use reflection as a proxy, someMethod.invoke(target, args), to reach a blocked method. The real call (e.g. ProcessBuilder.start()) then executes inside the JDK reflection machinery and never passes back through OGNL's invokeMethod, so the block list never sees it.

Proof of concept

Under the default OGNL context (public-only access, stricter invocation enabled), the following expression creates a file even though a direct new ProcessBuilder(...).start() is blocked:

(#pb=new java.lang.ProcessBuilder({"/usr/bin/touch","rce-proof.txt"}),
 #[email protected]@class.getMethods(),
 #names=#methods.{ #this.getName() },
 #startIdx=#names.indexOf("start"),
 #methods[#startIdx].invoke(#pb, null))

Impact and scope, please read carefully

This is hardening of a defense-in-depth secondary layer, not a break of OGNL's primary security boundary.

In OGNL the stricter-invocation block list is a secondary mitigation. The primary access-control gate is the MemberAccess implementation supplied by the integrating framework or application, which OGNL consults on every constructor and method call. Frameworks that evaluate untrusted expressions are expected to install a restrictive MemberAccess, for example, Apache Struts' SecurityMemberAccess, which excludes dangerous classes and the java.lang.reflect package. Against such a MemberAccess this PoC is blocked at the very first step (the new ProcessBuilder(...) constructor), before reflection is ever reachable.

The default context that ships with OGNL intentionally allows all public members and is not designed to sandbox untrusted input. An application that evaluates attacker-controlled expressions with that permissive default already has many paths to code execution, and this technique is not required to achieve it.

You are affected only if all of the following hold: (1) your application evaluates untrusted/attacker-controlled OGNL expressions, (2) it uses OGNL's default permissive MemberAccess (or an equivalently permissive one that allows java.lang.reflect), and (3) it relies on the stricter-invocation block list as its sandbox. Properly configured consumers, including Apache Struts with its SecurityMemberAccess, are not affected. The actual protection for untrusted-expression scenarios remains a correctly configured MemberAccess; the block list should not be treated as a sandbox.

Credit

Reported responsibly through Tidelift by 毛锐 ([email protected]).

Impact

CVE-2026-113730 has a CVSS score of 5.6 (Medium). The vector is network-reachable, no privileges required, and no user interaction. A CVSS score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether this affects your application depends on whether the vulnerable code is present and reachable in your environment. A fixed version is available (3.4.13); upgrading removes the vulnerable code path.

Affected versions

ognl:ognl (<= 3.4.12)

Security releases

ognl:ognl → 3.4.13 (maven)

Kodem intelligence

Severity tells you how bad this could be in the worst case. It does not tell you whether you are exposed. Exploitability and impact are functions of runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A vulnerable package can sit in your dependency tree and never run.

Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter. Kodem's runtime-powered SCA identifies whether this CVE is reachable in your applications.

Already deployed Kodem?

See it in your environmentNew to Kodem? Get a demo →

Remediation advice

java.lang.reflect.Method, java.lang.reflect.Constructor, and java.lang.reflect.Field are added to the stricter-invocation block list, so reflection objects can no longer be used as invocation proxies in stricter mode. The java.lang.invoke.MethodHandle path was verified not to be exploitable (its signature-polymorphic invoke/invokeExact fail through OGNL's reflection-based invocation), so no additional classes are required.

Frequently Asked Questions

  1. What is CVE-2026-113730? CVE-2026-113730 is a medium-severity security vulnerability in ognl:ognl (maven), affecting versions <= 3.4.12. It is fixed in 3.4.13.
  2. How severe is CVE-2026-113730? CVE-2026-113730 has a CVSS score of 5.6 (Medium). This score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether it represents real risk in your environment depends on whether the vulnerable code is present and reachable.
  3. Which versions of ognl:ognl are affected by CVE-2026-113730? ognl:ognl (maven) versions <= 3.4.12 is affected.
  4. Is there a fix for CVE-2026-113730? Yes. CVE-2026-113730 is fixed in 3.4.13. Upgrade to this version or later.
  5. Is CVE-2026-113730 exploitable, and should I be worried? Whether CVE-2026-113730 is exploitable in your environment depends on whether the vulnerable code is present and reachable. A CVSS score is a worst-case rating; it does not account for your specific deployment, configuration, or usage patterns. Kodem, an Intelligent Application Security platform, uses runtime intelligence to show which vulnerabilities actually execute in production, so you can focus on the ones that represent real risk. Get a demo
  6. What actually determines whether CVE-2026-113730 is exploitable, and how bad it is? Exploitability and impact are not fixed properties of a CVE. They depend on runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A high CVSS score on a dependency that never runs is not the same as real risk. Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter.
  7. How do I fix CVE-2026-113730? Upgrade ognl:ognl to 3.4.13 or later.

Other vulnerabilities in ognl:ognl

Stop the waste.
Protect your environment with Kodem.