🇰🇷 한글 설명
WordPress용 Customer Email Verification for WooCommerce 플러그인(3.3.0 이하 버전)에서 권한 상승 취약점이 발견되었습니다. 'hashids' 인코딩 방식 사용 시 생성되는 인증 코드가 매우 낮은 엔트로피를 가져, 공격자가 무차별 대입 공격을 통해 관리자 계정의 인증을 우회하고 권한을 탈취할 수 있습니다.
💡 쉬운 설명
이메일 인증 코드가 너무 단순하게 만들어져서, 해커가 숫자를 무작위로 대입해 관리자 계정으로 로그인할 수 있는 문제입니다. 보안 설정이 취약하게 되어 있어 누구나 쉽게 계정 권한을 뺏을 수 있습니다.
🇺🇸 원문 (English)
The Customer Email Verification for WooCommerce plugin for WordPress is vulnerable to Privilege Escalation via the `alg_wc_ev_verify_email` parameter in versions up to, and including, 3.3.0. The vulnerability exists because `alg_wc_ev_generate_user_code()` generates the per-user activation secret using `wp_rand(100)` when the plugin's 'Encoding method' is set to 'hashids', producing only ~101 possible values (~7 bits of entropy); the resulting token is a reversible Hashids encoding with no cryptographic MAC, and the unauthenticated `verify()` handler — hooked to `init` at `PHP_INT_MAX` with no nonce check and no rate limiting — accepts and acts on the attacker-controlled `?alg_wc_ev_verify_email=` GET parameter directly. This makes it possible for unauthenticated attackers to gain authentication as any unverified WordPress account, including administrator-level accounts, by brute-forcing the trivially small activation code space via a forged verification URL. Exploitation requires that the 'Encoding method' setting be changed to 'hashids' (non-default), that the attacker recover or brute-force the Hashids salt (which defaults to an `md5(time())` value set at first initialization), and that the target account's email address remain unverified.
📍 영향받는 시스템
Customer Email Verification for WooCommerce plugin versions up to and including 3.3.0
⚔️ 공격 벡터
인증되지 않은 공격자가 GET 파라미터를 이용해 낮은 엔트로피의 인증 코드를 무차별 대입(Brute-force)하여 공격
🛡️ 대응 방법
플러그인을 최신 버전으로 업데이트하거나, 인코딩 방식을 'hashids'가 아닌 다른 안전한 방식으로 변경하십시오.
🔧 검증 코드
명령어 결과에 해당 플러그인이 나타나면 설치된 것이며, 버전이 3.3.0 이하인지 확인하여 취약 여부를 판단합니다.
wp plugin list --status=active | grep -i 'customer-email-verification'