Monkeytype
Monthly
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. Practical consequences include mail-bombing registered users via the `/users/forgotPasswordEmail` and `verificationEmail` endpoints, exhausting Firebase or SMTP quotas affecting all users, and evading brute-force credential protections. No public exploit has been identified at time of analysis; no fixed version is available.
Monkeytype is a minimalistic and customizable typing test. In 25.49.0 and earlier, there is improper handling of user input which allows an attacker to execute malicious javascript on anyone viewing a malicious quote submission. quote.text and quote.source are user input, and they're inserted straight into the DOM. If they contain HTML tags, they will be rendered (after some escaping using quotes and textarea tags).
Monkeytype is a minimalistic and customizable typing test. Rated low severity (CVSS 2.4), this vulnerability is low attack complexity. Public exploit code available.
Monkeytype is a minimalistic and customizable typing test. Rated critical severity (CVSS 9.6), this vulnerability is remotely exploitable, no authentication required, low attack complexity. Public exploit code available.
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. Practical consequences include mail-bombing registered users via the `/users/forgotPasswordEmail` and `verificationEmail` endpoints, exhausting Firebase or SMTP quotas affecting all users, and evading brute-force credential protections. No public exploit has been identified at time of analysis; no fixed version is available.
Monkeytype is a minimalistic and customizable typing test. In 25.49.0 and earlier, there is improper handling of user input which allows an attacker to execute malicious javascript on anyone viewing a malicious quote submission. quote.text and quote.source are user input, and they're inserted straight into the DOM. If they contain HTML tags, they will be rendered (after some escaping using quotes and textarea tags).
Monkeytype is a minimalistic and customizable typing test. Rated low severity (CVSS 2.4), this vulnerability is low attack complexity. Public exploit code available.
Monkeytype is a minimalistic and customizable typing test. Rated critical severity (CVSS 9.6), this vulnerability is remotely exploitable, no authentication required, low attack complexity. Public exploit code available.