🇰🇷 한글 설명
WordPress용 OTP Login & Register Woocommerce 플러그인 2.7.2 이하 버전에서 OTP 무차별 대입 공격을 통한 인증 우회 취약점이 발견되었습니다. 공격자는 쿠키를 변경하여 속도 제한을 우회하고, 취약한 난수 생성 방식과 낮은 OTP 범위를 악용하여 임의의 계정(관리자 포함)에 로그인할 수 있습니다.
💡 쉬운 설명
로그인할 때 사용하는 일회용 비밀번호(OTP)를 무작위로 계속 입력하여 맞출 수 있는 보안 결함입니다. 공격자가 쿠키를 바꿔가며 제한 없이 시도할 수 있어, 전화번호만 알면 다른 사람의 계정을 탈취할 수 있습니다.
🇺🇸 원문 (English)
The OTP Login & Register Woocommerce plugin for WordPress is vulnerable to Authentication Bypass via OTP Brute Force in all versions up to, and including, 2.7.2. The vulnerability exists because the OTP rate-limit attempt counter in `process_otp_form` is keyed exclusively on the attacker-controlled `xoo_ml_user_ip_data` cookie's `ip_address` field, allowing unlimited counter resets by simply rotating the cookie, while the OTP itself is generated with PHP's non-cryptographic `rand()` function over a default space of only 9,000 possible values (1000–9999), and both the OTP issuance endpoint (`xoo_ml_login_with_otp`) and verification endpoint (`xoo_ml_otp_form_submit`) are registered as unauthenticated `wp_ajax_nopriv` actions with no nonce or capability checks. This makes it possible for unauthenticated attackers to brute-force the OTP for any registered account and obtain a full WordPress authentication session — including for administrator accounts — via `wp_set_auth_cookie()` in `login_user_with_otp()`. Exploitation requires the attacker to know the target user's registered phone number, which is used to trigger OTP issuance via the unauthenticated `xoo_ml_login_with_otp` endpoint.
📍 영향받는 시스템
OTP Login & Register Woocommerce plugin for WordPress (v2.7.2 및 그 이하 모든 버전)
⚔️ 공격 벡터
쿠키 조작을 통한 속도 제한 우회 및 낮은 엔트로피의 OTP 무차별 대입 공격
🛡️ 대응 방법
플러그인을 최신 버전으로 업데이트하고, 보안이 강화된 난수 생성 방식 및 적절한 속도 제한 로직이 적용되었는지 확인하십시오.
🔧 검증 코드
출력 결과에 해당 플러그인이 포함되어 있다면 설치된 것이며, 설치된 버전이 2.7.2 이하인지 확인이 필요합니다.
wp plugin list --status=active | grep -i 'otp-login-register-woocommerce'