CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-107726

CVE-2026-107726: Unrestricted Deserialization in Hazelcast Zero Config Compact Serialization

Alon Barad
Alon Barad
Software Engineer

Oct 9, 2026·6 min read·6 visits

Executive Summary (TL;DR)

Hazelcast Zero Config Compact Serialization permits arbitrary reflective class instantiation, causing sensitive memory leaks, Denial of Service, or remote code execution.

Improper validation of dynamic class resolution within Hazelcast's Zero Config Compact Serialization allows unauthenticated clients to trigger reflective class instantiation. This flaw can be exploited to read arbitrary JVM heap or off-heap memory, crash cluster nodes, or achieve arbitrary code execution under specific classpath conditions. This issue is resolved in Hazelcast versions 5.4.5, 5.5.10, 5.6.1, and 5.7.0.

Vulnerability Overview

Hazelcast combines stream processing with an in-memory data store, presenting a unified real-time data platform. A critical security flaw within the Zero Config Compact Serialization (ZCCS) engine allows unauthenticated network clients to exploit cluster members. This vulnerability affects both the Community and Enterprise Editions, spanning several minor version branches.

At its core, ZCCS facilitates dynamic object serialization by mapping schema declarations to Java classes present on the classpath. However, the system failed to validate the classes specified by the client before attempting reflective instantiation. This lack of validation creates a pathway for attackers to execute arbitrary memory operations and disrupt cluster operations.

By leveraging this flaw, a remote attacker can force a cluster member to load, instantiate, and populate arbitrary classes. This process can leak sensitive data from the JVM heap, corrupt memory structures, or cause the cluster node to crash. The severity of this issue is tracked as CVSS 9.3, signifying a critical vulnerability with severe operational consequences.

Root Cause Analysis

The vulnerability stems from the implementation of Hazelcast's dynamic serialization resolver, which processes client-provided schemas without access control or structural verification. When a client transmits a serialized object, the cluster member parses the schema to identify the target class name via the typeName property. In vulnerable versions, the ReflectiveCompactSerializer resolves this name and attempts to reconstruct the class directly.

No restrictions or allowlists were historically applied to this dynamic class resolution pipeline. Consequently, any class available on the application classpath—including standard JDK libraries, third-party libraries, and internal Hazelcast classes—could be instantiated reflectively. This behavior essentially permits arbitrary class instantiation under the control of an untrusted network client.

This lack of restriction becomes critical when combined with classes that manipulate native memory or interact with system resources. If an attacker specifies a class that manages direct byte buffers or utilizes internal APIs like sun.misc.Unsafe, they can manipulate field values to read or write arbitrary memory addresses. This structural design flaw represents a classic case of improper input validation during deserialization, tracked under CWE-20.

Code Analysis

The primary remediation of the vulnerability is found in commit 361979da12f18950c24719db832ca6c5e7c0534f. The patch introduces a dedicated security component named ReflectiveClassFilter to intercept dynamic serialization requests. This filter enforces class boundaries before the JVM attempts class loading or instantiation.

Below is the structured implementation of the ReflectiveClassFilter introduced in the patch:

public class ReflectiveClassFilter {
    private static final ClassFilter JDK_LIB_BLOCKLIST = new ClassFilter()
            .addPrefixes("java.", "javax.", "com.sun.", "sun.", "jdk.");
 
    @Nullable
    private final ClassFilter blockList;
    @Nullable
    private final ClassFilter allowList;
 
    public ReflectiveClassFilter(@Nonnull CompactSerializationConfig config,
                                 @Nonnull ExtraReflectiveCompactSerializationRestrictions extraRestrictions) {
        blockList = union(JDK_LIB_BLOCKLIST, defaultBlockList, extraRestrictions.propertyBlockList(), configuredBlockList);
        allowList = union(extraRestrictions.propertyAllowList(), configuredAllowList);
    }
 
    public boolean isRestricted(@Nonnull Class<?> clazz) {
        return clazz.getPackage() == null || isOnBlockList(clazz) || !isOnAllowList(clazz);
    }
}

In addition to checking the class names, the patch integrates this filter directly into the serialization flow within CompactStreamSerializer.java. The canBeSerializedAsCompact method is modified to assess whether a class is restricted before returning its serializer:

    public boolean canBeSerializedAsCompact(Class<?> clazz) {
        Class<? extends SerializerAdapter> assignedSerializerType = lookupSerializerType.apply(clazz);
        return CompactStreamSerializerAdapter.class.isAssignableFrom(assignedSerializerType) && (
                classToRegistrationMap.containsKey(clazz) || !classFilter.isRestricted(clazz));
    }

If the class is found to be restricted, the engine gracefully falls back to using a GenericRecord instead of throwing a severe processing error. This prevents reflective class instantiation while preserving session stability for legitimate interactions.

Exploitation Methodology

An exploitation attempt begins with a client establishing a standard TCP connection to the cluster's communication port, usually port 5701. Since the vulnerability resides within the core client-to-member protocol, authentication is not a strictly required barrier if the cluster operates under default or loosely configured security roles. Once connected, the malicious client begins the serialization negotiation phase.

The attacker constructs and transmits a schema payload containing a crafted typeName set to a target class. For example, the attacker might target a class that manages internal JVM resources, off-heap data pointers, or native array lengths. After the schema registration is accepted, the client sends a data operation, such as an IMap insertion or lookup, containing the binary payload mapping to that schema.

Upon receiving the payload, the target Hazelcast member parses the stream and triggers the reflective deserialization sequence. If the target class utilizes native pointers (e.g., off-heap memory addresses) mapped to serializable fields, the client-supplied values overwrite these pointers. When the member attempts to access or serialize this object back, it reads from the manipulated address, resulting in an information leak or a segmentation fault.

Impact Assessment

The impact of exploiting CVE-2026-107726 depends on the cluster environment and classpath configuration. Under typical conditions, the primary impact is a severe confidentiality leak of JVM heap memory, off-heap data structures, and process address space. Attackers can leverage this leak to extract sensitive information, such as active session data, configuration secrets, or cryptographic keys.

In environments running Hazelcast Enterprise Edition, the impact is further amplified by the platform's intensive use of native off-heap storage. By corrupting internal reference pointers, an attacker can corrupt native memory structures. This memory corruption can lead directly to system instability, triggering abrupt node crashes and resulting in cluster-wide Denial of Service (DoS).

Under specific conditions where dangerous library gadgets exist on the application classpath, this vulnerability can lead to remote code execution (RCE). An attacker can utilize the unrestricted dynamic instantiation to trigger specific gadget chains that execute system commands. The vulnerability has been assigned a CVSS score of 9.3, indicating its potential to compromise confidentiality, integrity, and availability completely.

Remediation and Mitigation

The primary remediation path requires upgrading Hazelcast to a non-vulnerable version. Organizations should upgrade to version 5.4.5, 5.5.10, 5.6.1, or 5.7.0 and later immediately. These versions contain the complete patch and enforce strict validation on all Zero Config Compact Serialization (ZCCS) requests.

For environments where immediate upgrades are not feasible, administrators must implement workarounds by restricting the ZCCS engine via configuration. A declarative configuration must be added to the Hazelcast XML or YAML settings. This configuration restricts ZCCS to a predefined list of safe classes, packages, or prefixes.

Below is an example of an XML configuration using the zero-config-filter element to limit dynamic serialization:

<serialization>
    <compact-serialization>
        <zero-config-filter defaults-disabled=\"false\">
            <blacklist>
                <class>com.acme.app.BeanComparator</class>
            </blacklist>
            <whitelist>
                <class>example.Foo</class>
                <package>com.acme.app</package>
                <prefix>com.acme.</prefix>
            </whitelist>
        </zero-config-filter>
    </compact-serialization>
</serialization>

In addition to configuration-level mitigations, network segmentations should be enforced. Access to the client communication ports (default 5701) must be strictly restricted to trusted application nodes using stateful firewalls or security groups.

Fix Analysis (1)

Technical Appendix

CVSS Score
9.3/ 10

Affected Systems

Hazelcast Community EditionHazelcast Enterprise Edition

Affected Versions Detail

