Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged OpenNMS user
-
DeliveryCraft JEXL expression invoking getClass().forName() on whitelisted object
-
ExploitSubmit expression to Measurements REST API
-
ExecutionSandbox incorrectly authorizes call against whitelisted class
-
PersistJVM loads arbitrary class (e.g., java.lang.Runtime)
-
ImpactExecute OS-level commands or access server data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V15 - Secure Coding and Architecture Reflection safety, class allowlisting
|
| Exploitation Conditions | Exploitation requires a valid low-privileged OpenNMS account - the CVSS vector PR:L confirms authentication is mandatory. The Measurements REST API must be reachable by the attacker, which is the case for any user with network access to the OpenNMS web interface. No special configuration beyond a standard OpenNMS deployment is needed, as the JEXL measurement filter (with Math, StrictMath, and TreeBasedTable whitelisted) is part of the default installation. Exploitation is limited to authenticated users only (PR:N does not apply); unauthenticated exploitation is not possible. Internet-exposed deployments violate the vendor's stated deployment model but would expand the attacker pool. The attack does not require any specific OS or database configuration. |
| Impact | The vendor-assigned CVSS base score of 5.4 (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N) significantly understates practical impact. The C:L/I:L ratings conflict with the demonstrated ability to call Class.forName('java.lang.Runtime') - arbitrary class loading in a JVM server process realistically yields OS-level command execution, implying C:H/I:H/A:H rather than C:L/I:L. The S:U (unchanged scope) rating is defensible if exploitation stays within the JVM process boundary, but is conservative given unrestricted class loading. The CVSS AV:N/AC:L/PR:L metrics correctly capture that any authenticated user can reach the Measurements REST API over the network with no special configuration. No EPSS data was provided. No KEV listing and no public exploit code have been identified, so real-world active exploitation is unconfirmed. The vendor explicitly notes OpenNMS is intended for deployment inside private networks, which is a meaningful architectural mitigating factor: internet-exposed instances are out-of-specification but would face higher risk. Overall, internal threat actors or compromised low-privileged accounts represent a credible exploitation path warranting urgent patching despite the conservative CVSS rating. |
| Exploit ScenarioDerived | An authenticated low-privileged OpenNMS user submits a crafted JEXL expression such as table.getClass().forName('java.lang.Runtime') to the Measurements REST API. Because the sandbox incorrectly authorizes the forName call against the whitelisted TreeBasedTable class rather than java.lang.Class, the sandbox permits the call and the JVM loads the requested class, granting the attacker access to runtime execution primitives and potentially full server compromise. The regression tests included in PR #8754 document the exact expression patterns that constituted the bypass, serving as functional POC documentation even though no standalone exploit tool has been published. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 13, 2026
JEXL expression sandbox bypass in OpenNMS Meridian and Horizon allows a low-privileged authenticated user to load arbitrary Java classes on the server via the Measurements REST API, enabling confidentiality disclosure and integrity compromise. The flaw stems from incorrect authorization logic in OnmsJexlUberspect that checked method calls on a whitelisted class object against the whitelisted class rather than against java.lang.Class itself, allowing reflection chains such as table.getClass().forName('java.lang.Runtime') to escape the sandbox. No public exploit or CISA KEV listing has been identified at time of analysis, but the upstream GitHub PR provides regression tests that precisely document the bypass technique.
RemediationAI
Upgrade to OpenNMS Meridian 2024.3.12 or 2025.0.9, or OpenNMS Horizon 36.0.3 or newer. These versions contain the OnmsJexlUberspect fix that correctly authorizes java.lang.Class method calls against java.lang.Class itself rather than against whitelisted classes. The upstream fix is tracked at https://github.com/OpenNMS/opennms/pull/8754. If an immediate upgrade is not possible, restrict access to the Measurements REST API endpoint to trusted internal users or service accounts only, as this endpoint is the sole confirmed delivery mechanism. The vendor's own deployment guidance states OpenNMS should not be internet-facing; enforcing network-level controls (firewall rules, VPN requirement) to prevent any direct external access reduces exposure significantly. Note that restricting the REST API may impact legitimate monitoring dashboards or integrations that query measurements.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OpenNMS Meridian and Horizon are Java-based network management platforms that expose a Measurements REST API permitting JEXL (Java Expression Language) expressions for metric computation. The sandbox is enforced by OnmsJexlUberspect, a custom uberspect layer that whitelists specific classes (Math, StrictMath, TreeBasedTable). CWE-470 (Use of Externally-Controlled Input to Select Classes or Code) applies: the flaw allowed user-controlled expressions to invoke java.lang.Class methods - getName, forName, getClassLoader - on the Class object of an otherwise-whitelisted type. Because the authorization check resolved the receiver's identity as the whitelisted class rather than java.lang.Class itself, Class.forName() calls were permitted, enabling arbitrary class loading. Affected CPEs: cpe:2.3:a:the_opennms_group:meridian and cpe:2.3:a:the_opennms_group:horizon (all versions prior to the fixed releases).
Know when Meridian 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:L/UI:N/S:U/C:L/I:L/A:N
Arbitrary Java class loading via Class.forName enables OS-level code execution, making C:H/I:H/A:H appropriate; PR:L reflects mandatory authentication confirmed by CVSS vector.
Primary rating from Vendor (OpenNMS).
CVSS VectorVendor: OpenNMS
Lifecycle Timeline
1DescriptionCVE.org
A JEXL expression sandbox bypass exists in multiple versions of OpenNMS Meridian and Horizon. A low-privileged authenticated user can submit a crafted expression to the Measurements REST API that escapes the sandbox and loads arbitrary Java classes on the server. This can potentially allow an attacker to gain access to confidential information and compromise integrity.
The solution is to upgrade to Meridian 2024.3.12, 2025.0.9 and Horizon 36.0.3 or newer. Meridian and Horizon installation instructions state that they are intended for installation within an organization's private networks and should not be directly accessible from the Internet.
Articles & Coverage 1
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
In OpenMNS Horizon 31.0.8 and versions earlier than 32.0.2 and related Meridian versions, any user that has the ROLE_FIL
The Horizon REST API includes a users endpoint in OpenMNS Horizon 31.0.8 and versions earlier than 32.0.2 on multiple pl
In OpenNMS Horizon, versions opennms-1-0-stable through opennms-27.1.0-1; OpenNMS Meridian, versions meridian-foundation
In OpenNMS Horizon, versions opennms-1-0-stable through opennms-27.1.0-1; OpenNMS Meridian, versions meridian-foundation
In OpenNMS Horizon, versions opennms-17.0.0-1 through opennms-27.1.0-1; OpenNMS Meridian, versions meridian-foundation-2
In OpenNMS Horizon, versions opennms-18.0.0-1 through opennms-27.1.0-1; OpenNMS Meridian, versions meridian-foundation-2
Unauthenticated authorization bypass in the OpenNMS Meridian and Horizon REST API lets any remote attacker who can reach
A BeanShell interpreter in remote server mode runs in OpenMNS Horizon versions earlier than 32.0.2 and in related Meridi
In OpenNMS Horizon, versions opennms-1-0-stable through opennms-27.1.0-1; OpenNMS Meridian, versions meridian-foundation
In OpenNMS Horizon, versions opennms-1-0-stable through opennms-27.1.0-1; OpenNMS Meridian, versions meridian-foundation
OpenNMS Meridian 2016, 2017, 2018 before 2018.1.25, 2019 before 2019.1.16, and 2020 before 2020.1.5, Horizon 1.2 through
In OpenNMS Horizon, versions opennms-1-0-stable through opennms-27.1.0-1; OpenNMS Meridian, versions meridian-foundation
EUVD-2026-57718
GHSA-q2r2-4mh9-4268
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB