Atomic Edge analysis of CVE-2025-14976:
The User Registration & Membership WordPress plugin, versions up to and including 4.4.8, contains a Cross-Site Request Forgery (CSRF) vulnerability in its administrative post management functionality. This flaw allows unauthenticated attackers to delete arbitrary posts by tricking an administrator into performing an action, such as clicking a malicious link. The vulnerability has a CVSS score of 5.4 (Medium severity).
Root Cause:
The vulnerability exists in the `process_row_actions` function within the abstract list table handler (`user-registration/includes/abstracts/abstract-ur-list-table.php`). The function processes bulk actions like ‘delete’, ‘trash’, and ‘untrash’ for posts. In the vulnerable version, the ‘delete’, ‘trash’, and ‘untrash’ case blocks (lines 263-293) lacked a call to `check_admin_referer()`. This function validates the WordPress nonce, a security token that prevents CSRF attacks. The missing validation allowed forged requests to pass through if the attacker could predict or bypass the nonce check.
Exploitation:
An attacker crafts a malicious link or form that targets the plugin’s administrative AJAX or POST handler. The payload would include the `action` parameter set to ‘delete’ (or ‘trash’/’untrash’) and the `post_id` parameter specifying the target post. The request would be sent to a WordPress administrative endpoint, such as `admin-ajax.php` or a custom admin page that invokes the `process_row_actions` function. When a logged-in administrator with appropriate privileges (e.g., `delete_posts` capability) visits the attacker’s page, the forged request executes, deleting the specified post without the administrator’s consent.
Patch Analysis:
The patch adds nonce validation using `check_admin_referer( ‘bulk-‘ . $this->_args[‘plural’] )` at the beginning of each case block for ‘bulk_trash’, ‘trash’, ‘bulk_untrash’, ‘untrash’, ‘bulk_delete’, and ‘delete’ actions. This function verifies the request includes a valid nonce specific to the bulk action context. The patch also updates the plugin version from 4.4.8 to 4.4.9 in `user-registration/user-registration.php`. The fix ensures that any request attempting to perform these destructive actions must originate from a legitimate administrative interface, blocking CSRF attacks.
Impact:
Successful exploitation allows attackers to delete arbitrary posts on the WordPress site. This can lead to content loss, site defacement, or disruption of normal site operations. The attack requires social engineering to trick a privileged user into performing an action, but no authentication is required for the attacker. The impact is limited to post deletion and does not extend to privilege escalation or remote code execution.
