Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify store using hashids encoding
-
DeliveryRecover md5(time()) Hashids salt
-
ExploitBrute-force ~7-bit activation code
-
ExecutionForge alg_wc_ev_verify_email GET request
-
ImpactAuthenticate as unverified administrator
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation is NOT possible against default configurations. Three specific conditions must all hold: (1) the plugin's 'Encoding method' setting must be changed from its default to 'hashids', which activates the weak |
| Impact | This is a genuinely serious impact flaw (full account takeover, including administrator, hence C:H/I:H/A:H) but with real-world risk that is heavily gated by preconditions, making it lower-priority than its 8.1 'High' CVSS suggests in most deployments. The CVSS vector (AV:N/PR:N/UI:N) correctly reflects remote, unauthenticated reachability of the vulnerable |
| Exploit ScenarioDerived | An unauthenticated attacker identifies a WooCommerce store running Customer Email Verification ≤3.3.0 configured with the 'hashids' encoding method, and recovers the site's Hashids salt (derived from |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
Privilege escalation in the Customer Email Verification for WooCommerce WordPress plugin through 3.3.0 allows unauthenticated attackers to gain authentication as any WordPress account that still has an unverified email address, including administrators, by brute-forcing a per-user activation secret that has only about 101 possible values. The weakness is genuine and high impact (full account takeover), but real-world risk is heavily gated by three preconditions: the plugin's 'Encoding method' must be set to the non-default 'hashids' option, the attacker must recover or brute-force the Hashids salt (which defaults to an md5(time()) value fixed at first initialization), and the targeted account's email must remain unverified. An upstream changeset addressing the issue is referenced in the WordPress plugin repository, and no public exploit code was identified at time of analysis; CVSS 3.1 scores it 8.1 (High, AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H), so despite the High score it should be triaged as lower priority than a default-configuration, unauthenticated account-takeover bug in most deployments.
RemediationAI
Primary fix: update the plugin above the affected 3.3.0 release - an upstream fix is contained in the WordPress.org plugin changeset 3744623 (https://plugins.trac.wordpress.org/changeset?reponame=&old=3744623%40emails-verification-for-woocommerce&new=3744623%40emails-verification-for-woocommerce), and the vendor advisory is at https://www.wordfence.com/threat-intel/vulnerabilities/id/6df7b3ed-a1e3-4df9-828e-95530661e27a?source=cve; if your installed version still reads 3.3.0 after checking for updates, deploy the latest plugin build directly from the repository. If you cannot patch immediately, the single most effective control is to leave (or reset) the 'Encoding method' setting to its default - do not select 'hashids' - since the weak wp_rand(100) code generation only activates in that mode; switching back from hashids may invalidate outstanding verification links, so affected users should be asked to re-request their verification emails. Second, rotate the Hashids salt to a long, random, non-time-derived value: the default salt is md5(time()) fixed at first initialization, so it is guessable, and changing it invalidates all existing tokens (acceptable if verification is re-triggered) while removing the attacker's ability to reproduce the salt. Third, ensure no administrator or high-privilege account is left in the unverified state - manually verify admin addresses, since the exploit requires the target account's email to remain unverified. Fourth, because the verify() handler runs on init with no nonce check and no rate limiting, add a WAF or reverse-proxy rule that rate-limits or temporarily blocks requests carrying ?alg_wc_ev_verify_email= from a single source; the trade-off is that aggressive throttling can delay legitimate user verifications. As a last resort, deactivating the plugin eliminates the exposure entirely at the cost of losing email-verification enforcement for new registrations.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The plugin is a WordPress/WooCommerce extension (CPE cpe:2.3:a:wpcodefactory:customer_email_verification_for_woocommerce, slug emails-verification-for-woocommerce) that gates account activation on email verification. Root cause is CWE-269 (Improper Privilege Management) combined with a severe entropy failure in token generation: when the non-default 'Encoding method' setting is 'hashids', alg_wc_ev_generate_user_code() builds the per-user activation secret with wp_rand(100), yielding only ~101 possible outputs (~7 bits of entropy), and that value is then wrapped in a reversible Hashids encoding with no cryptographic MAC or signature. Because Hashids is an encoding rather than an authentication primitive, recovering or guessing the salt lets an attacker decode/encode candidate values locally. The salt itself is weak by default - an md5(time()) value generated once at first plugin initialization - so an attacker who can narrow the installation timestamp can reproduce it. On top of this, the unauthenticated verify() handler is registered on WordPress' init hook at PHP_INT_MAX priority and reads the attacker-controlled ?alg_wc_ev_verify_email= GET parameter directly, with no nonce validation and no rate limiting, meaning forged verification URLs can be replayed at high volume against the tiny code space until one matches a target account. The relevant code paths are in includes/alg-wc-ev-functions.php (code generation, L331) and includes/class-alg-wc-ev-core.php (handler and verification logic, L498, L784, L1258).
Know when Customer Email Verification For Woocommerce gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Remotely reachable unauthenticated handler (AV:N/PR:N/UI:N); AC:H because success depends on non-default hashids mode and recovering the md5(time()) salt; full account takeover yields C:H/I:H/A:H.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
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.
Executive ViewAI
Customer Email Verification for WooCommerce (versions through 3.3.0) carries an unauthenticated privilege-escalation flaw that could allow an attacker to assume control of any WordPress account - including administrator accounts - that has not completed email verification, potentially exposing the storefront, customer records, and payment configuration. Real-world exposure is constrained because successful abuse requires a non-default plugin setting ('hashids' encoding) together with recovery of a weakly generated salt, and no public exploit code has been identified at time of analysis. Even so, any affected site that has not verified its privileged accounts should be treated as a candidate for full administrative takeover, which would carry material commercial, regulatory, and reputational consequences.
No vendor-released patch identified at time of analysis. Interim mitigations: confirm the plugin's 'Encoding method' is not set to the non-default 'hashids' option (revert to the default encoding if it is); rotate the Hashids salt to a high-entropy random value rather than the default time-derived value; require and enforce email verification for all privileged accounts, or disable accounts left unverified; temporarily deactivate the plugin if neither configuration change can be guaranteed; monitor and rate-limit requests to the plugin's activation/verification endpoints for brute-force patterns; and apply an upstream changeset when it is released as a versioned update.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
The Customer Email Verification for WooCommerce plugin for WordPress is vulnerable to Authentication Bypass in all versi
The Customer Email Verification for WooCommerce plugin for WordPress is vulnerable to Sensitive Information Exposure in
EUVD-2026-102615
GHSA-hrmj-f3f9-pq8r
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB