{"id":"CVE-2026-69183","summary":"Monkeytype: Rate-limit and anti-brute-force controls bypassable via spoofed HTTP headers (forgotPasswordEmail/verificationEmail mail bombing and badAuth bypass)","details":"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.","aliases":["GHSA-c878-p3jh-mmjf"],"modified":"2026-09-20T11:31:04.346199458Z","published":"2026-08-20T16:16:43.289Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-290","CWE-307","CWE-644"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/69xxx/CVE-2026-69183.json"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/69xxx/CVE-2026-69183.json"},{"type":"ADVISORY","url":"https://github.com/monkeytypegame/monkeytype/security/advisories/GHSA-c878-p3jh-mmjf"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-69183"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/monkeytypegame/monkeytype","events":[{"introduced":"0"},{"last_affected":"7e46e09a9a8446ea4fa604b42eabc73441c964c7"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"last_affected":"26.26.0"}],"source":"AFFECTED_FIELD"}}],"versions":["v26.26.0","v26.21.0","v26.19.0","v26.15.0","v26.14.0","v26.11.0","v26.6.0","v26.2.0","v25.49.0","v25.48.0","v25.46.0","v25.44.0","v25.36.0","v25.35.0","v25.32.0","v25.31.0","v25.30.0","v25.27.0","v25.22.0","v25.19.0","v25.18.0","v25.16.1","v25.16.0","v25.13.0","v25.10.0","v25.8.0","v25.7.0","v25.6.0","v25.3.0","v25.2.0","v24.52.0","v24.49.0","v24.47.0","v24.42.0","v24.39.0","v24.38.0","v24.37.0","v24.36.0","v24.34.0","v24.33.0","v24.32.0","v24.31.3","v24.31.2","v24.31.1","v24.30.0","v24.29.0","v24.28.0","v24.27.0","v24.25.0","v24.24.0","v24.22.0","v24.21.1","v24.21.0","v24.20.1","v24.20.0","v24.19.0","v24.18.1","v24.18.0","v24.17.5","v24.17.4","v24.17.3","v24.17.2","v24.17.1","v24.17.0","v24.15.1","v24.15.0","v24.14.1","v24.14.0","v24.12.1","v24.12.0","v24.11.3","v24.11.2","v24.11.1","v24.11.0","v24.9.1","v24.7.0","v24.6.2","v24.6.1","v24.6.0","v24.5.2","v24.5.1","v24.5.0","v24.4.1","v24.4.0","v24.3.0","v24.2.0","v23.51.0","v23.48.0","v23.47.0","v23.46.1","v23.46.0","v23.45.0","v23.43.1","v23.43.0","v23.42.0","v23.41.0","v23.40.1","v1.17.14","v1.17.13","v1.17.12","v1.17.11","v1.17.10","v1.17.9","v1.17.8","v1.17.7","v1.17.6","v1.17.5","v1.17.4","v1.17.3","v1.17.2","v1.17.1","v1.17","v1.16.2","v1.16.1","v1.16","v1.15.3","v1.15.2","v1.15.1","v1.15","v1.14.4","v1.14.3","v1.14.1","v1.14","v1.13.4","v1.13.3","v1.13.2","v1.13.1","v1.13","v1.12.3","v1.12.2","v1.12.1","v1.12","v1.11.3","v1.11.2","v1.11.1","v1.11","v1.10.3","v1.10.2","v1.10.1","v1.9.5","v1.9.4","v1.9.3","v1.9.2","v1.9.1","v1.8.5","v1.8.4","v1.8.3","v1.8.2","v1.8.1","v1.8","v1.7.11","v1.7.10","v1.7.9","v1.7.8","v1.7.6","v1.7.7","v1.7.5","v1.7.4","v1.7.3","v1.7.2","v1.7.1","v1.7","v1.6.10","v1.6.9","v1.6.8","v1.6.6","v1.6.5","v1.6.4","v1.6.3","v1.6.2","v1.6.1","v1.6","v1.5.8","v1.5.7","v1.5.6","v1.5.5","v1.5.4","v1.5.3","v1.5.2","v1.5.1","v1.5.0","v1.4.25","v1.4.24","v1.4.23","v1.4.22","v1.4.21","v1.4.20","v1.4.19","v1.4.18","v1.4.17","v1.4.16","v1.5","v1.4.15","v1.4.14","v1.4.13","v1.4.12","v1.4.11","v1.4.10","v1.4.9","v1.4.8","v1.4.7","v1.4.6","v1.4.5","v1.4.4","v1.4.3","v1.4.2","v1.4.1","v1.4","v1.3.10","v1.3.9","v1.3.8","v1.3.7","v1.3.6","v1.3.5","v1.3.4","v1.3.3","v1.3.2","v1.3.1","v1.3","v1.2.8","v1.2.7","v1.2.6","v1.2.5","v1.2.4","v1.2.3","v1.2.2","v1.2.1"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-69183.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}]}