Atomic Edge analysis of CVE-2026-10530:
This vulnerability is a missing authorization issue in the Pie Register plugin for WordPress, affecting all versions up to 3.8.4.10. An unauthenticated attacker can exploit this to perform unauthorized actions. The CVSS score is 5.3, indicating a medium severity due to the potential for unauthorized data access or manipulation.
Root Cause: The root cause is the use of predictable hash generation functions, specifically `md5(time())` and `md5(uniqid(“piereg_”).time())`, across multiple files. These functions generate hashes for email verification, password reset keys, and payment verification URLs. Without a proper capability check, an attacker who can predict or brute-force these hashes could bypass security measures. Key files include `pie-register/classes/base.php` (lines 1718, 3912), `pie-register/classes/edit_form.php` (line 162), and `pie-register/pie-register.php` (lines 2610, 3969, 4009, 4292, 4453, 4609, 4671, 7782).
Exploitation: An attacker can exploit this by calculating or brute-forcing the MD5 hash of the current timestamp. For example, by sending a request to the password reset endpoint with the expected `key` parameter derived from `md5(time())`. The attack vector is a direct HTTP request to the vulnerable trigger, such as `wp-login.php?action=rp&key=&login=`. No authentication is required.
Patch Analysis: The patch replaces all instances of `md5(time())` and `md5(uniqid(“piereg_”).time())` with `wp_generate_password(32, false)`. This function generates a cryptographically secure, random 32-character string, making it impossible for an attacker to predict. The change is applied in all affected files: `base.php`, `edit_form.php`, and `pie-register.php`. The version is also updated to 3.8.4.10.
Impact: Successful exploitation allows an attacker to reset passwords, verify email addresses, or confirm payments without authorization. This can lead to account takeover, privilege escalation, or unauthorized access to user data. The lack of authentication in the vulnerable code paths makes this accessible to any unauthenticated user.







