SignUp & SignIn <= 1.0.0 - Unauthenticated Privilege Escalation via Weak Password Reset Validation via 'reset_activation_code' Leading to Account Takeover
Description
The SignUp & SignIn plugin for WordPress is vulnerable to Authentication Bypass via Weak Password Reset Validation leading to Account Takeover in versions up to, and including, 1.0.0. This is due to the pravel_change_password() AJAX handler — registered via wp_ajax_nopriv_pravel_change_password and therefore accessible to unauthenticated users — performing no nonce verification, no capability check, and only a loose equality check between an attacker-supplied reset_activation_code POST parameter and the target user's forgot_email user meta value; when a user has never initiated a password reset, get_user_meta() returns an empty string that trivially satisfies this check against an omitted or empty attacker-supplied code. This makes it possible for unauthenticated attackers to change the password of any WordPress user, including administrators, by sending a crafted POST request to admin-ajax.php with action=pravel_change_password, reset_user_id set to the target account's user ID, and new_password_custom set to an attacker-chosen password. Successful exploitation allows the attacker to authenticate with the newly set password and fully take over the targeted account, achieving administrator-level privilege escalation on the affected site.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Affected products
1- Range: <=1.0.0
Patches
Vulnerability mechanics
Root cause
"Missing nonce verification, capability check, and strict validation of the password reset activation code in `pravel_change_password()` allows unauthenticated attackers to set any user's password."
Attack vector
An unauthenticated attacker sends a crafted POST request to `admin-ajax.php` with `action=pravel_change_password`, `reset_user_id` set to the target user's ID, and `new_password_custom` set to an attacker-chosen password. Because `pravel_change_password()` lacks nonce and capability checks, and because `get_user_meta()` returns an empty string when the target user has never initiated a password reset, the loose equality check against an omitted or empty `reset_activation_code` trivially passes. This allows the attacker to change any WordPress user's password, including administrators, and then log in with the new password to achieve full account takeover.
Affected code
The vulnerability resides in the `pravel_change_password()` function in `lib/function.php` (lines 222–236). This AJAX handler is registered via `wp_ajax_nopriv_pravel_change_password` and is therefore accessible to unauthenticated users. It performs no nonce verification, no capability check, and uses a loose equality comparison (`==`) between the attacker-supplied `reset_activation_code` POST parameter and the `forgot_email` user meta value retrieved via `get_user_meta()` [ref_id=1][ref_id=2][ref_id=3].
What the fix does
The advisory does not provide a patch. To remediate, the `pravel_change_password()` function must validate a nonce, verify the user's identity (e.g., by checking the `reset_activation_code` against a stored value using strict comparison `===`), and ensure the code is non-empty before allowing a password change. Additionally, the handler should enforce that the user has actually requested a password reset by confirming the `forgot_email` meta key exists and is not an empty string.
Preconditions
- inputThe attacker must know or enumerate the target user's WordPress user ID.
- configThe target user must not have an active password reset in progress (i.e., the `forgot_email` user meta must be empty or unset).
- networkThe attacker must be able to send HTTP POST requests to the WordPress `admin-ajax.php` endpoint.
Generated on Jun 24, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
4- plugins.trac.wordpress.org/browser/signup-signin/tags/1.0.0/lib/function.phpmitre
- plugins.trac.wordpress.org/browser/signup-signin/tags/1.0.0/lib/function.phpmitre
- plugins.trac.wordpress.org/browser/signup-signin/tags/1.0.0/lib/function.phpmitre
- www.wordfence.com/threat-intel/vulnerabilities/id/c0a617fc-da3d-4828-b027-44093dd11769mitre
News mentions
0No linked articles in our index yet.