🔍 CVE-2026-69183

7.5
CVSS Score
HIGH
2026-08-20
2026-10-18 20:10
✅ 완료

🇰🇷 한글 설명

Monkeytype의 26.26.0 이하 버전에서 백엔드 속도 제한(rate-limit) 키 생성 로직에 결함이 발견되었습니다. 공격자가 클라이언트 제어가 가능한 HTTP 헤더를 조작하여 속도 제한을 우회함으로써, 비밀번호 재설정 요청을 대량으로 보내 메일 폭탄을 투하하거나 리소스를 고갈시킬 수 있습니다.

💡 쉬운 설명

사용자가 너무 많은 요청을 보내지 못하게 막는 방어벽이 헤더 조작을 통해 무력화될 수 있는 문제입니다. 이를 통해 공격자는 이메일을 무차별적으로 발송하거나 서버의 자원을 낭비하게 만들 수 있습니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

Monkeytype 26.26.0 및 그 이전 버전

⚔️ 공격 벡터

cf-connecting-ip 또는 x-forwarded-for 헤더를 조작하여 속도 제한 로직 우회

🛡️ 대응 방법

신뢰할 수 있는 프록시로부터 전달된 IP(req.ip)만을 사용하도록 백엔드 미들웨어 로직 수정 및 패치 적용

🔧 검증 코드

해당 파일 내에서 클라이언트 제어 헤더를 사용하여 rate-limit 키를 생성하는 코드가 존재하는지 확인합니다.

Shell / Script
grep -r "rate-limit.ts" backend/src/middlewares/ && grep -E "cf-connecting-ip|x-forwarded-for" backend/src/middlewares/rate-limit.ts

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Storage Protect Client