Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend crafted qwik-json HTTP request
-
DeliveryPayload reaches ResourceSerializer.$fill$
-
ExploitPromise.resolve adopts attacker thenable
-
ExecutionQRL for unregistered symbol rejects
-
ImpactOrphaned unhandled rejection crashes Node.js
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling completeness
|
| Exploitation Conditions | Exploitation requires the target to run Qwik server-side rendering with default server-side qwik-json deserialization enabled on an affected version (@builder.io/qwik < 1.20.0 or @qwik.dev/core < 2.0.0-beta.37), and relies on Node.js running under its default unhandled-rejection policy (process termination on unhandled rejection). The specific trigger is a deserialized resource value that is a thenable - a plain object with a 'then' property that is a QRL for an unregistered symbol. No authentication, user interaction, or non-default configuration is needed (PR:N/UI:N), so the main limiting factor is that the deployment must be an exposed Qwik SSR endpoint reachable by the attacker; environments that override Node's default unhandled-rejection behavior (e.g. a global handler or --unhandled-rejections=warn) would blunt the crash. |
| Impact | This is a genuine availability-only denial-of-service flaw whose risk profile is driven entirely by ease of exploitation rather than impact breadth. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes a network-reachable, low-complexity, unauthenticated attack with no user interaction, and the impact metrics confirm it is purely availability (VA:H) with zero confidentiality or integrity effect (VC:N/VI:N), consistent with CWE-248 (uncaught exception) and the described Node.js crash. The score of 8.7 (High) is justified for an unauthenticated single-request crash primitive, but it should be read as a pure uptime/DoS risk, not a code-execution or data-exposure risk. No EPSS score was provided, so statistical exploitation likelihood cannot be quantified; the CVE is NOT in CISA KEV and no public exploit code is referenced, so there is no public exploit identified at time of analysis. SSVC inputs are not supplied, but the technical nature strongly implies the attack is automatable (a crafted JSON body is trivially scriptable) with technical impact limited to a service crash. Net assessment: patch promptly for internet-facing Qwik SSR deployments because exploitation is trivial and repeatable, but prioritize below any confidentiality/integrity-impacting vulnerabilities since the worst outcome is service unavailability. Missing signals to verify: EPSS and any vendor claim of active exploitation - none present in the data. |
| Exploit ScenarioDerived | An unauthenticated attacker sends an HTTP request to a Qwik server-side-rendered endpoint containing a crafted qwik-json payload whose resource value is a plain object with a 'then' property set to a QRL for an unregistered symbol. During deserialization ResourceSerializer.$fill$ passes this attacker-controlled thenable to Promise.resolve, producing an orphaned asynchronous rejection that, under Node.js's default unhandled-rejection policy, terminates the process. No public exploit code is referenced, but the payload is simple and a single request crashes the server, with repeated requests keeping replicas down. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Unauthenticated remote attackers can crash Node.js servers running Qwik server-side rendering by sending a crafted resource value that triggers an unhandled promise rejection, affecting @builder.io/qwik before 1.20.0 and @qwik.dev/core before 2.0.0-beta.37. This is an availability-only denial-of-service (CWE-248) assessed at CVSS 3.1 base 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H), requiring no authentication or user interaction. No public exploit code or CISA KEV status is reported, but a single request can terminate a process under Node.js default unhandled-rejection policy.
RemediationAI
Upgrade to the patched versions: @builder.io/qwik 1.20.0 or @qwik.dev/core 2.0.0-beta.37, as released by the vendor. The fix adds an isThenable check in ResourceSerializer.$fill$ to reject attacker-controlled thenables without invoking the then property, preventing the orphaned rejection. If immediate upgrade is not possible, override Node.js's default unhandled-rejection policy (e.g., by registering a process.on('unhandledRejection') handler or starting Node with --unhandled-rejections=warn) to prevent process termination; however, this only mitigates the crash and does not fix the underlying deserialization flaw, and may hide other unhandled rejections. Additionally, restrict network access to Qwik SSR endpoints to trusted clients until patched, and consider disabling default server-side qwik-json deserialization if the application does not require it. Refer to the vendor advisory at https://github.com/QwikDev/qwik/security/advisories/GHSA-x586-xvc8-g7q6 and the patch commit https://github.com/QwikDev/qwik/commit/c1e7444402f9592b5cf9096e10bf303ab4640511.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Qwik is a JavaScript framework that uses server-side rendering and a custom serialization format called qwik-json to transfer state from server to client. The vulnerability resides in the ResourceSerializer.$fill$ method within packages/qwik/src/core/container/serializers.ts, which handles deserialization of resource values. Prior to the fix, when a deserialized resource value was a thenable (a plain object with a 'then' property that is a QRL for an unregistered symbol), it was passed directly to Promise.resolve. This caused the then property to be invoked, returning a rejected promise that had no attached catch handler, leading to an orphaned asynchronous rejection that terminates Node.js under its default unhandled-rejection policy. CWE-248 (Uncaught Exception) captures this root cause. The patch introduces an isThenable check that rejects such thenables without invoking then, and uses createHandledRejectedPromise to ensure rejections are handled. The vendor assigned CVSS 4.0 score 8.7, while our independent assessment using CVSS 3.1 yields a base score of 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H).
Know when Node.js gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Unauthenticated single network request (AV:N/AC:L/PR:N/UI:N) crashes the Node process; impact is availability-only (A:H) with no confidentiality or integrity effect, scope unchanged.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
Qwik is a performance-focused JavaScript framework. Prior to @builder.io/qwik 1.20.0 and @qwik.dev/core 2.0.0-beta.37, default server-side qwik-json deserialization causes ResourceSerializer.$fill$ to pass resource._resolved to Promise.resolve without first rejecting attacker-controlled thenables. An unauthenticated request can provide a plain object whose then property is a QRL for an unregistered symbol, causing an orphaned asynchronous rejection that terminates Node.js under its default unhandled-rejection policy. A single request can crash a server, and repeated requests can keep replicas unavailable. This issue is fixed in @builder.io/qwik 1.20.0 and @qwik.dev/core 2.0.0-beta.37.
Technical POC Analysis
Evidence base: the GitHub advisory GHSA-x586-xvc8-g7q6 is the only supplied artifact.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Organizations using Qwik server-side rendering on Node.js are exposed to a high-severity denial-of-service vulnerability (CVE-2026-84994) that allows unauthenticated remote attackers to crash servers with a single crafted request. This affects @builder.io/qwik versions before 1.20.0 and @qwik.dev/core versions before 2.0.0-beta.37. Leadership should prioritize patching because service outages could disrupt customer-facing applications and operational continuity, though no public exploit identified at time of analysis.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
EUVD-2026-99978
GHSA-x586-xvc8-g7q6
NVD
CVE.org
EPSS
Exploit-DB