CVE-2026-72686
Cyber Threat Intelligence Report: CVE-2026-72686
Executive Summary
CVE-2026-72686 is an unpatched denial-of-service (DoS) vulnerability in Elasticsearch that allows a low-privileged authenticated user to terminate a node process by submitting a crafted request containing an excessively long value. The flaw resides in an internal validation component that uses a recursive routine without applying a bound to the length of the value being validated, causing stack exhaustion and a fatal error that crashes the affected node. With a CVSS score of 6.5 (High availability impact, no confidentiality or integrity impact), this vulnerability represents a significant availability risk for organizations running Elasticsearch clusters, particularly those exposing the service to authenticated but untrusted users.
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
Vulnerability Mechanism
The NVD description identifies a recursive stack exhaustion flaw (CWE-674: Uncontrolled Recursion) in Elasticsearch. The vulnerability is triggered through the following mechanism:
Attack Prerequisite: The attacker must be an authenticated user with low privileges on the Elasticsearch instance.
Trigger Vector: The attacker submits a single request containing a crafted user-supplied input. The description does not specify the exact API endpoint or parameter, but the attack surface is any request-bearing input that flows through the vulnerable validation component.
Core Flaw: A specific internal component performs input validation using a recursive routine. Critically, this routine applies no bound on the length of the value being validated. When the input value exceeds a certain length, the recursive validation calls consume all available thread stack space.
Failure Consequence: The recursion causes the thread to exhaust its stack, producing a
StackOverflowError(or equivalent fatal error in the JVM). This error is not handled by the surrounding execution paths — meaning the exception propagates without being caught by any error-handling logic in the call stack.Node Termination: Because the fatal error is unhandled, it terminates the affected Elasticsearch node process entirely, rather than merely failing the individual request. This constitutes a denial-of-service condition.
Technical Context: Elasticsearch Architecture
Elasticsearch is a distributed search and analytics engine built on the Java Virtual Machine (JVM). Each node in a cluster runs as a JVM process. When a node process terminates unexpectedly:
- Cluster Resilience: If the cluster has multiple nodes with replicas, the cluster can continue serving requests from remaining nodes, but the terminated node's shards must be reallocated, causing temporary performance degradation.
- Single-Node Deployments: If the cluster consists of a single node (common in development or small production deployments), the termination results in complete service unavailability.
- Recovery Time: The node must restart and recover its shards, which can take significant time depending on data volume.
Attack Surface
The attack surface includes any authenticated API endpoint that accepts user-supplied input which undergoes validation by the vulnerable recursive component. This likely includes:
- Index/document creation or update requests with large field values
- Query requests with complex nested structures
- Bulk operations with many documents
- Any request where a string, array, or nested object is validated recursively
Note on Technical Specifics: The NVD description does not disclose the specific endpoint, parameter name, or validation function. Insufficient technical detail is available at the code level. The attack is described at the vulnerability-class level: uncontrolled recursive validation of unbounded-length input causing stack exhaustion.
Exploitation Scenarios
Important Note: No public PoC is available at the time of writing; the attack chain described below is inferred from the vulnerability class and NVD description. Attackers would need to identify the specific request format that reaches the vulnerable recursive validation routine.
Step 1: Reconnaissance and Target Identification
The attacker first identifies Elasticsearch instances accessible over the network. Common discovery methods include:
- Port Scanning: Elasticsearch typically listens on TCP port 9200 (HTTP) and 9300 (transport protocol).
- Fingerprinting: HTTP responses to
GET /return JSON with cluster name, version, and node information, allowing attackers to confirm the target is Elasticsearch and enumerate the version. - Shodan/Censys: Internet-exposed Elasticsearch instances can be discovered via search engine queries (e.g.,
product:"Elasticsearch").
Step 2: Authentication and Access
The attacker must authenticate with any valid low-privileged account. Options include:
- Default/Credentialed Access: If the instance uses weak or default credentials, the attacker authenticates directly.
- Stolen Credentials: Compromised credentials from phishing or credential-stuffing attacks provide the necessary access.
- Legitimate Account Abuse: An insider with minimal privileges (e.g., a read-only user) can exploit this vulnerability.
If the Elasticsearch cluster has authentication disabled (misconfiguration), any unauthenticated user effectively has low-privileged access and can attempt exploitation.
Step 3: Crafting the Malicious Payload
The attacker crafts a single HTTP request containing a user-supplied input with an unbounded-length value that traverses the vulnerable recursive validation routine. At the vulnerability-class level, the payload construction appears as follows:
- A long string value (e.g., many megabytes of characters) submitted as a field value in an index document or query.
- A deeply nested JSON structure (e.g., nested arrays or objects hundreds or thousands of levels deep) that triggers deep recursion during validation.
- A large array with many elements.
The key requirement is that the input's length exceeds the JVM thread's default stack size (typically 512 KB to 1 MB) when processed recursively. Stack exhaustion occurs when the recursive validation function's stack frames consume all available stack space.
Step 4: Post-Exploitation Impact
Upon successful exploitation:
- The affected node process terminates immediately.
- If this is a single-node cluster, all Elasticsearch services become unavailable — search, indexing, and API access all fail.
- In a multi-node cluster, the node's shards become unavailable; the cluster enters a degraded state (yellow or red status) until the node restarts and recovers.
- There is no data loss or modification (confidentiality and integrity impacts are none per CVSS), but availability impact is high.
- The attacker can repeat the request to cause repeated node crashes, preventing service recovery.
Weaponization Considerations
The vulnerability is trivially exploitable once the triggering endpoint is identified:
- No special tooling is required — any HTTP client (curl, Burp Suite, custom script) can send the crafted request.
- Single request is sufficient — no repeated requests needed.
- Low privilege requirement means the attack surface is broad in multi-tenant deployments.
Impact Assessment
Business Impact
| Dimension | Assessment |
|---|---|
| Availability | High (CVSS A:H) — the primary impact is complete node process termination, leading to service disruption |
| Confidentiality | None — no data exfiltration or unauthorized read access |
| Integrity | None — no data modification or deletion |
| CVSS Score | 6.5 (Medium) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected Systems
- Elasticsearch deployments of any size — from single-node development instances to large production clusters.
- Organizations with authenticated Elasticsearch users who are not fully trusted (e.g., multi-tenant SaaS products, shared clusters across departments, public-facing search applications).
- Internet-exposed Elasticsearch instances are at highest risk due to their larger attack surface, though authentication requirements limit exploitation to those with valid credentials.
Blast Radius
- Single-Node Cluster: Complete service outage for the duration of node restart plus shard recovery. This can range from minutes (small datasets) to hours (large datasets).
- Multi-Node Cluster: Partial outage — the affected node's shards become unavailable. Search requests may return incomplete results, and indexing requests to those shards fail. The cluster health status degrades to YELLOW or RED.
- Cascading Effects: In clusters with heavy load, the sudden loss of a node can trigger shard reallocation storms, potentially causing additional node failures (cluster instability).
- Operational Cost: Each exploitation event requires manual or automated intervention to restart the node and monitor recovery, consuming operations team resources.
Detection Guidance
Sigma Rule
title: Elasticsearch Stack Exhaustion DoS Attempt
id: 3a1c8e7f-9b2d-4e5a-8c3f-1d6b9a2c4e7f
status: experimental
description: Detects requests to Elasticsearch with extremely large payloads that may trigger CVE-2026-72686 recursive stack exhaustion
author: Valtersit Threat Intelligence Team
date: 2026/01/01
logsource:
category: webserver
product: elasticsearch
detection:
selection:
cs-method:
- 'POST'
- 'PUT'
sc-status: 500
condition: selection
timeframe: 5m
fields:
- c-ip
- cs-uri-stem
- cs(User-Agent)
- cs-bytes
falsepositives:
- Legitimate bulk indexing operations with large payloads
- Large document indexing for media/content management
level: medium
tags:
- attack.t1499
- cve.2026.72686
YARA Rule
rule Elasticsearch_Stack_Exhaustion_DoS_CVE_2026_72686
{
meta:
author = "Valtersit Threat Intelligence Team"
date = "2026-01-01"
description = "Detects potential exploit payloads for CVE-2026-72686 — extremely long values in Elasticsearch requests"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-72686"
cve = "CVE-2026-72686"
severity = "medium"
strings:
// Look for extremely long repeated character sequences (potential stack exhaustion payloads)
$long_string = /[a-zA-Z0-9]{100000,}/
// JSON bodies with deeply nested structures (indicates recursive validation target)
$deep_nesting = /\{"[^"]+":\{"[^"]+":\{"[^"]+":\{"[^"]+":\{"[^"]+":/
// Look for bulk indexing patterns (potential vector for large payloads)
$bulk_operation = /\/_bulk/
// Common Elasticsearch indexing endpoints
$index_endpoint = /\/[a-z0-9_-]+\/_doc/
condition:
any of them
}
Suricata IDS Rule
alert http any any -> any 9200 (msg:"ET EXPLOIT Elasticsearch Stack Exhaustion DoS Attempt (CVE-2026-72686)"; flow:to_server,established; content:"POST"; http_method; content:"/_bulk"; http_uri; content:"Content-Length"; http_header; pcre:"/Content-Length:\s*[0-9]{7,}/i"; classtype:attempted-dos; sid:2026000001; rev:1; metadata:created_at 2026_01_01, updated_at 2026_01_01, cve CVE-2026-72686;)
Elastic Detection
// EQL query to detect HTTP requests to Elasticsearch with abnormally large payloads
sequence by source.ip
[ network where destination.port == 9200 and
network.protocol == "http" and
event.action == "connection" ]
[ http where destination.port == 9200 and
http.request.method == "POST" and
http.request.bytes > 1000000 and
http.request.uri == "/_bulk" ]
Splunk SPL Query
index=web sourcetype=access_combined_w3c dest_port=9200
| eval content_length = tonumber(cs_bytes)
| where content_length > 1000000
| stats count by src_ip, cs_uri_stem, _time
| eval threat_name = "CVE-2026-72686 - Elasticsearch Stack Exhaustion DoS"
| table _time, src_ip, cs_uri_stem, content_length, count
| sort - _time
Wazuh OSSEC Rule
<group name="elasticsearch,">
<rule id="100905" level="10">
<if_sid>30100</if_sid>
<match>StackOverflowError|StackOverflow|java.lang.StackOverflowError</match>
<description>Elasticsearch node terminated: Possible stack exhaustion DoS attack (CVE-2026-72686)</description>
<group>elasticsearch,denial_of_service,cve_2026_72686,</group>
</rule>
<rule id="100906" level="8">
<if_sid>30100</if_sid>
<match>OutOfMemoryError: unable to create new native thread</match>
<description>Elasticsearch thread exhaustion — potential resource exhaustion attack</description>
<group>elasticsearch,denial_of_service,</group>
</rule>
<rule id="100907" level="6">
<if_sid>30100</if_sid>
<match>request body too large|413 Request Entity Too Large</match>
<description>Elasticsearch: Large request rejected — monitor for potential DoS attempts</description>
<group>elasticsearch,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch Status
CRITICAL: CVE-2026-72686 is currently UNPATCHED (Patch Confidence: 0/4). No vendor fix, patch, or upgrade is available from any tracked source. The affected version range is unknown, so all Elasticsearch versions should be considered potentially vulnerable until a patch is released.
1. Immediate Mitigations
Until an official patch is available, the following mitigations can reduce exposure:
Network-Level Restrictions: Restrict access to Elasticsearch ports (9200/9300) to trusted networks only. Implement IP allowlisting at the firewall or security group level. Disable internet exposure entirely if the service does not require public access.
Authentication Enforcement: Ensure Elasticsearch security features are enabled with strong authentication. Disable anonymous access. Use role-based access control (RBAC) to enforce the principle of least privilege.
Rate Limiting: Implement rate limiting on Elasticsearch API endpoints to slow down repeated exploitation attempts.
Request Size Limits: Configure a reverse proxy (e.g., nginx, HAProxy) in front of Elasticsearch with
client_max_body_sizelimits to reject excessively large request bodies before they reach Elasticsearch.Resource Starvation Monitoring: Monitor JVM heap usage and thread states. Set up alerts for stack overflow errors and unexpected node restarts.
WAF Rules: Deploy Web Application Firewall rules to inspect and block requests with abnormally large payload sizes or suspicious content patterns.
2. Patch and Upgrade Steps
Monitor Vendor Advisories: Regularly check the Elastic security advisory page and the Elasticsearch GitHub repository for patch announcements.
Subscribe to CVE Notifications: Set up alerts for new updates on CVE-2026-72686 from NVD and Elastic security mailing lists.
Test in Staging: Once a patch is released, test thoroughly in a staging environment that mirrors production before deployment.
Upgrade Path: When a fixed version becomes available, schedule an upgrade window following Elastic's official upgrade documentation.
3. Long-Term Hardening
Multi-Node Redundancy: Maintain at least 2-3 node clusters with proper replica shards. This ensures that a single-node DoS does not cause complete cluster failure.
Resource Isolation: Run Elasticsearch in containers or VMs with appropriate JVM thread stack configuration. Consider increasing
-Xss(thread stack size) JVM settings to raise the threshold for stack exhaustion, though this is a mitigation, not a fix.Input Validation Hardening: Configure Elasticsearch to enforce maximum document size limits (
http.max_content_lengthsetting, default 100 MB) and index-level field length limits.Security Hardening:
- Enable Elasticsearch Security (formerly X-Pack Security)
- Require TLS for all communications
- Regularly audit user privileges and revoke unnecessary access
- Deploy Elasticsearch behind an API gateway for additional control
Monitoring: Implement comprehensive monitoring with tools like Elastic Stack itself, Prometheus, or Datadog to detect node restarts, cluster health degradation, and other indicators of DoS activity.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-72686
- MITRE CVE Record: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-72686
- Elastic Security Advisories: https://www.elastic.co/community/security (monitor for upcoming advisory)
- CWE-674 Reference: https://cwe.mitre.org/data/definitions/674.html (Uncontrolled Recursion)
- ATT&CK T1499 Endpoint DoS: https://attack.mitre.org/techniques/T1499/
Threat Actor Campaigns: No known threat actor campaigns or exploit-in-the-wild evidence has been identified at the time of writing. The vulnerability is classified as having no public PoC or exploit code. However, given its unpatched status and the ease of exploitation once the triggering endpoint is identified, organizations should treat this as a high-priority availability risk and apply mitigations proactively.
Report generated by Valtersit Threat Intelligence Team | Classification: TLP:CLEAR | Date: 2026-01-01