CVE-2026-72687
Executive Summary
CVE-2026-72687 is a critical denial-of-service vulnerability in Elasticsearch that allows a low-privileged authenticated user to crash individual node processes via a single crafted request. The flaw resides in the handling of opaque identifiers that are deserialized before authenticity verification, where an attacker-controlled size value drives an unbounded memory allocation not governed by existing memory-usage controls.
The vulnerability is remotely exploitable over the network with low attack complexity and requires only low-privileged authentication. Successful exploitation results in a fatal out-of-memory (OOM) condition that terminates the affected node, causing service disruption. As of the time of reporting, no patch is available, no vendor fix has been released, and no CISA KEV listing or public exploit code has been identified. The attack surface is significant given Elasticsearch deployments are frequently internet-exposed for log aggregation, search, and observability pipelines.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The vulnerability class is CWE-789: Uncontrolled Memory Allocation. The NVD description indicates that the flaw exists in how Elasticsearch processes opaque identifiers submitted in requests. The core mechanism involves the following sequence:
Request Ingestion: A low-privileged authenticated user submits a single small request containing a forged opaque identifier.
Premature Deserialization: Elasticsearch decodes and deserializes the identifier before confirming that the identifier was legitimately issued by the cluster. This ordering is the root cause — trust is implicitly extended to the identifier's contents prior to validation of its provenance.
Size-Value-Driven Allocation: The deserialized identifier contains a size value that directly drives a memory allocation operation. Critically, this allocation operation is neither capped (no upper bound on allocation size) nor accounted for by the cluster's available memory-usage controls. This means that standard safeguards like heap size limits, circuit breakers, or index-level memory quotas are bypassed.
Fatal Termination: The oversized allocation triggers an out-of-memory condition. The description states this condition is "fatal and terminates the affected node process," indicating that the OOM is not recoverable and results in process death rather than a graceful degradation or request rejection.
The attack mechanism is a classic memory-exhaustion denial of service, but with an interesting nuance: the attacker does not need to send a large payload. The amplification factor comes from a small request (containing a forged identifier) causing a large allocation. This makes the attack particularly insidious for detection — network-layer anomaly detection based on payload size will not flag the malicious traffic.
Attack Surface Analysis: The vulnerability is exploitable over the network (AV:N) with low attack complexity (AC:L). The attacker requires low-privileged credentials (PR:L) — meaning any authenticated user with minimal privileges in the Elasticsearch cluster can trigger exploitation. No user interaction is required (UI:N). The impact scope is unchanged (S:U), meaning only the affected component is compromised. The impact is exclusively high availability (A:H) with no confidentiality (C:N) or integrity (I:N) impact.
The specific request type, endpoint, or API path is not disclosed in the NVD description, nor is the exact format of the "opaque identifier." Insufficient technical detail is available to enumerate exact code-level function names or request structures. The attack mechanism is understood at the class level: premature deserialization of untrusted input before authenticity validation, followed by an uncontrolled size-driven allocation.
Affected Versions: No specific version range has been disclosed. The "Affected Versions" field is empty, and the vendor has not confirmed which Elasticsearch versions are vulnerable. Given that the patch status is 0/4 (unpatched), it is prudent to assume all currently supported Elasticsearch versions are at risk until Elastic publishes an advisory.
Exploitation Scenarios
No public PoC or exploit code has been identified for this CVE. The attack chain below is inferred from the vulnerability class and the NVD description.
Scenario 1: Single-Node Cluster Takedown (Common in Smaller Deployments)
Reconnaissance: The attacker identifies an internet-exposed Elasticsearch endpoint (typically port 9200) using Shodan queries such as
product:elasticsearchorport:9200 elasticsearch. They confirm the deployment is running a vulnerable version (unknown at this time, so all versions are presumed vulnerable). The attacker obtains low-privileged credentials, either through credential stuffing, default credential testing (e.g., theelasticuser with default passwords in unhardened deployments), or by compromising a legitimate low-privileged user account.Trigger: The attacker crafts a single small HTTP request containing a forged opaque identifier. The exact request format is unknown, but based on the description, it is a standard API request that Elasticsearch will parse and deserialize. The attacker controls the size value within the identifier.
Execution: The request is submitted. Elasticsearch begins processing the request, deserializing the identifier before validating its cluster-issued authenticity. The size value is read and used to drive a memory allocation (e.g., allocating a buffer, byte array, or object based on the size field). Because the allocation is unbounded and not subject to memory-usage controls, the allocation succeeds until the node's heap is exhausted.
Impact: The node process terminates fatally due to the OOM condition. In a single-node cluster, this results in total service unavailability. All queries, indexing operations, and cluster coordination cease. The cluster enters a red or unavailable state.
Scenario 2: Multi-Node Cluster Degradation
Reconnaissance: Same initial steps as Scenario 1. The attacker identifies a multi-node Elasticsearch cluster, possibly through the
cluster_nameexposed in the response headers or through the/_cluster/healthendpoint (accessible to low-privileged users).Trigger: The attacker identifies which nodes are data nodes (responsible for indexing and querying) versus master-eligible nodes. They target a data node handling time-series data (e.g., logs, metrics) to maximize disruption.
Execution: The attacker submits the forged request to the target node. The request is processed, triggering the fatal OOM and terminating that node's process.
Impact: Depending on the cluster's configuration, the loss of a data node may trigger shard reallocation, increased load on surviving nodes, and potential cascading failures. If the attack targets a master-eligible node, the cluster may enter an unstable state during master election. Repeated attacks against multiple nodes can cause full cluster outage. Since the attacker requires only low privileges, a single compromised user account can degrade the entire cluster.
Scenario 3: Repeated Attack — Persistent DoS
- Reconnaissance: As above.
- Trigger: The attacker scripts the forged request and retries it as quickly as the node restarts.
- Execution: Each fresh node instance is crashed within seconds of coming online.
- Impact: This creates a denial-of-service loop, effectively making the cluster permanently unavailable despite automatic restarts. Organizations relying on Elasticsearch for SIEM, log analytics, or production search functionality experience sustained operational disruption.
Impact Assessment
Business Impact: This vulnerability allows any low-privileged authenticated user to crash Elasticsearch nodes. The business impact is a denial of service affecting:
- SIEM and security monitoring: Elasticsearch is a core component of Elastic SIEM and many third-party security analytics platforms. Loss of Elasticsearch means loss of security visibility, event correlation, and alerting — creating a window of blindness during which other attacks may go undetected.
- Log aggregation and observability: Organizations using Elastic for centralized logging lose access to application logs, infrastructure metrics, and tracing data, hampering incident response and operational troubleshooting.
- Search functionality: E-commerce platforms and content-heavy applications relying on Elasticsearch for product search, faceted navigation, and recommendation engines experience degraded or lost search capability, directly impacting revenue and user experience.
CVSS Subscore Analysis: The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H yields a base score of 6.5 (Medium). The high availability impact (A:H) is the primary driver. The low privilege requirement (PR:L) means existing user accounts with minimal rights are sufficient — this broadens the attacker pool significantly. The attack complexity is low (AC:L), meaning no special conditions or race conditions are required. The attack requires no user interaction and is fully network-accessible.
Blast Radius:
- Single-node clusters: Complete service outage.
- Multi-node clusters: Partial or complete outage depending on node roles targeted. Data loss risk exists if shards are not replicated sufficiently before node death.
- Managed Elasticsearch services: Cloud-hosted Elasticsearch offerings (e.g., Elastic Cloud, AWS OpenSearch) that rely on this code path may be affected, though the management layer may restart nodes automatically — still producing availability gaps.
- Downstream consumers: Any application querying the affected cluster (Kibana dashboards, Beats pipelines, custom applications) will fail to receive responses, cascading operational impact.
Exploitation Likelihood: Currently assessed as low-to-moderate in the near term given no public PoC, but the vulnerability class is well-understood (memory exhaustion via deserialization), the attack surface is broad (any authenticated user), and the trigger is a single small request. Once the research community reverse-engineers the specific code path, weaponization is expected. The 6.5 CVSS score understates real-world severity because availability loss in critical infrastructure often has outsized business impact.
Detection Guidance
The following detection mechanisms are designed to detect exploitation attempts of CVE-2026-72687. Because the exact request format is undisclosed, detection rules focus on anomalous opaque identifier patterns, deserialization-related exceptions, OOM error indicators, and node process termination — all behaviors strongly correlated with this vulnerability class.
Sigma Rule
title: Elasticsearch Opaque Identifier Deserialization DoS
id: 9c3e861b-3a20-4a2e-9a5c-5e6b2a1f3c4d
status: experimental
description: >
Detects a small Elasticsearch request containing a forged opaque
identifier that may cause uncontrolled memory allocation (CWE-789)
and node termination, associated with CVE-2026-72687.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-72687
tags:
- attack.t1499
- attack.t1203
- cwe.789
logsource:
product: elasticsearch
service: elasticsearch
detection:
selection_oom:
message|contains:
- 'OutOfMemoryError'
- 'java.lang.OutOfMemoryError'
- 'unable to create native thread'
- 'GC overhead limit exceeded'
selection_deserialization:
message|contains:
- 'deserialization'
- 'StreamCorruptedException'
- 'InvalidClassException'
- 'ClassCastException'
selection_identifier:
message|contains:
- 'opaque_id'
- 'opaque identifier'
- 'opaqueId'
condition: selection_oom or (selection_deserialization and selection_identifier)
timeframe: 60s
falsepositives:
- Legitimate deserialization errors caused by version mismatches
between nodes in a mixed-version cluster.
level: high
YARA Rule
rule Elasticsearch_Opaque_Deserialization_CVE_2026_72687 {
meta:
description = "Detects byte patterns associated with Elasticsearch opaque identifier deserialization causing memory exhaustion (CVE-2026-72687)"
author = "Valters IT Cyber Threat Intelligence"
date = "2026-01-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-72687"
cve = "CVE-2026-72687"
severity = "high"
strings:
$s1 = "opaque_id" ascii nocase
$s2 = "opaqueId" ascii nocase
$s3 = "deserialize" ascii nocase
$s4 = "deserialization" ascii nocase
$s5 = "OutOfMemoryError" ascii nocase
$s6 = "Caused by: java.lang.OutOfMemoryError" ascii ascii
$s7 = "allocation" ascii nocase
$s8 = "GC overhead limit exceeded" ascii nocase
$e1 = "CVE-2026-72687" ascii
condition:
uint16(0) == 0x4D5A or uint32(0) == 0x464C457F // PE or ELF binary
and 2 of them
or
// Log file detection
($s5 or $s6 or $s8) and ($s1 or $s2)
}
Suricata IDS Rule
alert http any any -> $HTTP_SERVERS any (
msg:"ET EXPLOIT Elasticsearch CVE-2026-72687 Opaque Identifier Deserialization DoS Attempt";
flow:to_server,established;
content:"POST";
http_method;
content:"/_search";
http_uri;
nocase;
pcre:"/opaque[_\-]?id/i";
classtype:attempted-dos;
sid:2026726871;
rev:1;
metadata:created_at 2026_01_01, updated_at 2026_01_01, cve CVE-2026-72687;
reference:url,nvd.nist.gov/vuln/detail/CVE-2026-72687;
detection_filter:track by_src, count 20, seconds 60;
)
Note: The rule above uses _search as a commonly used Elasticsearch query endpoint to demonstrate endpoint-specific matching. Since the exact vulnerable endpoint is undisclosed, this rule may be refined once vendor details are published. The core detection logic focuses on HTTP requests to an Elasticsearch server that contain opaque identifier parameters, limited by a threshold to reduce false positives.
Elastic Detection
// Process termination events on Elasticsearch nodes
any where event.category == "process" and process.name == "java"
and event.action in ("process_terminated", "process_stopped")
// Correlate with OOM errors in Elasticsearch logs
// This rule should be run on indices containing Elasticsearch server logs (e.g., elasticsearch-*)
file_log where process.name == "java"
and message contains "OutOfMemoryError"
and message contains "opaque"
Splunk SPL Query
index=elasticsearch* sourcetype=elasticsearch
OR (index=* sourcetype=java*)
| search "OutOfMemoryError" OR "GC overhead limit exceeded" OR "deserialization" OR "opaque"
| table _time, host, source, sourcetype, message
| stats count by host, source
| where count > 5
Wazuh OSSEC Rule
<group name="elasticsearch,">
<rule id="100272" level="12">
<decoded_as>json</decoded_as>
<field name="message">\.*OutOfMemoryError\.*</field>
<description>Elasticsearch node experienced OutOfMemoryError - possible CVE-2026-72687 exploitation</description>
<group>elasticsearch,</group>
<mitre><id>T1499</id></mitre>
</rule>
<rule id="100273" level="10">
<decoded_as>json</decoded_as>
<field name="message">\.*opaque\.*</field>
<field name="message">\.*deseriali[sz]ation\.*</field>
<description>Elasticsearch received request with opaque identifier containing deserialization activity - possible CVE-2026-72687 exploitation</description>
<group>elasticsearch,</group>
<mitre><id>T1203</id></mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch Status: Patch confidence is 0/4. No patch evidence from any tracked source exists. The vendor has not released a fix, no version has been identified as patched, and no workarounds have been formally published.
Immediate Mitigations (until an official fix is available):
Restrict authenticated access: Enforce strict access control lists (ACLs) on the Elasticsearch HTTP port (9200) at the network perimeter and host firewall level. Allow only trusted application servers and internal monitoring systems to reach the API. This limits the attack surface to trusted network segments, though it does not eliminate risk from compromised internal hosts.
Enable authentication and role-based access control: Ensure authentication is mandatory (never run with
xpack.security.enabled: false). Assign least-privilege roles. Audit and revoke unnecessary user accounts. Every low-privileged account is a potential exploitation vector.Harden JVM settings: Set explicit upper bounds on heap size (
-Xmx) and consider enabling-XX:+UseContainerSupportif relevant. While the vulnerability bypasses memory-usage controls, constraining the JVM heap may reduce the allocation ceiling. Additionally, set-XX:MaxDirectMemorySizeand-XX:MaxMetaspaceSizeto bound non-heap allocations.Run Elasticsearch in a container with memory limits: Use Docker
--memoryflags or Kubernetes resource limits to cap the container memory. This can prevent a fatal OOM from taking down the entire host and may allow other processes to continue.Deploy/rely on JVM crash protection: Ensure
-XX:ExitOnOutOfMemoryErroris set totrueso the JVM exits cleanly on OOM rather than hanging or corrupting data, and monitor for restarts.Network segmentation: Isolate Elasticsearch in a private subnet with no direct internet exposure. Use a reverse proxy or API gateway with verification logic to intercept and drop requests with malformed opaque identifiers before they reach Elasticsearch.
Patch/Upgrade Steps:
- Monitor the Elastic Security Advisory page (https://www.elastic.co/security-advisories) for a bulletin referencing CVE-2026-72687.
- Subscribe to the Elastic security announcement mailing list to receive immediate notifications.
- When the patch is released, apply it to all nodes in the cluster as part of a rolling upgrade to maintain cluster availability. Upgrade plan: upgrade master-eligible nodes first, then data nodes, then coordinating-only nodes.
- If running managed Elasticsearch (Elastic Cloud, Elastic Cloud Enterprise), check the provider's maintenance window notifications as the hosting vendor may apply the patch automatically.
Long-Term Hardening:
Zero-trust architecture: Move away from perimeter-based trust. Even for internal services, assume that any authenticated user could become malicious. Implement fine-grained field-level security and document access.
Input validation: Deploy a Web Application Firewall (WAF) or reverse proxy that validates opaque identifier formats against a strict schema before forwarding to Elasticsearch. Reject any request with identifiers that do not conform to expected format (length bounds, character set, checksum).
Monitoring: Implement the detection rules above in your SIEM. Alert on OOM errors, node process restarts, and deserialization exceptions. Set baselines for node uptime and alert on unexpected node churn.
Redundancy: Ensure every cluster has proper replica shards (≥1) and runs on a minimum of 3 master-eligible nodes. Even with the vulnerability, this reduces blast radius from total outage to degraded service during node restart.
Regular security reviews: Periodically review Elasticsearch configuration against CIS benchmarks for Elasticsearch and apply hardening standards like the Elasticsearch Hardening Guide.
References
NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-72687 — Official NVD record containing the vulnerability description, CVSS scoring, and CWE classification.
Elastic Security Advisories: https://www.elastic.co/security-advisories — Monitor this page for the official vendor advisory. As of this report, no advisory has been published for this CVE, and the page should be checked regularly for updates.
MITRE ATT&CK — T1499 (Endpoint Denial of Service): https://attack.mitre.org/techniques/T1499/ — The kill-chain phase mapping for denial-of-service style attacks against application endpoints. This technique class encompasses resource exhaustion attacks of this nature.
MITRE ATT&CK — T1203 (Exploitation for Client Execution): https://attack.mitre.org/techniques/T1203/ — Related technique covering exploitation of vulnerabilities in software that processes attacker-controlled data; applicable to this deserialization-based flaw.
CWE-789 — Uncontrolled Memory Allocation: https://cwe.mitre.org/data/definitions/789.html — The weakness classification for this vulnerability, providing background on the flawed pattern of unbounded size-driven allocation.
Threat Actor / Exploit-in-the-Wild Evidence: No evidence of active exploitation in the wild exists at the time of writing. No threat actor campaigns have been attributed to this vulnerability, and the CVE is not listed on CISA's Known Exploited Vulnerabilities (KEV) catalog. The PoC status is unknown, and no public exploit code has been discovered. However, given the attack's simplicity (a single small request from an authenticated user), weaponization is probable once the vulnerable code path is identified and disclosed. Enterprise security teams are strongly advised to monitor both the Elastic advisory page and public exploit repositories (GitHub, ExploitDB) for the first PoC release and update their defensive postures accordingly.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.