Unauthenticated Denial of Service in Qwik Framework
An unauthenticated remote denial-of-service vulnerability in Qwik allows attackers to terminate Node.js server processes by sending a maliciously crafted qwik-json payload, resulting in persistent service outages.
CVE search metadata
CVE search record: CVE-2026-84994. EPSS: 0.52%. KEV: no. Product: Qwik (< 1.20.0), Qwik Core (< 2.0.0-beta37). Brief: Unauthenticated Denial of Service in Qwik Framework. Brief link: https://feed.craftedsignal.io/briefs/2026-10-qwik-dos/
The Qwik framework is susceptible to a denial-of-service (DoS) vulnerability tracked as CVE-2026-84994, affecting versions of @builder.io/qwik prior to 1.20.0 and @qwik.dev/core prior to 2.0.0-beta37. The issue arises during the parsing of qwik-json bodies within the ResourceSerializer.$fill$ function. When the framework processes a request containing a crafted object where the 'then' property is a QRL (Qwik URL) pointing to an unregistered symbol, the framework attempts to resolve the object as a promise. The resulting async rejection is not handled by the application, causing Node.js to trigger its default unhandled-rejection policy, which immediately terminates the process. Because the crash can be triggered by a single unauthenticated request, an attacker can maintain a persistent outage by continuously sending the exploit payload to any reachable Qwik-enabled endpoint.
Attack Chain
- Attacker identifies a web application utilizing a vulnerable version of the Qwik framework.
- Attacker crafts an HTTP request with a malformed qwik-json body.
- Attacker embeds a 'thenable' object within the JSON payload containing a QRL reference to an unregistered symbol.
- The application server receives the POST request and initiates parsing of the qwik-json body.
- The
ResourceSerializer.$fill$logic attempts to resolve the provided 'thenable' object. - The underlying Node.js runtime fails to handle the asynchronous rejection triggered by the invalid QRL.
- The Node.js process encounters an unhandled promise rejection and shuts down.
- Service availability is lost for the affected server instance, leading to DoS.
Impact
The attack results in the immediate termination of the server process, rendering the application unavailable. In environments without robust process management or rapid restarts, this vulnerability enables an attacker to achieve a permanent denial-of-service state for the targeted application by continuously flooding the endpoint with the exploit payload. This affects all public-facing applications built on the vulnerable versions of the Qwik framework.
Recommendation
- Patch the vulnerability by upgrading @builder.io/qwik to version 1.20.0 or later, or @qwik.dev/core to 2.0.0-beta37 or later.
- Monitor web server logs for high frequencies of 500-series status codes coinciding with process restarts.
- Implement rate limiting at the WAF or reverse proxy level to mitigate the impact of the exploit while patching is pending.
- Ensure that the application runtime is configured to capture and log unhandled promise rejections for visibility, although this will not prevent the process crash.
Immediate actions
Upgrade @builder.io/qwik to 1.20.0 or @qwik.dev/core to 2.0.0-beta37
Mitigations
Implement strict rate limiting on all endpoints accepting POST requests
CVE-2026-84994