Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Publicly reachable endpoint requires no credentials or special conditions; impact is solely availability via quota exhaustion with no confidentiality or data integrity breach.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
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.
AnalysisAI
Rate-limit bypass in Monkeytype ≤ 26.26.0 allows unauthenticated remote attackers to neutralize all request throttling protections by rotating client-controlled cf-connecting-ip or x-forwarded-for HTTP headers, with each rotated value creating an independent rate-limit bucket and resetting the window. The affected middleware in backend/src/middlewares/rate-limit.ts trusts these client-supplied headers over Express's trust-proxy-derived req.ip, rendering rootRateLimiter, badAuthRateLimiter, getKey(), and getKeyWithUid() ineffective. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | The `x-forwarded-for` spoofing path requires only network access to any Monkeytype backend HTTP endpoint and is exploitable unconditionally on deployments where no trusted upstream proxy strips or overwrites that header before the request reaches the application. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | CVSS 3.1 scores this at 7.5 High (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H), reflecting trivial, unauthenticated network exploitation with high availability impact - an accurate characterization given the zero-complexity header manipulation required. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | Full exploit scenario with step-by-step reproduction available after sign-in. |
| Remediation | No vendor-released patch has been identified at time of analysis; the GitHub Security Advisory GHSA-c878-p3jh-mmjf (https://github.com/monkeytypegame/monkeytype/security/advisories/GHSA-c878-p3jh-mmjf) should be monitored for a fix release. … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, inventory all Monkeytype deployments and confirm which instances run version 26.26.0 or earlier. …
Sign in for detailed remediation steps and compensating controls.
Threat intelligence, references, and detailed analysis are available after sign-in.
More in Monkeytype
View allMonkeytype is a minimalistic and customizable typing test. Rated critical severity (CVSS 9.6), this vulnerability is rem
Monkeytype is a minimalistic and customizable typing test. In 25.49.0 and earlier, there is improper handling of user in
Monkeytype is a minimalistic and customizable typing test. Rated low severity (CVSS 2.4), this vulnerability is low atta
Same weakness CWE-290 – Authentication Bypass by Spoofing
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-63423