Ad · Leaderboard 728×90

CVE-2026-104745

8.1High

Published 16 Oct 2026 · NVD status: Deferred · AI triage by gemini-3.8-flash

8.1High
Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None
Impact
Full C/I/A compromise
Weakness
CWE-269

Impact

Unauthenticated attackers can log in as any unverified account, including administrators, via forged verification URLs. Attackers need network access to the site, the plugin's encoding set to 'hashids', and knowledge or brute-force of the Hashids salt.

Root cause

The activation secret generator uses wp_rand(100) when configured for Hashids, generating roughly 101 possible values with no nonce check or rate limiting on the verification handler.

Affected systems

Customer Email Verification for WooCommerce plugin for WordPress versions up to and including 3.3.0

CVSS v3.1 · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

Fix & remediation

Upgrade to a version newer than 3.3.0 once available. If patching must wait, change the plugin's 'Encoding method' setting away from 'hashids' to the default option.

shell
$ wp plugin update emails-verification-for-woocommerce

AI-suggested. Run it in staging first and check it against the vendor advisory. Why?

Ad · In-content banner

NVD description

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.

References

Source: nvd.nist.gov/vuln/detail/CVE-2026-104745

Ad · Sticky 320×50 / 728×90