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-63462

CVE-2026-63462: Unauthenticated Stack Overflow Denial of Service in Unleash Server

Alon Barad
Alon Barad
Software Engineer

Aug 22, 2026·6 min read·3 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can crash the Unleash server with a single ~10 KB nested JSON request, causing immediate and complete denial of service.

An unauthenticated remote denial of service vulnerability exists in the Unleash feature management platform. By submitting a crafted JSON payload containing deeply nested structures to an OpenAPI-validated endpoint, an attacker can trigger uncontrolled recursion within the error formatting module. This leads to a call-stack exhaustion (RangeError: Maximum call stack size exceeded) inside the Node.js runtime, causing the service to crash immediately without recovery.

Vulnerability Overview

Unleash is an open-source feature management platform implemented in Node.js. It coordinates feature flags across multiple environments, exposing APIs to both administrators and client applications. Among its public routes, several endpoints validate client-supplied parameters against structured OpenAPI definitions to enforce strict parameter schema requirements.

Under normal operations, when an API request fails schema validation, the application constructs a detailed error response containing the serialized representation of the problematic parameter. This mechanism utilizes endpoints such as /edge/validate or /edge/issue-token that do not require authentication, thereby exposing a significant attack surface to unauthorized network actors.

The vulnerability, classified under CWE-674 (Uncontrolled Recursion), resides within this error formatting pipeline. When a client submits a deeply nested but small JSON structure, the application's input validation failure code path executes a synchronous recursive parsing action. This process consumes the execution stack space and crashes the core process.

Root Cause Analysis

The underlying fault lies in the asymmetric handling of payload properties during the parsing and error validation phases. The Express body-parsing middleware restricts total request payload volume to prevent generic resource consumption attacks. However, it fails to enforce constraints on the maximum nesting depth of parsed JSON objects and arrays.

When a payload fails validation, the error handler retrieves the invalid property value using lodash.get and attempts to convert it to a string for debugging output. It passes the deeply nested structure directly to JSON.stringify to construct a descriptive feedback message. The native implementation of JSON.stringify in the V8 engine operates recursively over object and array tree structures.

Each level of array or object nesting requires the V8 engine to allocate a new stack frame on the call stack. Because the structure depth exceeds the physical limits of the call stack, the runtime encounters a synchronous RangeError: Maximum call stack size exceeded exception. This error is fatal.

Because this synchronous exception occurs within Express's internal error generation routine rather than the standard request-handling logic, it bypasses the standard middleware-level exception catch blocks. Lacking a global uncaughtException listener configured to gracefully drop the connection, the entire Node.js runtime terminates with an exit code of 1.

Code Analysis and Patch Evaluation

The vulnerability was mitigated in commit b0e4da63249a9403bc209e0581db223326cb8dcf by introducing an explicit safe serialization helper. This helper wraps the invocation of the recursive encoder in a try-catch block, preventing the synchronous exception from bubbling up to the runtime process manager.

// Patched safe stringification helper
const safeStringify = (value: unknown): string => {
    try {
        return JSON.stringify(value);
    } catch {
        // Fallback string returned when stack overflow is triggered
        return '[value too large or deeply nested to display]';
    }
};

The patch modifies critical code paths inside src/lib/error/bad-data-error.ts and src/lib/routes/util.ts. All previous direct assignments calling JSON.stringify on user-controlled input properties now execute via the safeStringify function wrapper.

diff --git a/src/lib/error/bad-data-error.ts b/src/lib/error/bad-data-error.ts
--- a/src/lib/error/bad-data-error.ts
+++ b/src/lib/error/bad-data-error.ts
@@ -72,7 +80,7 @@ const genericErrorMessage = (
     propertyValue: object,
     errorMessage: string = 'is invalid',
 ) => {
-    const youSent = JSON.stringify(propertyValue);
+    const youSent = safeStringify(propertyValue);
     const message = `The \`${propertyName}\` property ${errorMessage}. You sent ${youSent}.`;

While wrapping the serialization prevents the immediate process termination, it represents a reactive mitigation rather than a structural defense. The engine still spends computational resources parsing the deeply nested object in the body-parser before rejecting it, meaning that very high-frequency request rates could still impact CPU utilization.

Exploitation Methodology

Exploitation of this vulnerability requires only network access to an unauthenticated endpoint governed by OpenAPI schema validation rules. The attacker does not need credentials, active session tokens, or specific configuration states to execute the attack.

An attacker constructs a payload consisting of nested arrays or objects. A nesting level of 5,000 is generally sufficient to exceed the default call stack limits of standard Node.js V8 execution environments. This payload occupies approximately 10 KB, allowing it to easily bypass common web application firewall restrictions governing maximum body size.

Upon transmitting the payload to an endpoint like POST /edge/validate, the application attempts to validate the input. Because the input does not match the schema, the validator initiates the error formatter. The error formatter calls the serialization engine, which exceeds the stack size and immediately crashes the service.

# Conceptual representation of a single-request crash trigger
python3 -c "print('[' * 5000 + '1' + ']' * 5000)" > dos_payload.json
curl -s -X POST -H "Content-Type: application/json" \
     -d @dos_payload.json \
     http://example-unleash-target.local/edge/validate

Impact Assessment

The security impact of CVE-2026-63462 is restricted to the Availability domain. There is no risk of Confidentiality compromise, data exposure, or unauthorized modification of application configuration data. The CVSS vector string is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H reflecting a score of 7.5.

Because the backend execution environment runs as a single-threaded process in Node.js, the failure of the primary process instantly terminates all concurrent active user connections. In clustered configurations or containers lacking active auto-restart mechanisms, a single request can permanently disable service availability.

If the server runs within an orchestrated container cluster (such as Kubernetes or ECS) configured with auto-recovery, the container is automatically scheduled for restart. However, an attacker can maintain a persistent outage by repeatedly transmitting the trigger payload at a rate matching the container recovery cycle.

Mitigation and Remediation Guidance

The primary resolution is to upgrade Unleash to a patched version. Administrators should identify and apply updates to transition their environments past the affected version boundaries. The issue is resolved in versions 7.5.2, 7.6.5, and 8.0.2.

If upgrading is not immediately possible, deploy a defensive configuration change or rule on intermediate reverse proxies or Web Application Firewalls (WAF). Setting a rule that rejects JSON bodies with an object or array nesting depth greater than 50 protects the application from encountering deep inputs.

Additionally, verify that the Unleash node processes run under a supervisor that automatically recovers from uncaught exceptions, such as PM2 or systemd. While this does not prevent the processing thread crash, it limits the offline duration of the service following isolated exploit attempts.

Fix Analysis (3)

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Affected Systems

Unleash feature management server

Affected Versions Detail

Product
Affected Versions
Fixed Version
Unleash Server
Unleash
< 7.5.27.5.2
Unleash Server
Unleash
>= 7.6.0, < 7.6.57.6.5
Unleash Server
Unleash
>= 8.0.0, < 8.0.28.0.2
AttributeDetail
CWE IDCWE-674 (Uncontrolled Recursion)
Attack VectorNetwork
CVSS Score7.5 (High)
Exploit StatusProof of Concept available
ImpactComplete Denial of Service (DoS)
KEV StatusNot listed

MITRE ATT&CK Mapping

T1498Network Denial of Service
Impact
T1190Exploit Public-Facing Application
Initial Access
CWE-674
Uncontrolled Recursion

The software directs execution into a function that calls itself recursively without an adequate exit condition, leading to stack overflow.

Known Exploits & Detection

GitHub Security AdvisoryExploit methodology description and mitigation commits details

Vulnerability Timeline

Vulnerability fix commit b0e4da6 pushed to Unleash repository
2026-06-24
Patched versions 7.5.2, 7.6.5, and 8.0.2 released
2026-06-29
Public advisory GHSA-r5pq-6chh-j3xp published
2026-08-21

References & Sources

  • [1]GHSA Security Advisory
  • [2]NVD CVE-2026-63462 Analysis
  • [3]CVE.org Official Record

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

•about 2 hours ago•CVE-2026-63004
5.5

CVE-2026-63004: Server-Side Request Forgery in Unleash Addon and Integration Subsystem

CVE-2026-63004 is a server-side request forgery (SSRF) vulnerability in the Unleash feature management platform. Authenticated administrators with CREATE_ADDON or UPDATE_ADDON privileges can exploit this vulnerability to initiate requests to loopback addresses, private networks, and cloud metadata endpoints, potentially leading to information disclosure and credential extraction.

Amit Schendel
Amit Schendel
4 views•8 min read
•about 3 hours ago•CVE-2026-63466
4.1

CVE-2026-63466: Process-Wide Security Degradation via Global Module Mutation in Unleash

Prior to version 8.0.3, Unleash's Markdown event formatter directly mutated the global template-escaping function of the shared mustache Node.js module, resulting in a process-wide security degradation where HTML/Markdown escaping was permanently disabled for the application lifetime.

Alon Barad
Alon Barad
3 views•6 min read
•about 4 hours ago•CVE-2026-76904
9.8

CVE-2026-76904: Unauthenticated SQL Injection in GeoTools PostGIS DataStore Component

A critical SQL injection vulnerability exists in the GeoTools open-source Java library. This vulnerability is situated within the post-processing phase of OGC Filter conversion inside the PostGIS DataStore module. Specifically, the `jsonArrayContains` function does not validate or sanitize its arguments before constructing PostgreSQL SQL/JSON path evaluation queries. An unauthenticated remote attacker can exploit this weakness by submitting crafted filters via standard OGC services like WFS or WMS to execute arbitrary SQL commands on the underlying database system.

Alon Barad
Alon Barad
4 views•5 min read
•about 5 hours ago•CVE-2026-61824
8.2

CVE-2026-61824: High-Severity Cross-Site Scripting (XSS) via Unsanitized Site Extractors in Defuddle

CVE-2026-61824 is a high-severity Cross-Site Scripting (XSS) vulnerability in kepano/defuddle before version 0.19.1. Custom site extractors for platforms such as X/Twitter, Substack, and YouTube constructed HTML representations via template string interpolation without output escaping. This allowed malicious pages to bypass standard parser sanitization routines and execute arbitrary JavaScript.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 6 hours ago•CVE-2026-63421
7.5

CVE-2026-63421: Query Limit Bypass via Negative Integer Input in KeystoneJS core resolvers

A high-severity vulnerability exists in KeystoneJS, a popular Node.js CMS and GraphQL framework, where the query resolution engine fails to validate signed negative integers within the pagination subsystem. Unauthenticated remote attackers can leverage this flaw to bypass the 'graphql.maxTake' safety boundary. By sending large negative values in the 'take' query parameter, the underlying Prisma ORM interprets the value as an instruction to fetch rows from the end of the collection, allowing malicious actors to bypass pagination limits, trigger database resource exhaustion, and execute application-level Denial of Service (DoS) attacks.

Alon Barad
Alon Barad
3 views•6 min read
•about 7 hours ago•CVE-2026-64679
8.1

CVE-2026-64679: Directory Traversal via Workspace Parameter in Atlantis

A critical path traversal vulnerability in Atlantis allows authenticated users or repository contributors to execute directory operations outside of the repository directory boundary via crafted workspace parameters in configuration files or API requests.

Amit Schendel
Amit Schendel
6 views•6 min read