Description
@fastify/rate-limit before 11.2.0 keys rate-limit buckets by the verbatim client IP string returned from request.ip. Because a single IPv6 client can control a large address range (a /64 holds 2^64 distinct addresses) and the same address has multiple valid textual representations, an IPv6 capable client can defeat the rate-limit boundary by rotating addresses or by rewriting the same address in different forms. Applications that use @fastify/rate-limit to protect endpoints such as authentication, password reset, OTP delivery, or expensive API calls can be bypassed by IPv6 clients behind a proxy that surfaces IPv6 to the origin when trustProxy is enabled. The issue is fixed in @fastify/rate-limit 11.2.0, where the default key generator normalizes IPv6 addresses to their canonical form, collapses IPv4 mapped IPv6 to IPv4, and applies a configurable prefix mask (default /64) via a new ipv6Subnet option.
Published: 2026-07-29
Score: 7.3 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability resides in @fastify/rate-limit versions prior to 11.2.0 where the rate‑limit bucket key is derived straight from the raw client IP string returned by request.ip. Since an IPv6 client can generate a vast address space and an address has many valid textual representations, a malicious user can change or rewrite the IP string to evade the bucket. This bypass undermines controls on authentication, password reset, OTP or other expensive API calls, effectively allowing an attacker to send unlimited requests or perform brute‑force attacks. The weakness corresponds to CWE‑307 (authorization bypass) and CWE‑770 (excessive resource consumption).

Affected Systems

The affected product is the @fastify/rate-limit module, specifically all releases older than 11.2.0. No other vendors or products are listed.

Risk and Exploitability

The CVSS score of 7.3 places the vulnerability in the high‑severity category. EPSS shows a probability of exploitation of less than 1 %, indicating that while the exploit is technically possible, it is not yet widely observed. The vulnerability is not listed in CISA KEV. The attack requires an IPv6 capable client behind a proxy that forwards IPv6 to the origin when trustProxy is enabled; using IPv6 address rotation or textual rewriting, an attacker can continuously bypass the rate limit without needing privileged access to the target system.

Generated by OpenCVE AI on August 3, 2026 at 13:12 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade @fastify/rate-limit to version 11.2.0 or later, which normalizes IPv6 addresses and allows configuration of a subnet mask via the ipv6Subnet option.
  • If an upgrade cannot be performed immediately, replace the default key generator with a custom function that normalizes IPv6 addresses to a canonical form or applies an IPv6 subnet mask before bucket resolution.
  • Review the trustProxy configuration and, if possible, disable direct exposure of the raw IPv6 address to the application or limit trust only to a known, secure set of proxies.

Generated by OpenCVE AI on August 3, 2026 at 13:12 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 30 Jul 2026 14:30:00 +0000

Type Values Removed Values Added
First Time appeared Fastify
Fastify fastify/rate-limit
Vendors & Products Fastify
Fastify fastify/rate-limit

Wed, 29 Jul 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 29 Jul 2026 16:45:00 +0000

Type Values Removed Values Added
Description @fastify/rate-limit before 11.2.0 keys rate-limit buckets by the verbatim client IP string returned from request.ip. Because a single IPv6 client can control a large address range (a /64 holds 2^64 distinct addresses) and the same address has multiple valid textual representations, an IPv6 capable client can defeat the rate-limit boundary by rotating addresses or by rewriting the same address in different forms. Applications that use @fastify/rate-limit to protect endpoints such as authentication, password reset, OTP delivery, or expensive API calls can be bypassed by IPv6 clients behind a proxy that surfaces IPv6 to the origin when trustProxy is enabled. The issue is fixed in @fastify/rate-limit 11.2.0, where the default key generator normalizes IPv6 addresses to their canonical form, collapses IPv4 mapped IPv6 to IPv4, and applies a configurable prefix mask (default /64) via a new ipv6Subnet option.
Title @fastify/rate-limit vulnerable to rate-limit bypass via IPv6 address rotation
Weaknesses CWE-307
CWE-770
References
Metrics cvssV3_1

{'score': 7.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L'}


Subscriptions

Fastify Fastify/rate-limit Fastify\/rate-limit
cve-icon MITRE

Status: PUBLISHED

Assigner: openjs

Published:

Updated: 2026-07-29T17:56:31.392Z

Reserved: 2026-07-08T17:27:38.479Z

Link: CVE-2026-15144

cve-icon Vulnrichment

Updated: 2026-07-29T17:56:27.711Z

cve-icon NVD

Status : Analyzed

Published: 2026-07-29T17:16:50.637

Modified: 2026-08-05T15:33:13.620

Link: CVE-2026-15144

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T13:15:05Z

Weaknesses
  • CWE-307

    Improper Restriction of Excessive Authentication Attempts

  • CWE-770

    Allocation of Resources Without Limits or Throttling