CVE-2025-47446
Executive Summary
CVE-2025-47446 is a Cross-Site Request Forgery (CSRF) vulnerability affecting the Listamester plugin (versions through 2.3.6). This flaw allows an attacker to trick an authenticated administrator into unknowingly executing unwanted actions on the WordPress site, such as modifying settings, creating new admin users, or deleting content. The vulnerability is classified as a WordPress ecosystem issue, as Listamester is a WordPress plugin. The CVSS score is 4.3 (Medium), with a low EPSS score of 0.0%, indicating limited active exploitation at this time. No public proof-of-concept (PoC) or patch is currently available.
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
Listamester is a WordPress plugin, distributed via the official WordPress plugin repository and potentially third-party marketplaces. The lack of a patch and the nature of CSRF (which relies on user interaction) means that supply chain risk is moderate. Administrators should verify the integrity of their plugin files and monitor for any unauthorized changes.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
- Base Score: 4.3 (Medium)
- Attack Vector: Network (AV:N) – The attack is launched remotely.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: None (PR:N) – The attacker does not need to be authenticated.
- User Interaction: Required (UI:R) – The victim must click a link or visit a malicious page.
- Scope: Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality Impact: None (C:N) – No data is directly exposed.
- Integrity Impact: Low (I:L) – The attacker can modify data or settings.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: Medium. While the impact is limited to integrity, the attack is easy to execute and requires only user interaction. The lack of a patch increases the risk for unmaintained installations.
Deep Dive & Mechanics
The vulnerability resides in the Listamester plugin’s administrative functions. CSRF occurs when the plugin fails to implement proper anti-CSRF tokens (nonces) in its admin forms and AJAX handlers. An attacker can craft a malicious HTML page that, when visited by an authenticated admin, submits a forged request to the WordPress site. This request could:
- Change plugin settings (e.g., API keys, email templates).
- Create or delete admin users.
- Modify or delete existing lists or subscribers.
- Execute any action the admin is authorized to perform.
The attack works because the victim’s browser automatically includes their session cookies with the forged request, making it appear legitimate to the server.
Vulnerable vs. Patched Code
Since no patch is available, we can only describe the vulnerable pattern. A typical vulnerable code snippet in a WordPress plugin might look like:
// Vulnerable: No nonce verification
function listamester_save_settings() {
update_option( 'listamester_api_key', $_POST['api_key'] );
// ... other actions
}
add_action( 'admin_post_listamester_save', 'listamester_save_settings' );
A patched version would include a nonce check:
// Patched: Nonce verification added
function listamester_save_settings() {
if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'listamester_save_action' ) ) {
wp_die( 'Security check failed.' );
}
update_option( 'listamester_api_key', sanitize_text_field( $_POST['api_key'] ) );
// ... other actions
}
add_action( 'admin_post_listamester_save', 'listamester_save_settings' );
Exploitation & Lab Setup
Red Team (Attack Simulation)
- Setup: Deploy a WordPress instance with Listamester 2.3.6. Create an admin user.
- Craft Payload: Create an HTML file (
csrf.html) that automatically submits a POST request to change the plugin’s API key:<html> <body> <form action="http://target/wp-admin/admin-post.php" method="POST"> <input type="hidden" name="action" value="listamester_save"> <input type="hidden" name="api_key" value="attacker_controlled_key"> <input type="submit" value="Click me"> </form> <script>document.forms[0].submit();</script> </body> </html> - Deliver: Host the file on an attacker-controlled server and send the link to the victim admin (e.g., via email or social engineering).
- Execute: When the admin visits the link, the form auto-submits, changing the API key without their knowledge.
Blue Team (Defense & Detection)
- Monitor Admin Actions: Log all
admin_post_*actions and alert on unexpected changes to plugin settings. - Implement CSRF Tokens: Ensure all admin forms and AJAX handlers use WordPress nonces.
- User Education: Train admins to avoid clicking suspicious links and to log out after sessions.
- Web Application Firewall (WAF): Deploy rules to block requests with missing or invalid
Refererheaders for sensitive actions.
Indicators of Compromise (IOCs)
- Network: HTTP POST requests to
/wp-admin/admin-post.phpwithaction=listamester_saveand unexpected parameters. - File: Presence of
csrf.htmlor similar files on the server (if uploaded by attacker). - Log: WordPress debug log entries showing
wp_diecalls for nonce failures (if patched). - System: Unauthorized changes to the
listamester_api_keyoption in thewp_optionstable.
Detection Engineering
YARA Rule
rule CVE_2025_47446_Listamester_CSRF {
meta:
description = "Detects vulnerable Listamester plugin files missing nonce checks"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-47446"
strings:
$vuln_func = "admin_post_listamester" nocase
$nonce_check = "wp_verify_nonce" nocase
condition:
$vuln_func and not $nonce_check
}
Sigma Rule
title: Listamester CSRF Exploitation Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects potential CSRF attacks against Listamester plugin
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=listamester_save'
condition: selection
falsepositives:
- Legitimate admin actions
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-47446 Listamester CSRF Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-post.php"; http_uri;
content:"action=listamester_save"; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
- Immediate Action: Disable the Listamester plugin until a patch is released.
- Short-Term: Implement a virtual patch using a WAF to block requests to
admin-post.phpwithaction=listamester_saveunless a valid nonce is present. - Long-Term: Monitor the plugin’s official page for updates. Apply the patch as soon as it becomes available.
- Alternative: Consider replacing Listamester with a similar, actively maintained plugin that includes proper CSRF protections.
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.