🇰🇷 한글 설명
Better Auth 라이브러리에서 HTTP 속도 제한(Rate Limiter)이 x-forwarded-for 헤더의 텍스트 IP 주소를 기준으로 키를 생성하는 취약점이 발견되었습니다. IPv6 클라이언트가 방대한 주소 범위를 순환하거나 IP 주소의 인코딩 형식을 변경함으로써 속도 제한을 우회하여 인증 관련 경로를 공격할 수 있습니다. 이 문제는 1.4.17 및 1.5.0-beta.9 버전에서 수정되었습니다.
💡 쉬운 설명
로그인 시도 횟수를 제한하는 기능이 IP 주소를 너무 단순하게 인식하여 발생하는 문제입니다. 공격자가 IP 주소 형식을 살짝 바꾸거나 수많은 가짜 IP를 사용하는 것처럼 속여 제한 없이 로그인을 시도할 수 있습니다.
🇺🇸 원문 (English)
Better Auth is an authentication and authorization library for TypeScript. Prior to 1.4.17 and 1.5.0-beta.9, Better Auth's HTTP rate limiter keyed each request by the exact textual IP address it received in x-forwarded-for (or the configured IP-bearing header). IPv6 clients controlling a typical /64 allocation could rotate through 2^64 distinct source addresses without exhausting the per-address counter, defeating rate limiting on /sign-in/email, /sign-up/email, /forget-password, and every other path the limiter protects. The same bug allowed a single client to vary the textual encoding of one IPv6 address (uppercase, compression, IPv4-mapped, hex-encoded IPv4-in-IPv6) and produce multiple distinct keys. This vulnerability is fixed in 1.4.17 and 1.5.0-beta.9.
📍 영향받는 시스템
Better Auth versions prior to 1.4.17 and 1.5.0-beta.9
⚔️ 공격 벡터
IPv6 주소의 대량 순환 또는 다양한 인코딩 형식을 이용한 HTTP Rate Limiter 우회
🛡️ 대응 방법
Better Auth를 1.4.17 또는 1.5.0-beta.9 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 1.4.17 미만이거나 1.5.0-beta.9 미만인 경우 취약합니다.