CVE-2025-67560
Executive Summary
CVE-2025-67560 is a Missing Authorization vulnerability in the WordPress plugin Listdom by Webilia Inc., affecting versions up to and including 5.0.1. This flaw allows an authenticated attacker (with low privileges) to exploit incorrectly configured access control security levels, potentially leading to unauthorized data access or modification. The vulnerability has a CVSS score of 5.4 (Medium), with an EPSS probability of 0.0% indicating low active exploitation likelihood. No public proof-of-concept (PoC) or exploit code has been released, and no official patch is available as of the latest advisory.
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 affects the WordPress plugin ecosystem. Listdom is distributed via the official WordPress Plugin Directory and third-party marketplaces. Users should verify the integrity of their plugin files and monitor for updates from the vendor. Since no patch exists, supply chain risk is elevated; administrators must consider temporary workarounds or plugin replacement.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): Low (L) – requires authenticated user
- User Interaction (UI): None (N)
- Scope (S): Unchanged (U)
- Confidentiality Impact (C): Low (L)
- Integrity Impact (I): Low (L)
- Availability Impact (A): None (N)
- Base Score: 5.4 (Medium)
Threat Level: Medium. Exploitation requires authentication but low complexity. Impact is limited to partial confidentiality and integrity loss.
Deep Dive & Mechanics
The vulnerability resides in the Listdom plugin's access control mechanisms. The plugin fails to properly enforce authorization checks on certain administrative or AJAX endpoints. An authenticated user with minimal privileges (e.g., subscriber) can invoke functions intended for higher-privileged roles (e.g., editor, admin). This is a classic Missing Authorization (CWE-862) flaw.
Root Cause: The plugin uses current_user_can() checks inconsistently or relies on nonce verification alone without proper capability validation. Attackers can craft requests to modify list entries, access private data, or escalate privileges within the plugin's context.
Attack Scenario:
- Attacker authenticates as a low-privilege user (e.g., subscriber).
- Attacker sends a crafted HTTP request to a vulnerable endpoint (e.g.,
wp-admin/admin-ajax.php?action=listdom_update_list). - The plugin processes the request without verifying the user's capabilities.
- Attacker gains unauthorized access to modify or view restricted data.
Vulnerable vs. Patched Code
Since no official patch exists, the following is a hypothetical fix based on common WordPress security practices.
Vulnerable Code (listdom/includes/class-listdom-ajax.php):
add_action('wp_ajax_listdom_update_list', 'listdom_update_list_callback');
function listdom_update_list_callback() {
// Missing capability check
$list_id = intval($_POST['list_id']);
// Process update...
wp_send_json_success();
}
Patched Code (Hypothetical):
add_action('wp_ajax_listdom_update_list', 'listdom_update_list_callback');
function listdom_update_list_callback() {
// Add capability check
if (!current_user_can('edit_posts')) {
wp_die('Unauthorized', 403);
}
$list_id = intval($_POST['list_id']);
// Process update...
wp_send_json_success();
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress instance with Listdom <= 5.0.1 installed and activated.
- Low-privilege user account (e.g., subscriber).
Exploitation Steps:
- Log in as the low-privilege user and obtain a valid nonce and cookie.
- Identify vulnerable endpoints by analyzing plugin source code or using fuzzing.
- Send a crafted POST request to
wp-admin/admin-ajax.phpwith actionlistdom_update_listand malicious parameters.
Example cURL Command:
curl -X POST 'http://target/wp-admin/admin-ajax.php' \
-H 'Cookie: wordpress_logged_in_xxx=...' \
-d 'action=listdom_update_list&list_id=1&title=Hacked'
Blue Team
Detection:
- Monitor for unusual AJAX requests from low-privilege users to sensitive actions.
- Look for patterns of
admin-ajax.phpcalls with actions likelistdom_*from unexpected roles. - Enable WordPress audit logging (e.g., WP Activity Log plugin).
Hunting Query (Splunk):
index=web sourcetype=access_combined
| search uri="/wp-admin/admin-ajax.php" action=listdom_*
| eval user_role=extract_field("role", raw)
| where user_role IN ("subscriber", "contributor")
| stats count by src_ip, user, action
Indicators of Compromise (IOCs)
- Network:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=listdom_*parameters. - Unusual HTTP 200 responses to unauthorized actions.
- POST requests to
- File:
- Modified entries in
wp_postsorwp_postmetatables without corresponding user capability. - Plugin files with missing capability checks (e.g.,
class-listdom-ajax.php).
- Modified entries in
- Log:
- WordPress debug log entries showing
wp_dieor403errors on AJAX endpoints. - Failed capability checks in
current_user_can()calls.
- WordPress debug log entries showing
Detection Engineering
YARA Rule
rule CVE_2025_67560_Listdom_Missing_Auth {
meta:
description = "Detects missing authorization in Listdom plugin files"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-67560"
strings:
$vuln_func = "current_user_can" nocase
$ajax_action = "listdom_" nocase
$missing_check = "wp_ajax_" nocase
condition:
$ajax_action and $missing_check and not $vuln_func
}
Sigma Rule
title: CVE-2025-67560 - Listdom Missing Authorization Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects exploitation attempts of missing authorization in Listdom plugin
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-uri-query|contains: 'action=listdom_'
cs-method: 'POST'
condition: selection
falsepositives:
- Legitimate admin actions
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-67560 - Listdom Missing Authorization Exploit";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=listdom_"; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the Listdom plugin until an official patch is released.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithaction=listdom_*from non-admin users. - Restrict user roles – ensure only trusted users have accounts on the site.
Long-Term Fix:
- Apply vendor patch when available.
- Replace plugin with an alternative that has proper access controls.
- Conduct a security audit of all WordPress plugins.
WAF Rule Example (ModSecurity):
SecRule REQUEST_URI "/wp-admin/admin-ajax.php" \
"chain,id:1001,deny,msg:'Listdom Missing Auth Exploit'"
SecRule ARGS:action "^listdom_" \
"chain"
SecRule &ARGS:nonce "0"
Valters IT Signature This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters-it.com.
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.