CVE-2024-3602
Executive Summary
CVE-2024-3602 is a Missing Authorization vulnerability in the Promolayer WordPress plugin (versions up to and including 1.1.0). This plugin provides popups, banners, bars, and cart savers for e-commerce sites. The flaw resides in the disconnect_promolayer function, which lacks a proper capability check. This allows any authenticated attacker, even with minimal Subscriber privileges, to remotely disconnect the Promolayer service from the WordPress site. While the CVSS score is 4.3 (Medium), the impact is significant for businesses relying on Promolayer for marketing automation and lead generation, as an attacker can silently disable these critical functions without any administrative oversight.
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. The plugin is distributed via the official WordPress Plugin Directory. Since the patch status is UNKNOWN, users are advised to treat the plugin as a supply chain risk and consider disabling or removing it until an official update is released.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) - The attack is performed remotely over the network.
- Attack Complexity (AC): Low (L) - No special conditions or race conditions are required.
- Privileges Required (PR): Low (L) - The attacker only needs a valid user account with Subscriber-level access.
- User Interaction (UI): None (N) - The attacker does not need to trick another user.
- Scope (S): Unchanged (U) - The vulnerable component and the impacted component are the same.
- Confidentiality (C): None (N) - No data is exposed.
- Integrity (I): Low (L) - The attacker can modify the plugin's connection state.
- Availability (A): None (N) - The plugin remains functional, but the connection to the external service is severed.
Threat Level: Medium. The low privileges required and the lack of user interaction make this a viable attack for malicious insiders or attackers who have compromised a low-privilege account.
Deep Dive & Mechanics
The vulnerability is a classic case of Missing Authorization (CWE-862). The disconnect_promolayer function is registered as an AJAX action, making it accessible to authenticated users. The code likely resembles the following vulnerable pattern:
add_action('wp_ajax_disconnect_promolayer', 'disconnect_promolayer_callback');
function disconnect_promolayer_callback() {
// Missing capability check!
update_option('promolayer_connected', false);
wp_die();
}
The function directly modifies the plugin's connection status without verifying that the current user has the necessary permissions (e.g., manage_options). This allows any authenticated user, including Subscribers, to trigger the disconnection.
Vulnerable vs. Patched Code
Vulnerable Code (<= 1.1.0):
add_action('wp_ajax_disconnect_promolayer', 'disconnect_promolayer_callback');
function disconnect_promolayer_callback() {
// Missing capability check
update_option('promolayer_connected', false);
echo 'Disconnected';
wp_die();
}
Patched Code (Hypothetical):
add_action('wp_ajax_disconnect_promolayer', 'disconnect_promolayer_callback');
function disconnect_promolayer_callback() {
// Added capability check
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
update_option('promolayer_connected', false);
echo 'Disconnected';
wp_die();
}
The patched version adds a call to current_user_can('manage_options') to ensure only administrators can disconnect the service.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with the Promolayer plugin (<= 1.1.0) installed and activated.
- A valid user account with at least Subscriber privileges.
- The WordPress AJAX nonce (if required) can be obtained from the page source or by inspecting network requests.
Exploit Steps:
- Log in to the WordPress site as a Subscriber.
- Obtain the AJAX nonce for the
disconnect_promolayeraction. This can often be found in the JavaScript source of the admin pages or by inspecting the network traffic when the plugin's UI is loaded. - Send a POST request to the WordPress AJAX endpoint:
curl -X POST \
'https://target-site.com/wp-admin/admin-ajax.php' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'action=disconnect_promolayer&_ajax_nonce=YOUR_NONCE_HERE'
- If successful, the plugin will be disconnected, and the site will no longer be able to use Promolayer services.
Lab Setup:
- Use a local WordPress installation (e.g., via Docker or XAMPP).
- Install the Promolayer plugin version 1.1.0.
- Create a Subscriber user account.
- Use Burp Suite or a simple Python script to automate the exploit.
Blue Team (Detection & Prevention)
Detection:
- Monitor AJAX requests to
admin-ajax.phpwith theaction=disconnect_promolayerparameter from non-admin users. - Alert on any successful disconnection events that are not initiated by an administrator.
Prevention:
- Immediate: Disable or remove the Promolayer plugin until a patch is released.
- Long-term: Implement a Web Application Firewall (WAF) rule to block AJAX requests to
disconnect_promolayerfrom users without themanage_optionscapability. - Code Fix: Add a capability check as shown in the patched code example.
Indicators of Compromise (IOCs)
- Network:
- POST request to
/wp-admin/admin-ajax.phpwith body containingaction=disconnect_promolayer. - User-Agent strings from automated tools (e.g.,
curl,python-requests).
- POST request to
- System:
- The WordPress option
promolayer_connectedset tofalseunexpectedly. - Log entries showing AJAX requests from Subscriber-level users to the
disconnect_promolayeraction.
- The WordPress option
- File:
- No specific file changes, as the exploit is purely API-based.
Detection Engineering
YARA Rule
rule CVE_2024_3602_Promolayer_Disconnect {
meta:
description = "Detects exploitation attempts for CVE-2024-3602 in Promolayer plugin"
author = "Valters IT"
date = "2024-05-20"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-3602"
strings:
$ajax_action = "action=disconnect_promolayer"
$wp_ajax = "admin-ajax.php"
condition:
$ajax_action and $wp_ajax
}
Sigma Rule
title: CVE-2024-3602 Promolayer Disconnect Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthorized attempts to disconnect the Promolayer plugin via AJAX.
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains: 'action=disconnect_promolayer'
condition: selection
falsepositives:
- Legitimate admin actions (should be rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-3602 Promolayer Disconnect Exploit"; flow:to_server,established; content:"POST"; http_method; content:"admin-ajax.php"; http_uri; content:"action=disconnect_promolayer"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Since no official patch is available, the most effective mitigation is to disable or uninstall the Promolayer plugin until a security update is released.
- Virtual Patching: If the plugin cannot be removed, implement a WAF rule to block AJAX requests to
disconnect_promolayerfrom non-administrator users. - User Auditing: Review all user accounts with Subscriber or higher privileges. Remove any suspicious or unnecessary accounts.
- Monitoring: Enable detailed logging for AJAX requests and monitor for the specific IOCs mentioned above.
- Vendor Contact: Reach out to the Promolayer vendor to request a timeline for a security patch.
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.