/

CVE-2026-67615

Severity:

HIGH RISK

(8.8)

Java Deserialization Bypass (CWE-502) in openEQUELLA

CVE-2026-67615

Awaiting Analysis

Vulnerability type

Category:

Unsafe Java Deserialization

CWE:

CWE-184, CWE-502

Impact:

Authenticated Remote Code Execution

Severity:

HIGH RISK

(8.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

openEQUELLA before 2026.1.0 contains an authenticated remote code execution vulnerability in its HTTP invoker endpoint. An authenticated non-guest user may bypass deserialization filtering and cause arbitrary code execution when crafted serialized data reaches an unsafe object-processing and JNDI execution path.

Affected context

The vulnerability occurs in openEQUELLA deployments that expose the HTTP invoker functionality under /invoker/* and permit access by authenticated non-guest users. Risk is present when serialized Java objects are processed through a filtering mechanism that can be bypassed, allowing nested data to reach a separate deserialization stream without equivalent class restrictions.

Exploit preconditions

  • Attack surface: The HTTP invoker endpoint under /invoker/*
  • Required access: Valid authentication as a non-guest user
  • Trigger point: Processing of attacker-controlled serialized Java data by the invoker service
  • Why exploitation is possible: A class-name denylist applied by PluginAwareObjectInputStream does not consistently constrain nested deserialization performed by another ObjectInputStream, allowing unsafe object processing to reach a JNDI-related execution sink

Why this happens

The issue combines unsafe Java deserialization with incomplete enforcement of a class-name restriction policy. Although the initial stream applies a denylist, nested serialized content can be encapsulated in an object whose internal data is later processed by a separate stream without the same restrictions. This inconsistent trust boundary maps primarily to CWE-502: Deserialization of Untrusted Data and is related to CWE-184: Incomplete List of Disallowed Inputs, because a denylist does not comprehensively constrain all deserialization paths.

Potential impact

  • An authenticated user may execute arbitrary code in the application process
  • The application host may be compromised
  • Confidential application data could be accessed or altered
  • Server-side credentials and tokens could be exposed
  • The compromised service could be used for lateral movement or further attacks

General mitigation guidance

Mitigation generally focuses on eliminating unsafe native Java deserialization from network-facing interfaces and ensuring that every nested or delegated parsing path applies the same trust controls.

Common defensive patterns include:

  • Prefer typed, schema-validated data formats that do not instantiate arbitrary Java classes
  • Avoid relying solely on denylist-based deserialization filters
  • Apply allowlisted class constraints consistently across all object streams and wrapper types
  • Restrict or remove unnecessary HTTP invoker and JNDI functionality
  • Run the application with least-privilege accounts and tightly scoped outbound network access
  • Isolate the service from sensitive management interfaces and internal resources
  • Treat authenticated users and serialized request data as untrusted

How teams detect issues like this

Organizations can look for:

  • Static analysis findings involving ObjectInputStream, native Java serialization, and deserialization of request data
  • Code paths that create secondary object streams or deserialize nested wrapper objects
  • Review signals showing denylist-only filtering or inconsistent filter propagation
  • HTTP invoker endpoints exposed beyond intended administrative boundaries
  • Unexpected JNDI lookups, outbound naming-service connections, or unusual child processes from the application
  • Policy checks requiring schema-based serialization and restricting network-accessible Java deserialization

Automated application security and code review tools may help identify unsafe deserialization APIs, incomplete filtering, and reachable JNDI sinks.

Sources

SourceLink
blog.evan.latblog.evan.lat/posts/openeq
github.comgithub.com/openequella/openEQUELLA/releases/tag/2026.1.0
github.comgithub.com/openequella/openEQUELLA/security/advisories/GHSA-97gw-jwjx-fx9h
vulncheck.comvulncheck.com/advisories/openequella-authenticated-rce-via-java-deserialization-in-http-invoker

Frequently asked

questions

It may be exploitable over the network when the HTTP invoker endpoint is reachable and the attacker has valid non-guest credentials.

Yes. The described attack requires authentication as a non-guest openEQUELLA user, although the account may not need administrative privileges.

Remove or isolate network-facing native Java deserialization and use schema-validated data formats. Where deserialization cannot be removed, enforce consistent allowlist controls across every nested stream.

Treat serialized request data as untrusted, avoid denylist-only controls, review delegated parsing paths, restrict JNDI and outbound connectivity, and enforce least privilege for the application process.

Find out what's already
exploitable in your codebase.