Skip to main content

Eclipse OpenJ9 CVE-2026-16441

| EUVDEUVD-2026-46359 MEDIUM
Reliance on Undefined, Unspecified, or Implementation-Defined Behavior (CWE-758)
2026-07-21 eclipse GHSA-cp45-6q6c-3772
6.9
CVSS 4.0 · Vendor: eclipse
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Identify Java app on OpenJ9 ≤0.60 with dynamic class loading
  2. Delivery
    Load initial concrete superclass to trigger JIT vtable caching
  3. Exploit
    Replace superclass method with abstract version via hot deployment or instrumentation
  4. Install
    Invoke invokeinterface on affected subclass instance
  5. C2
    JIT fast-path skips abstract method check
  6. Execute
    Unintended interface default method executes silently
  7. Impact
    Integrity violation or secondary data disclosure

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Reliance on undefined/unspecified behavior
Exploitation Conditions

Exploitation requires Eclipse OpenJ9 version 0.60 or earlier as the executing JVM - other JVM implementations (HotSpot, GraalVM) are not affected. The specific triggering condition is: a class hierarchy must undergo a concrete-to-abstract superclass method transition after the JIT compiler has already cached a vtable entry for that method, which occurs in environments supporting dynamic class reloading, OSGi hot deployment, or Java instrumentation agents that redefine classes at runtime. The CVSS 4.0 vector confirms PR:L (low privileges required), UI:A (active user interaction needed to trigger the invokeinterface dispatch), and AT:P (specific attack prerequisites - the class evolution condition - must be present). Standard Java applications with static, non-reloaded class hierarchies are not vulnerable. The limiting factors are: attacker must have the ability to influence class hierarchy evolution in the target JVM process; the vulnerable code path is in JIT-compiled hot paths and may not activate in interpreted-only or cold-start scenarios; and the bug only manifests on the specific invokeinterface bytecode for methods resolved through vtable slots that have become abstract.

Impact

The CVSS 4.0 score of 6.9 (Medium) reflects the combination of high attack complexity (AC:H), specific attack prerequisites (AT:P) - meaning a non-default class-evolution scenario must be in place - required active user interaction (UI:A), and low-privileged access (PR:L). Integrity impact is rated High for both the vulnerable system (VI:H) and subsequent system (SI:H), reflecting that unintended code executes silently where an exception should terminate the operation; confidentiality of the vulnerable system is rated None (VC:N) though the 'Information Disclosure' tag suggests subtle secondary leakage through wrong method execution. No EPSS data was provided, limiting probabilistic scoring. The absence of a CISA KEV listing and any mention of a public exploit means exploitation status is unconfirmed. Real-world risk is substantially lower than the integrity impact scores suggest: triggering the bug requires both an OpenJ9 JVM at or below 0.60 and a class hierarchy that undergoes a concrete-to-abstract method transition after JIT compilation, a scenario requiring attacker influence over class loading or hot deployment mechanisms. This is not a trivial precondition. The JIT vs. interpreter behavioral discrepancy also means the bug is non-deterministic across execution paths, complicating reliable exploitation.

Exploit ScenarioDerived

An attacker with low-level access to a Java application's deployment pipeline - such as the ability to publish an OSGi bundle or inject a class via a custom ClassLoader - loads a class hierarchy where a superclass method is initially concrete (triggering JIT compilation and vtable caching) and subsequently replaces it with an abstract version. When the application's hot path next invokes invokeinterface on a subclass instance, OpenJ9's JIT fast-path bypasses the abstract method guard and silently dispatches to an interface default method chosen by the attacker, causing incorrect program behavior or data leakage without throwing the expected AbstractMethodError. No public exploit code has been identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 21, 2026

Incorrect interface method dispatch in Eclipse OpenJ9 up to version 0.60 causes the JVM to silently execute an unintended interface default method instead of raising AbstractMethodError or IllegalAccessError when a previously JIT-compiled concrete superclass method is subsequently recompiled as abstract. Applications running on OpenJ9 with dynamic class-loading or OSGi-style hot deployment are at risk of integrity violations - untended code paths execute where exceptions should be thrown. No confirmed active exploitation exists and this CVE does not appear in CISA KEV; EPSS data was not provided, and the high attack complexity (AC:H) and specific attack prerequisites (AT:P) significantly limit real-world exploitability.

RemediationAI

Upgrade Eclipse OpenJ9 to a release that incorporates the fix from pull request https://github.com/eclipse-openj9/openj9/pull/24396. Monitor the Eclipse OpenJ9 security advisory at https://github.com/eclipse-openj9/openj9/security/advisories/GHSA-hcfc-9hjx-2q7f for a confirmed patched release version tag, as the exact fixed version is not independently confirmed from available data. As a compensating control where immediate upgrade is not feasible, disable JIT compilation entirely by launching the JVM with -Xint (interpreted-only mode), which avoids the vulnerable JIT fast-path dispatch; note this carries a severe performance penalty and is not suitable for production throughput-sensitive workloads. Additionally, restrict or disable dynamic class-loading mechanisms - such as OSGi hot deployment, custom ClassLoader hierarchies, or Java agents that instrument class hierarchies - to eliminate the concrete-to-abstract method evolution that triggers the bug. Restricting untrusted code from influencing class loading is the most targeted compensating control with the least performance trade-off.

