CVE-2026-84469: fastify vulnerable to request validation bypass via skipped boolean false schemas

Published Sep 4, 2026
·
Updated

Impact

Fastify decided whether to validate a request part by checking its schema for JavaScript truthiness. JSON Schema Draft 7 defines the boolean false as a valid schema that rejects every instance, but because false is falsy, a route that set body, querystring, params, or headers to false had that part left uncompiled: no validator was attached and the request reached the handler. An application that used false as a deny-all schema to make a route unreachable was therefore fully bypassed, and an unauthenticated remote client could reach the handler with any input. The same applied to the documented query alias for querystring. This is a complete bypass rather than a weak-schema issue, since false is the strongest JSON Schema assertion and must always fail.

Patches

Request-part schemas are now selected by an explicit presence check rather than truthiness, so a boolean false (or true) schema is compiled and enforced, including through the query alias. Patched in fastify 5.12.2. The fix is also included in the 6.0.0 release.

Workarounds

If upgrading is not immediately possible, express a deny-all request schema with an always-failing object schema instead of the boolean false (for example { "not": {} }), or reject the request in an onRequest hook.

Other sources

fastify versions before 5.12.2 decide whether to compile a request schema based on JavaScript truthiness, but JSON Schema Draft 7 defines the boolean false as a valid schema that rejects every instance. When an application assigns false to a route's body, querystring, params, or headers schema to deny all input, fastify treats it as a missing schema, compiles no validator, and runs the route handler on any request. An unauthenticated remote client can therefore reach a handler that a valid deny-all schema was intended to make unreachable, a complete validation bypass that can lead to unauthorized state changes or execution of disabled operations. Users should upgrade to fastify 5.12.2 or later.

— MITRE

Affected Software

3 affected componentsFixes available
npm/fastify<5.12.2
fastify Fastify Node.js<5.12.2
npm/fastify<5.12.2
5.12.2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/fastify to a version that resolves this vulnerability.

    Fixed in 5.12.2
  2. Upgrade

    Upgrade fastify to a version that resolves this vulnerability.

    Fixed in 5.12.2
  3. Configuration

    If upgrading is not immediately possible, replace the boolean false deny-all schema with an always-failing object schema such as { "not": {} }, or reject the request in an onRequest hook.

    Fastify route request validation body, querystring/query, params, or headers schema = {"not":{}}

Event History

Sep 4, 2026
CVE Published
via MITRE·09:59 AM
Data Sourced
via MITRE·09:59 AM
DescriptionSeverityWeakness
Data Sourced
via NVD·10:17 AM
DescriptionSeverityWeaknessAffected Software
Sep 30, 2026
Advisory Published
via GitHub·11:44 PM
Data Sourced
via GitHub·11:44 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Which applications are exposed to this bypass?

Applications using fastify versions before 5.12.2 are exposed only where a route assigns the boolean value false as its body, querystring, params, or headers schema. Routes using false as a deny-all schema can receive requests and execute their handlers instead of rejecting all input.

2

What does an attacker need to exploit it?

An unauthenticated remote client can exploit the issue by sending a request to an affected route. No privileges or user interaction are required.

3

Are default fastify routes affected?

The issue depends on an application explicitly configuring false for a route request schema component. The provided information does not indicate that routes without such a deny-all schema configuration are affected.

4

How can I tell whether my application is affected?

Review route definitions for body, querystring, params, or headers schemas set to the boolean value false, and check whether the deployed fastify version is earlier than 5.12.2. Such routes may currently execute their handlers for requests that were intended to be rejected.

5

What should I do if I cannot upgrade immediately?

The provided remediation is to upgrade to fastify 5.12.2 or later. Until then, identify affected routes and avoid relying on boolean false schemas to prevent their handlers from being reached.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203