Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend HTTP request with privileged-operation header
-
DeliveryOmit dependency-required auth header
-
ExploitSchema compiler skips unmatched case-sensitive dependency trigger
-
ExecutionAJV validation passes without enforcing co-presence
-
PersistApplication executes privileged branch
-
ImpactAuthorization bypass achieved
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Case sensitivity handling
|
| Exploitation Conditions | Exploitation requires both a Fastify instance running a version before 5.12.2 AND at least one route whose header validation schema uses the JSON Schema Draft 7 |
| Impact | The CVSS 7.5 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N) accurately characterizes a remotely exploitable, unauthenticated integrity bypass with no complexity barrier - even a mid-sized municipal IT team in gdynia deploying Fastify-based APIs with header-driven access control should treat this as urgent if the |
| Exploit ScenarioDerived | An attacker targeting a Fastify API endpoint protected by a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 04, 2026
Fastify's route schema compilation silently nullifies conditional header requirements declared via the JSON Schema Draft 7 dependencies keyword, enabling unauthenticated remote clients to bypass schema-enforced authorization checks. Versions before 5.12.2 lowercase header property keys and the root required array during schema compilation but leave trigger and dependent names inside dependencies in their original casing; since Node.js stores all incoming request header names in lowercase, those case-sensitive dependency references never match and the conditional requirement is invisibly skipped. An attacker can present a privileged-operation header while omitting the authentication or authorization header the dependency was intended to mandate, causing the application's privileged branch to execute as though the guard had passed. No public exploit has been identified at time of analysis.
RemediationAI
Upgrade Fastify to version 5.12.2 or later, the vendor-released patch that corrects the normalization pass to include all names within dependencies keyword entries. The authoritative advisory is https://github.com/fastify/fastify/security/advisories/GHSA-9q9j-q6p8-xq58. If an immediate upgrade is not feasible, the most targeted workaround is to replace the JSON Schema dependencies keyword in any header schemas with equivalent AJV-supported constructs that are unaffected by the casing bug, such as if/then/else blocks or allOf with required; this avoids the broken compilation path entirely. Alternatively, enforcing header co-presence in a Fastify preHandler or onRequest hook via explicit application-level checks sidesteps the schema layer altogether and provides a reliable interim control. Note that upgrading from Fastify v4.x to v5.x involves documented breaking API changes; consult the Fastify v5 migration guide before crossing major versions to avoid unintended regressions.
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
Fastify is a high-performance Node.js web framework that uses AJV for request validation against JSON Schema definitions, including validation of HTTP headers. The HTTP specification treats header names as case-insensitive, and Node.js normalizes all incoming request header names to lowercase before exposing them to application code. Fastify compensates by lowercasing schema property keys and entries in the root-level required array at compile time. However, CWE-178 (Improper Handling of Case Sensitivity) manifests in the dependencies keyword from JSON Schema Draft 7, which allows expressing that the presence of one property (header) makes one or more other properties required. Fastify's normalization pass does not descend into dependencies to lowercase the trigger key or the listed dependent field names. A schema rule such as {"dependencies": {"X-Privileged-Mode": ["X-Auth-Token"]}} therefore retains mixed-case names after compilation; when Node.js delivers a request with lowercase x-privileged-mode, the compiled schema's trigger X-Privileged-Mode never matches, and the enforced co-presence of x-auth-token is silently dropped. The affected product is identified by CPE cpe:2.3:a:fastify:fastify:*:*:*:*:*:*:*:*, covering all versions before 5.12.2.
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:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Unauthenticated network-reachable bypass with no interaction or complexity; only integrity is impacted as the auth check is silently skipped, not data disclosed or service crashed.
Primary rating from Vendor (openjs).
CVSS VectorVendor: openjs
Lifecycle Timeline
2DescriptionCVE.org
fastify versions before 5.12.2 implement the case-insensitive nature of HTTP header names by lowercasing names in a route's header schema before compiling it, but the transformation is incomplete: it lowercases the properties keys and the root-level required array, and does not lowercase the trigger and dependent names inside the JSON Schema Draft 7 dependencies keyword. Because Node stores request header names in lowercase, a canonical-case dependency such as requiring an authentication header whenever a privileged-mode header is present never matches, and the presence assertion is silently skipped. An unauthenticated remote client can therefore send the header that activates a privileged branch while omitting the header the dependency was meant to require, bypassing the conditional check. Users should upgrade to fastify 5.12.2 or later.
Technical POC Analysis
Fastify's route-header schema validation intentionally lowercases schema property names before compilation, because Node.js exposes request headers in request.headers with lowercased names.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
1 PoC candidate from github (unverified)
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
Fastify, a widely-used Node.js web framework, contains a vulnerability in versions prior to 5.12.2 that allows attackers to bypass authorization checks and access restricted functions without authentication; no public exploit identified at time of analysis. Organizations using affected Fastify versions with header-based authorization are at direct risk of unauthorized data access and privilege escalation. This vulnerability affects any business with customer-facing or internal APIs built on these versions.
No vendor-released patch identified at time of analysis. Interim mitigations include: implementing application-level header validation independent of schema compilation, deploying API gateway or reverse proxy rules to enforce authorization headers before requests reach the Fastify application, and enabling request logging to detect exploitation attempts. Fastify version 5.12.2 or later reportedly addresses this issue-prioritize verification and upgrade of all affected deployments.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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-70998
GHSA-9q9j-q6p8-xq58
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB