Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach HTTP/2 endpoint unauthenticated
-
DeliverySend request to trailer-using route
-
ExploitFastify sets forbidden Transfer-Encoding header
-
ExecutionNode throws during header serialization
-
PersistUncaught exception crashes process
-
ImpactServer down, in-flight requests dropped
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 | Requires the target Fastify application (before 5.12.5) to (1) serve traffic over HTTP/2 and (2) have at least one route that registers a response trailer via reply.trailer(). Both are non-default and application-specific: Fastify defaults to HTTP/1.x unless HTTP/2 is explicitly enabled, and trailers are an uncommon feature developers must opt into. When those conditions hold, no authentication or user interaction is needed - a single crafted HTTP/2 request to the affected route crashes the whole process. The limiting factor is therefore the presence of a trailer-using HTTP/2 route, not access; applications not using trailers on HTTP/2 are unaffected. The workaround is to avoid reply.trailer() on HTTP/2 routes until upgrading to 5.12.5. |
| Impact | This is a genuine but bounded availability risk, and notably the signals are self-consistent rather than inflated - a refreshing contrast to many CVSS-9.8 Node.js advisories. The CVSS 5.9 (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H) is well-calibrated: it correctly scopes impact to availability only (A:H, C:N/I:N - no data disclosure or integrity effect from an uncaught-exception crash) and uses AC:H to reflect that exploitation is not universal but conditioned on the target application registering response trailers via reply.trailer() on an HTTP/2-served route. PR:N is accurate - a single unauthenticated HTTP/2 request suffices once such a route exists. There is no KEV listing, no public POC referenced, and no EPSS score supplied, so exploitation is theoretical at time of analysis. The SSVC framing would be exploitation:none, automatable:yes (a trivial repeatable request against a vulnerable route), technical impact:partial (availability-only, though the crash is total for the process). The practical severity hinges entirely on whether real deployments actually use trailers on HTTP/2 routes - trailers are an uncommon feature, which is precisely why AC:H is justified and why widespread mass-exploitation is unlikely despite Fastify's popularity. No key signals conflict. |
| Exploit ScenarioDerived | An attacker identifies a Fastify (<5.12.5) service exposed over HTTP/2 that has at least one route calling reply.trailer(), then sends a single unauthenticated HTTP/2 request to that route. Fastify sets the HTTP/2-forbidden Transfer-Encoding: chunked header, Node.js throws during header serialization, the exception goes uncaught and becomes an uncaughtException that crashes the entire process, dropping all in-flight requests. No public exploit code is identified, but the trigger is trivial and repeatable on every process restart. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Unauthenticated HTTP/2 requests to Fastify routes that register response trailers crash the entire Node.js process, dropping all in-flight requests and repeating the outage on every restart. The flaw affects Fastify versions before 5.12.5 and requires two non-default, application-specific conditions: the server must have HTTP/2 enabled and at least one route must call reply.trailer(). No public exploit code or confirmed active exploitation is identified at time of analysis, and the 5.9 CVSS score reflects a bounded availability-only impact rather than a high-severity compromise. Fastify 5.12.5 contains the fix.
RemediationAI
Upgrade Fastify to version 5.12.5 or later - the vendor-released patch that resolves this issue; the advisory is at https://github.com/fastify/fastify/security/advisories/GHSA-4mh8-r7rc-xpvc. If an immediate upgrade is not possible, the vendor's workaround is to stop registering response trailers with reply.trailer() on any route served over HTTP/2 until the upgrade lands; the trade-off is loss of trailer-based metadata (for example gRPC-style or checksum trailers) on those endpoints, so affected handlers must be refactored or moved to HTTP/1.x. Running the process under a supervisor that auto-restarts workers limits downtime but does not prevent the crash, and it does not stop an attacker from re-triggering the outage on each restart, so it is only a stopgap. Disabling HTTP/2 entirely (serving only HTTP/1.x) also neutralizes the flaw at the cost of performance characteristics such as multiplexing. Note that adding a global uncaughtException handler can mask the failure without restoring the request, and is not a substitute for patching.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is an uncaught exception (CWE-248) triggered by a protocol violation in Fastify's response handling. When a route registers a trailer via reply.trailer() and the connection is HTTP/2, Fastify unconditionally applies the HTTP/1.1 framing header Transfer-Encoding: chunked. RFC 9113 (HTTP/2) forbids connection-specific headers such as Transfer-Encoding, and Node.js enforces this by throwing during response header serialization. Because Fastify does not catch that throw, it propagates as an uncaughtException and terminates the worker process - a classic fail-closed but fatal DoS path. The affected component is the core fastify package (CPE cpe:2.3:a:fastify:fastify:*:*:*:*:*:*:*:*), where the wildcard CPE does not encode a version boundary; the actual fixed boundary is 5.12.5. The bug sits at the intersection of Fastify's trailer API, Node.js's HTTP/2 header validation, and the framework's lack of a guard around protocol-inappropriate framing headers.
Know when Fastify 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
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Unauthenticated remote crash (PR:N, A:H) but AC:H because the target route must use reply.trailer() over HTTP/2 (non-default); no confidentiality or integrity impact.
Primary rating from Vendor (openjs).
CVSS VectorVendor: openjs
Lifecycle Timeline
2DescriptionCVE.org
fastify is a fast and low-overhead web framework for Node.js. In versions before 5.12.5, when a route registers a response trailer via reply.trailer() and is served over HTTP/2, fastify unconditionally sets the Transfer-Encoding: chunked header, which is forbidden on HTTP/2, so Node.js throws while serializing the response headers. The exception is not caught and becomes an uncaughtException, so a single unauthenticated HTTP/2 request to any route that uses trailers crashes the server process and drops all in-flight requests, and it can be repeated on every restart. The issue is fixed in fastify 5.12.5, and users should upgrade to 5.12.5 or later. As a workaround, avoid registering response trailers with reply.trailer() on routes served over HTTP/2 until upgrading.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
All versions of @fastify/oauth2 used a statically generated state parameter at startup time and were used across all req
A redirect vulnerability in the `fastify-static` module version >= 4.2.4 and < 4.4.1 allows remote attackers to redirect
Fastify is a fast and low overhead web framework, for Node.js. Rated high severity (CVSS 7.5), this vulnerability is rem
Prototype pollution vulnerability in fastify-multipart < 1.0.5 allows an attacker to crash fastify applications parsing
Fastify node module before 0.38.0 is vulnerable to a denial-of-service attack by sending a request with "Content-Type: a
A denial of service vulnerability exists in Fastify v2.14.1 and v3.0.0-rc.4 that allows a malicious user to trigger reso
A redirect vulnerability in the fastify-static module version < 4.2.4 allows remote attackers to redirect users to arbit
Authorization bypass in the @fastify/express middleware-compatibility plugin (versions 4.0.6 and earlier) lets unauthent
Authentication bypass in @fastify/express v4.0.4 and earlier allows remote unauthenticated attackers to access protected
Middleware bypass in Fastify Express plugin (fastify/express) allows complete circumvention of authentication, authoriza
Fastify is a web framework with minimal overhead and plugin architecture. Rated high severity (CVSS 8.8), this vulnerabi
Authentication and authorization bypass in @fastify/middie (Node.js middleware library for Fastify) allows remote unauth
EUVD-2026-80315
GHSA-4mh8-r7rc-xpvc
NVD
CVE.org
EPSS
Exploit-DB