Product
Affected Versions
Fixed Version
Hazelcast Community Edition
Hazelcast
< 5.4.55.4.5
Hazelcast Community Edition
Hazelcast
>= 5.5.0, < 5.5.105.5.10
Hazelcast Community Edition
Hazelcast
== 5.6.05.6.1
AttributeDetail
CWE IDCWE-20
Attack VectorNetwork
CVSS v4.09.3 (Critical)
EPSS ScoreNot Available
Exploit Statusnone
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access

Known Exploits & Detection

Vendor AdvisoryOfficial security advisory for CVE-2026-107726 detailing the dynamic serialization flaw and remediation

References & Sources

  • [1]GitHub Security Advisory GHSA-6v25-8wq6-xq4j
  • [2]Hazelcast Community Edition 5.7.0 Release Notes

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•36 minutes ago•CVE-2026-107394
6.8

CVE-2026-107394: Server-Side Request Forgery Bypass via Parser Differential in Indico

An incomplete Server-Side Request Forgery (SSRF) validation check in Indico prior to version 3.3.13 allows authenticated event organizers to bypass outbound network restrictions. By utilizing backslash characters within crafted URLs, attackers can exploit a parser differential between the application's validator and the downstream HTTP client library to access internal network resources.

Alon Barad
Alon Barad
1 views•6 min read
•about 2 hours ago•CVE-2026-107717
6.5

CVE-2026-107717: Chat Role Injection and Prompt Boundary Bypass in Banks Library

CVE-2026-107717 represents a critical prompt boundary bypass and chat role injection vulnerability in the Banks Python package (versions prior to 2.5.0). The library parses generated template outputs line-by-line, attempting to validate each segment as a JSON-serialized ChatMessage object without validating the source boundaries of the text. If an application integrates user input directly into a prompt template, a remote, unauthenticated attacker can supply multi-line inputs with structured JSON payloads. This input is then parsed as high-privilege system instructions or tool execution responses, completely hijacking downstream Large Language Model behavior.

Alon Barad
Alon Barad
7 views•6 min read
•about 3 hours ago•CVE-2026-107716
7.3

CVE-2026-107716: Path Traversal and Link Following in banks DirectoryPromptRegistry

Improper pathname limitation and link resolution (CWE-22 and CWE-59) in the banks library prior to version 2.5.1 allow local attackers to read or write arbitrary files via crafted symbolic links in the prompt directory registry.

Amit Schendel
Amit Schendel
8 views•7 min read
•about 5 hours ago•CVE-2026-107719
4.2

CVE-2026-107719: Session Expiration Bypass in fast-jwt via Verifier Cache

An authentication bypass vulnerability in NearForm's fast-jwt before version 6.3.4 allows attackers to replay expired tokens due to an error in the verifier's cache expiration logic. When caching is enabled, the cache TTL defaults to 10 minutes instead of honoring the token's exp claim if the token lacks an iat claim.

Alon Barad
Alon Barad
7 views•7 min read
•about 6 hours ago•CVE-2026-61427
7.3

CVE-2026-61427: Authentication Bypass and Unvalidated Tool Execution in PraisonAI MCP HTTP-Stream Server

CVE-2026-61427 is a critical authentication bypass and improper input validation vulnerability within the Model Context Protocol (MCP) HTTP-stream server of PraisonAI. In versions prior to 4.6.78, the server lacks authentication by default and forwards client messages directly to Python tool handlers without input validation. When bound to non-localhost interfaces, this permits unauthenticated remote attackers to perform unauthorized administrative operations and execute tools.

Alon Barad
Alon Barad
8 views•4 min read
•about 7 hours ago•CVE-2026-107387
6.2

CVE-2026-107387: Uncontrolled Memory Allocation (OOM) in music-metadata APEv2 Parser

CVE-2026-107387 is a high-impact uncontrolled memory allocation vulnerability in music-metadata, a widely used Node.js metadata parser. The flaw occurs in the APEv2 tag parser, where the library reads an attacker-controlled 32-bit integer indicating the tag size and immediately requests a corresponding heap buffer reservation. Because this allocation occurs before validating if the input stream actually contains those bytes, an attacker can supply a minuscule audio file to trigger large, disproportionate allocations, resulting in heap exhaustion and an uncatchable process-wide Out of Memory (OOM) crash.

Amit Schendel
Amit Schendel
8 views•5 min read