CVE-2026-69183

Monkeytype is a minimalistic and customizable typing test. In 26.26.0 and earlier, the backend rate-limit key generator in backend/src/middlewares/rate-limit.ts uses client-controlled cf-connecting-ip and x-forwarded-for headers before the trust-proxy-derived req.ip value. An unauthenticated attacker can rotate either header to create a new bucket for each request, bypassing rootRateLimiter, badAuthRateLimiter, getKey(), and the getKeyWithUid() fallback used by public endpoints. This permits repeated POST /users/forgotPasswordEmail and verificationEmail requests, mail bombing registered users, consuming Firebase or SMTP quota, evading brute-force protection, and enabling resource exhaustion. Exploitability of cf-connecting-ip depends on deployment topology, but x-forwarded-for and direct-to-origin paths remain affected when those values are not overwritten by a trusted proxy. No fixed version is available as of this review.
Configurations

No configuration.

History

18 Oct 2026, 20:10

Type Values Removed Values Added
Summary
  • (es) Monkeytype es una prueba de escritura minimalista y personalizable. En la versión 26.26.0 y anteriores, el generador de claves de límite de tasa del backend en backend/src/middlewares/rate-limit.ts utiliza los encabezados cf-connecting-ip y x-forwarded-for controlados por el cliente antes del valor req.ip derivado de trust-proxy. Un atacante no autenticado puede rotar cualquiera de los encabezados para crear un nuevo 'bucket' para cada solicitud, eludiendo rootRateLimiter, badAuthRateLimiter, getKey() y el mecanismo de reserva getKeyWithUid() utilizado por los puntos finales públicos. Esto permite solicitudes repetidas de POST /users/forgotPasswordEmail y verificationEmail, el bombardeo de correo electrónico a usuarios registrados, el consumo de cuota de Firebase o SMTP, la evasión de la protección contra fuerza bruta y la habilitación del agotamiento de recursos. La explotabilidad de cf-connecting-ip depende de la topología de despliegue, pero x-forwarded-for y las rutas directas al origen permanecen afectadas cuando esos valores no son sobrescritos por un proxy de confianza. Ninguna versión corregida está disponible a partir de esta revisión.

Information

Published : 2026-08-20 17:19

Updated : 2026-10-18 20:10


NVD link : CVE-2026-69183

Mitre link : CVE-2026-69183

CVE.ORG link : CVE-2026-69183


JSON object : View

Products Affected

No product.

CWE
CWE-290

Authentication Bypass by Spoofing

CWE-307

Improper Restriction of Excessive Authentication Attempts

CWE-644

Improper Neutralization of HTTP Headers for Scripting Syntax