🇰🇷 한글 설명
WooCommerce용 Customer Email Verification 플러그인 2.8.2 이하 버전은 인증 우회 취약점을 가집니다. 예측 가능한 이메일 인증 토큰(md5(email . time()))과 모든 방문자에게 노출되는 nonce를 이용해 인증되지 않은 공격자가 임의의 이메일 계정으로 로그인하거나 기존 계정을 인증 상태로 변경할 수 있습니다. 일부 업그레이드된 사이트에서만 악용 조건이 충족됩니다.
💡 쉬운 설명
이메일 인증을 우회하는 취약점으로, 공격자가 다른 사람의 이메일 주소로 쇼핑몰 계정에 로그인할 수 있습니다. 이전 버전에서 업그레이드한 일부 사이트만 영향을 받습니다.
🇺🇸 원문 (English)
The Customer Email Verification for WooCommerce plugin for WordPress is vulnerable to Authentication Bypass via a Predictable Email-Verification Token in all versions up to, and including, 2.8.2. This is due to the `authenticate_user_by_email_link()` function — hooked on the `wp` action and triggered by the `cusomer_email_verify` GET parameter — lacking any capability check or nonce verification, while the `secret_code` it validates is generated as `md5(email . time())` and the `verify_otp_nonce` required to trigger token issuance via the `wp_ajax_nopriv_resend_otp` handler is emitted to every front-end visitor through `wp_localize_script`. This makes it possible for unauthenticated attackers to log in as a newly created, verified WooCommerce customer bound to an arbitrary email address — or to flip an existing account's `customer_email_verified` meta to verified — fully bypassing the plugin's core email-verification control. Exploitation requires the `cev_user_log` table to contain a `password` column, which is absent from the fresh-install schema shipped in version 2.8.2 but is present on sites upgraded from an older version where that column was defined.
📍 영향받는 시스템
WordPress 플러그인 Customer Email Verification for WooCommerce 2.8.2 이하 (특히 구버전에서 업그레이드된 사이트)
⚔️ 공격 벡터
미인증 공격자가 노출된 nonce와 예측 가능한 md5 토큰으로 인증 엔드포인트(cusomer_email_verify 파라미터)를 호출해 계정 로그인 또는 인증 상태 변조
🛡️ 대응 방법
플러그인을 2.8.3 이상 최신 버전으로 업데이트하고, 로그인 기록과 계정 인증 상태를 점검
🔧 검증 코드
출력된 버전이 2.8.2 이하이면 취약하므로 업데이트가 필요하며, 명령이 실패하면 WordPress 설치 경로에서 플러그인 디렉터리 존재 여부를 직접 확인해야 합니다.
wp plugin get customer-email-verification-for-woocommerce --field=version 2>/dev/null || grep -i 'Version:' wp-content/plugins/customer-email-verification-for-woocommerce/*.php 2>/dev/null | head -1