Skip to main content

Customer Email Verification EUVDEUVD-2026-102615

| CVE-2026-104745 HIGH
Improper Privilege Management (CWE-269)
2026-10-16 Wordfence GHSA-hrmj-f3f9-pq8r
8.1
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify store using hashids encoding
  2. Delivery
    Recover md5(time()) Hashids salt
  3. Exploit
    Brute-force ~7-bit activation code
  4. Execution
    Forge alg_wc_ev_verify_email GET request
  5. Impact
    Authenticate 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 wp_rand(100) code generation (~101 values, ~7 bits); (2) the attacker must recover or brute-force the Hashids salt, which defaults to an md5(time()) value fixed at first initialization, requiring the attacker to narrow the initialization timestamp; and (3) the targeted account (e.g., an administrator) must still have an unverified email address. Limiting factors: the non-default 'hashids' mode requirement sharply reduces the affected population, and salt recovery is the primary barrier - the per-user code space itself is trivially brute-forceable once salt and mode are known, aided by the handler's lack of nonce validation and rate limiting.

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 verify() handler hooked to init, while AC:H correctly captures the chained conditions required for success. However, several mitigating facts cut against widespread exploitability: the 'Encoding method' must be changed to the non-default 'hashids' value, the attacker must recover or brute-force the Hashids salt (an md5(time()) value - guessable only if initialization time can be narrowed), and the target account must remain unverified. No EPSS score, KEV listing, or SSVC decision data was provided, and no public exploit was identified at time of analysis, so there is no evidence of active or automated exploitation. The combination of a non-default configuration requirement plus salt recovery strongly suggests this is a targeted, opportunistic issue rather than a mass-exploitable one. Note a tension worth flagging: the ~7-bit code space (~101 values) is trivially brute-forceable, so once the hashids mode and salt are known, the final step is near-instant - the difficulty lives entirely in the salt recovery and the non-default setting, not the code brute force.

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 md5(time()) at first init). They then forge a verification URL, iterating the ~101 possible wp_rand(100) activation codes against an unverified administrator account via the ?alg_wc_ev_verify_email= GET parameter until the account is marked verified and they gain authenticated admin access. No public exploit code was identified at time of analysis, but the handler has no nonce check and no rate limiting, so the final brute-force is fast once preconditions are met.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Customer Email Verification for WooCommerce 0 ≤3.3.0

Affected Packages

euvd customer_email_verification_for_woocommerce no fix

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

Vendor (Wordfence) PRIMARY 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.5%
Top 57% exploitable
Prevalence
Medium
WooCommerce email-verification plugin, moderate install base, not ubiquitous
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy