Skip to main content

Qwik CVE-2026-84994

| EUVDEUVD-2026-99978 HIGH
Uncaught Exception (CWE-248)
2026-10-13 security-advisories@github.com GHSA-x586-xvc8-g7q6
8.7
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send crafted qwik-json HTTP request
  2. Delivery
    Payload reaches ResourceSerializer.$fill$
  3. Exploit
    Promise.resolve adopts attacker thenable
  4. Execution
    QRL for unregistered symbol rejects
  5. Impact
    Orphaned 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

qwik < 2.0.0-beta37
qwik < 1.20.0

Affected Packages

npm @builder.io/qwik fix: 1.20.0
npm @qwik.dev/core fix: 2.0.0-beta37
euvd qwik fix: 1.20.0, 2.0.0-beta37

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

Vendor (github) PRIMARY 8.7 HIGH
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
vuln.today AI 7.5 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 13, 2026 - 20:20 EUVD
CVE Published
Oct 13, 2026 - 19:20 cve.org
HIGH 8.7

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 57% exploitable
Prevalence
Low
Qwik is a niche JS framework with small SSR deployment share
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

45
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy