🇰🇷 한글 설명
WWBN AVideo(e01e41ecc 및 이전 버전)의 enforceRateLimit() 함수에서 무차별 대입 공격 방지 기능이 우회되는 취약점이 발견되었습니다. isBot() 함수가 User-Agent 헤더가 없거나 특정 봇 식별자를 포함한 요청을 봇으로 간주하여 카운터를 저장하지 않기 때문에 발생합니다. 공격자는 이를 악용하여 로그인 시도 횟수 제한 없이 비밀번호를 무차별적으로 대입할 수 있습니다.
💡 쉬운 설명
로그인 시도를 여러 번 하면 차단하는 기능이 있는데, 특정 방식으로 접속하면 이 차단 기능이 작동하지 않는 문제입니다. 공격자가 이름을 숨기고 접속하면 비밀번호를 무한정 입력해 볼 수 있어 계정이 탈취될 위험이 있습니다.
🇺🇸 원문 (English)
WWBN AVideo (current e01e41ecc and earlier) contains a brute-force rate limiting bypass in enforceRateLimit(), which protects login.json.php and 13 other endpoints. The function stores its attempt counter via a cache layer (ObjectYPT::setCacheGlobal) that silently discards writes for any client identified as a bot by isBot(). Because isBot() treats a missing User-Agent header as a bot by default — and also matches common bot identifiers such as 'curl', 'bot', 'crawler', and 'spider' — the counter never increments for such clients, so the rate limit never fires. An unauthenticated attacker can therefore submit unlimited login attempts (e.g., by omitting the User-Agent header or using curl's default User-Agent), enabling unrestricted password-guessing attacks.
📍 영향받는 시스템
WWBN AVideo (e01e41ecc 및 그 이전 모든 버전)
⚔️ 공격 벡터
User-Agent 헤더를 생략하거나 'curl'과 같은 봇 식별자를 사용하여 로그인 시도 횟수 제한을 우회하는 무차별 대입 공격
🛡️ 대응 방법
최신 보안 패치가 적용된 버전으로 업데이트하거나, isBot() 로직을 수정하여 User-Agent가 없는 요청을 차단해야 합니다.
🔧 검증 코드
User-Agent 없이 요청을 보냈을 때 서버가 rate limit(429 Too Many Requests)을 적용하지 않고 계속 응답하면 취약한 상태입니다.
curl -I -s --user-agent '' http://<target_ip>/login.json.php | grep -i 'HTTP/'