CVE-2026-69183: Monkeytype: Rate-limit and anti-brute-force controls bypassable via spoofed HTTP headers (forgotPasswordEmail/verificationEmail mail bombing and badAuth bypass)

Published Aug 20, 2026
·
Updated

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.

Affected Software

1 affected component
monkeytype<=26.26.0

Event History

Aug 20, 2026
CVE Published
via MITRE·04:16 PM
Data Sourced
via MITRE·04:16 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Does exploitation require an account or user interaction?

No. An unauthenticated attacker can send repeated requests while changing client-controlled IP headers to obtain a new rate-limit bucket for each request.

2

Which deployment paths are most likely to remain exposed?

Direct-to-origin access is affected when the supplied forwarding headers are not overwritten by a trusted proxy. The x-forwarded-for header remains a concern in that situation; cf-connecting-ip exploitability depends on the deployment topology.

3

What can an attacker do after bypassing the limiter?

They can repeatedly invoke the forgotPasswordEmail and verificationEmail endpoints to mail bomb registered users. The bypass can also evade brute-force protections and consume Firebase or SMTP quota, contributing to resource exhaustion.

4

How can I check whether my instance is affected?

Versions 26.26.0 and earlier use a rate-limit key generator that prioritizes cf-connecting-ip and x-forwarded-for over the trust-proxy-derived req.ip value. Review whether those headers can reach the application without being overwritten by a trusted proxy, including through direct origin access.

5

Is a fixed release available?

No fixed version was available as of this review.

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