CVE-2025-54018
Executive Summary
CVE-2025-54018 is a Missing Authorization vulnerability in the CM Pop-Up Banners WordPress plugin by CreativeMindsSolutions. This flaw allows an unauthenticated attacker to exploit incorrectly configured access control security levels, potentially leading to unauthorized access to sensitive data or functionality. The vulnerability affects all versions up to and including 1.8.4. As of this report, no patch is available, and no public proof-of-concept (PoC) or exploit code has been released. The EPSS score is 0.0%, indicating low exploitation likelihood currently, but the risk remains due to the lack of a patch.
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
WordPress Ecosystem Context
This vulnerability is specific to the WordPress plugin ecosystem. The CM Pop-Up Banners plugin is designed to create and manage pop-up banners on WordPress sites. The missing authorization flaw likely resides in an AJAX handler or REST API endpoint that fails to properly verify user permissions before executing privileged actions.
CVSS Breakdown & Threat Level
- CVSS Score: 4.3 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Attack Vector (AV): Network – exploitable remotely.
- Attack Complexity (AC): Low – no special conditions required.
- Privileges Required (PR): None – no authentication needed.
- User Interaction (UI): None – no user action required.
- Scope (S): Unchanged – exploitation does not affect other components.
- Confidentiality (C): Low – limited information disclosure.
- Integrity (I): None – no data modification.
- Availability (A): None – no denial of service.
Threat Level: Medium. While the CVSS score is moderate, the lack of a patch and the potential for chaining with other vulnerabilities could elevate the risk.
Deep Dive & Mechanics
The vulnerability stems from Missing Authorization (CWE-862) in the plugin's access control implementation. In WordPress plugins, AJAX actions and REST API endpoints often use wp_ajax_* and wp_ajax_nopriv_* hooks. A common mistake is failing to include a current_user_can() check within the callback function, allowing unauthenticated users to trigger privileged actions.
Likely Attack Vector:
- An attacker identifies an AJAX action registered by the plugin (e.g.,
cm_pop_up_banners_save_settings). - The attacker sends a crafted POST request to
/wp-admin/admin-ajax.phpwith the action parameter. - The plugin processes the request without verifying user capabilities, potentially exposing sensitive data or allowing configuration changes.
Impact:
- Unauthorized access to banner settings, user data, or site configuration.
- Potential for stored XSS if the plugin outputs unsanitized data.
- Information disclosure (e.g., database credentials, API keys).
Vulnerable vs. Patched Code
Since no patch is available, we can only hypothesize based on common patterns.
Vulnerable Code (Hypothetical):
add_action('wp_ajax_cm_pop_up_banners_save', 'cm_pop_up_banners_save_callback');
add_action('wp_ajax_nopriv_cm_pop_up_banners_save', 'cm_pop_up_banners_save_callback');
function cm_pop_up_banners_save_callback() {
// Missing capability check
$data = $_POST['data'];
update_option('cm_pop_up_banners_settings', $data);
wp_die();
}
Patched Code (Hypothetical):
add_action('wp_ajax_cm_pop_up_banners_save', 'cm_pop_up_banners_save_callback');
// Remove the nopriv hook to restrict to authenticated users
function cm_pop_up_banners_save_callback() {
// Add capability check
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
$data = $_POST['data'];
update_option('cm_pop_up_banners_settings', $data);
wp_die();
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with CM Pop-Up Banners <= 1.8.4 installed and activated.
- No authentication required.
Exploitation Steps:
- Reconnaissance: Identify the vulnerable endpoint by analyzing the plugin's source code or using a tool like WPScan.
wpscan --url http://target.com --enumerate vp - Craft Exploit: Send a POST request to
admin-ajax.phpwith the vulnerable action.curl -X POST http://target.com/wp-admin/admin-ajax.php \ -d "action=cm_pop_up_banners_save&data=malicious_payload" - Verify: Check if the settings were modified or sensitive data was returned.
Note: No public exploit code is available; this is a hypothetical demonstration.
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual POST requests to
/wp-admin/admin-ajax.phpwith action parameters related to CM Pop-Up Banners. - Look for requests from unauthenticated users to privileged AJAX actions.
Defense:
- Immediate: Disable the plugin until a patch is released.
- WAF Rule: Block requests to
admin-ajax.phpwith action parameters matchingcm_pop_up_banners_*from unauthenticated users. - Harden: Ensure all AJAX callbacks include proper capability checks.
Indicators of Compromise (IOCs)
- Network:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=cm_pop_up_banners_*parameters. - Unusual data in the
dataparameter (e.g., base64-encoded payloads).
- POST requests to
- File System:
- Modified
wp_optionstable entries forcm_pop_up_banners_settings. - Suspicious files in
/wp-content/uploads/if the plugin allows file uploads.
- Modified
- Logs:
- WordPress debug logs showing unauthorized access attempts.
- Web server access logs with 200 responses to
admin-ajax.phpfrom unknown IPs.
Detection Engineering
YARA Rule
rule CVE_2025_54018_CM_PopUp_Banners {
meta:
description = "Detects exploitation attempts for CVE-2025-54018 in CM Pop-Up Banners plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-54018"
strings:
$ajax_action = "cm_pop_up_banners_" ascii wide nocase
$admin_ajax = "admin-ajax.php" ascii wide nocase
condition:
$ajax_action and $admin_ajax
}
Sigma Rule
title: CVE-2025-54018 CM Pop-Up Banners Missing Authorization
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects unauthenticated POST requests to admin-ajax.php with CM Pop-Up Banners actions
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: POST
cs-uri-stem: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=cm_pop_up_banners_'
condition: selection
falsepositives:
- Legitimate admin actions (if authenticated)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-54018 CM Pop-Up Banners Missing Authorization Exploit";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=cm_pop_up_banners_"; http_client_body;
classtype:attempted-recon;
sid:1000001;
rev:1;
reference:cve,2025-54018;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patched version is released.
- Implement a Web Application Firewall (WAF) rule to block unauthenticated requests to
admin-ajax.phpwith CM Pop-Up Banners actions. - Monitor logs for exploitation attempts.
Long-term Fix:
- The vendor must release a patched version that adds proper capability checks to all AJAX and REST API endpoints.
- Apply the principle of least privilege: ensure only users with
manage_optionsor appropriate capabilities can access sensitive functions.
Workaround:
- If the plugin is critical, consider adding a custom function to
functions.phpthat checks capabilities before processing AJAX requests:add_action('wp_ajax_cm_pop_up_banners_save', function() { if (!current_user_can('manage_options')) { wp_die('Unauthorized', 403); } // Original callback logic }, 1);
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.