MEDIUMCVSS v3.1 5.6Vulnerability

CVE-2026-113730

### Summary 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 membe

Properties

Severity
medium
Summary
OGNL stricter-invocation block list bypass via java.lang.reflect reflection proxies
Nvd fetched at
2026-10-22T22:14:18.200859+00:00
Epss score
0.00358
Cvss score
5.6
Cvss severity
MEDIUM
Retrieved at
2026-10-22T22:17:33+00:00
Ghsa published
2026-10-21T16:31:04Z
Source url
https://github.com/advisories/GHSA-crwc-vw2r-qr6m
Ghsa updated
2026-10-21T16:31:05Z
Ghsa id
GHSA-crwc-vw2r-qr6m
Last source
FIRST EPSS
Score
5.6
Cvss version
3.1
Cve id
CVE-2026-113730
Cvss vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L
First seen by Signal
2026-10-21T17:40:10+00:00
Is ghsa only
false
Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L
Published at
2026-10-20T22:19:30.043

Related Entities (3)

AFFECTS (1)

→[Software]maven/ognl:ognl

HAS_WEAKNESS (1)

VULNERABLE_TO (1)

←[Software]maven/ognl:ognl

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-113730 (CVSS v3.1 5.6) — Ninja Signal Threat Intelligence | Ninja Signal