Affected VersionsENISA

OpenJ9 0.8.0 <0.60.0

Affected Packages

euvd openj9 fix: 0.60.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Eclipse OpenJ9 (CPE: cpe:2.3:a:eclipse_foundation:openj9:*:*:*:*:*:*:*:*) is an alternative JVM implementation originally developed by IBM and contributed to the Eclipse Foundation. The vulnerability resides in the JIT-compiled interface method lookup code in runtime/codert_vm/cnathelp.cpp and the JIT compiler environment in runtime/compiler/env/VMJ9.cpp. The root cause is CWE-758 (Reliance on Undefined, Unspecified, or Implementation-Defined Behavior): the JIT fast-paths for invokeinterface bytecode dispatch did not replicate the interpreter's abstract-method guard. When a vtable slot was populated during JIT compilation pointing to a concrete method, and that method later became abstract through class hierarchy evolution, the JIT path bypassed the check for J9AccAbstract in the method's ROM modifiers. Instead of throwing the correct JVM exception, it fell through to dispatch via an interface default method. The fix introduces shouldThrowIllegalAccessForAbstractInvokeInterface - a new internal VM function that checks J9AccAbstract and J9AccPublic on the ROM method before allowing dispatch - and applies it consistently across the old_slow, old_fast, and fast JIT interface lookup helpers, mirroring the existing interpreter logic in BytecodeInterpreter.hpp and VM_MHInterpreter::dispatchLoop.

Know when Openj9 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

Vendor (eclipse) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:A/VC:N/VI:H/VA:L/SC:L/SI:H/SA:N
vuln.today AI 7.1 HIGH

Network-delivered class files trigger the flaw with low privileges; specific class-evolution prerequisites and user-initiated dispatch raise AC:H and UI:R; silent execution of unintended code across a scope boundary justifies S:C with I:H and minor C:L.

3.1 AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:H/A:L
4.0 AV:N/AC:H/AT:P/PR:L/UI:A/VC:N/VI:H/VA:L/SC:L/SI:H/SA:N
SUSE 7.1 HIGH
AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:H/A:L
Red Hat 5.4 MEDIUM

Primary rating from Vendor (eclipse).

CVSS VectorVendor: eclipse

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
Low
User Interaction
Active
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
High
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Jul 21, 2026 - 20:18 EUVD

DescriptionCVE.org

In Eclipse OpenJ9 versions up to 0.60, when executing class files where a previously concrete superclass method has been recompiled as abstract, execution is incorrectly delegated to an interface default method.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Low
niche JVM alternative, primarily IBM Cloud and enterprise Java workloads
Data Quality
7 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Openj9

View all
CVE-2021-28167 MEDIUM POC
6.5 Apr 21

In Eclipse Openj9 to version 0.25.0, usage of the jdk.internal.reflect.ConstantPool API causes the JVM in some cases to

CVE-2021-41035 CRITICAL
9.8 Oct 25

In Eclipse Openj9 before version 0.29.0, the JVM does not throw IllegalAccessError for MethodHandles that invoke inacces

CVE-2019-11772 CRITICAL
9.8 Jul 17

In Eclipse OpenJ9 prior to 0.15, the String.getBytes(int, int, byte[], int) method does not verify that the provided byt

CVE-2023-2597 CRITICAL
9.1 May 22

In Eclipse Openj9 before version 0.38.0, in the implementation of the shared cache (which is enabled by default in OpenJ

CVE-2019-17631 CRITICAL
9.1 Oct 17

From Eclipse OpenJ9 0.15 to 0.16, access to diagnostic operations such as causing a GC or creating a diagnostic file are

CVE-2019-11771 HIGH
7.8 Jul 17

AIX builds of Eclipse OpenJ9 before 0.15.0 contain unused RPATHs which may facilitate code injection and privilege eleva

CVE-2018-12539 HIGH
7.8 Aug 14

In Eclipse OpenJ9 version 0.8, users other than the process owner may be able to use Java Attach API to connect to an Ec

CVE-2019-10245 HIGH
7.5 Apr 19

In Eclipse OpenJ9 prior to the 0.14.0 release, the Java bytecode verifier incorrectly allows a method to execute past th

CVE-2019-11775 HIGH
7.4 Jul 30

All builds of Eclipse OpenJ9 prior to 0.15 contain a bug where the loop versioner may fail to privatize a value that is

CVE-2024-3933 HIGH
7.3 May 27

In Eclipse OpenJ9 release versions prior to 0.44.0 and after 0.13.0, when running with JVM option -Xgc:concurrentScaveng

CVE-2025-4447 HIGH
7.0 May 09

In Eclipse OpenJ9 versions up to 0.51, when used with OpenJDK version 8 a stack based buffer overflow can be caused by m

CVE-2025-14549 MEDIUM
6.9 Dec 15

Out-of-bounds read in Eclipse OMR 0.7.0 and later can occur when the compiler optimization for Latin-compatible charset

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Module for Package Hub 15 SP7 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP5 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP6 Affected
openSUSE Leap 15.3 Affected
openSUSE Leap 15.4 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy