CVE-2025-32234
Executive Summary
CVE-2025-32234 is a Missing Authorization vulnerability in the AdMail – Multilingual Back in-Stock Notifier for WooCommerce WordPress plugin, developed by aleswebs. This flaw allows an unauthenticated attacker to exploit incorrectly configured access control security levels, potentially leading to unauthorized actions within the plugin's functionality. The vulnerability affects all versions up to and including 1.7.0. As of this report, no official patch has been released, and no public proof-of-concept (PoC) or exploit code is available. The CVSS score is 4.3 (Medium), indicating a moderate risk primarily due to low attack complexity and no required privileges, but with limited impact on confidentiality and integrity.
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 resides in a WordPress plugin ecosystem. The plugin is distributed via the official WordPress Plugin Directory and third-party marketplaces. Users are advised to monitor for updates from the vendor and consider disabling the plugin until a patch is available. No known supply chain compromise has been reported.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
- Base Score: 4.3 (Medium)
- Attack Vector: Network (AV:N) – The vulnerability can be exploited remotely.
- Attack Complexity: Low (AC:L) – No special conditions or complex attack sequences are required.
- Privileges Required: None (PR:N) – No authentication is needed.
- User Interaction: None (UI:N) – The attacker does not need to trick a user.
- Scope: Unchanged (S:U) – The vulnerable component and the impacted component are the same.
- Confidentiality Impact: None (C:N) – No data exposure.
- Integrity Impact: Low (I:L) – Limited modification of data or system state.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: Medium. The low complexity and lack of required privileges make it attractive for automated scanning, but the limited impact reduces the overall severity.
Deep Dive & Mechanics
The vulnerability stems from a Missing Authorization check (CWE-862) in the AdMail plugin's REST API endpoints or AJAX handlers. The plugin likely exposes functions for managing back-in-stock notifications (e.g., subscribing, unsubscribing, or querying stock status) without verifying that the requesting user has the appropriate capabilities (e.g., manage_options or edit_posts). This allows any unauthenticated visitor to invoke these functions.
Root Cause: The plugin fails to call current_user_can() or wp_verify_nonce() on critical actions, or it uses incorrect capability checks. For example, a function like admail_subscribe() might be registered via wp_ajax_nopriv_* (allowing unauthenticated access) without proper authorization.
Attack Vector: An attacker can send crafted HTTP requests to the WordPress site, targeting the vulnerable endpoints. This could lead to:
- Unauthorized subscription to stock notifications (spam).
- Unauthorized unsubscription of legitimate users.
- Potential information disclosure if the endpoint returns sensitive data (e.g., email addresses of subscribers).
Impact: While the CVSS score is 4.3, the real-world impact depends on the specific missing authorization. If the plugin exposes administrative functions (e.g., clearing logs, modifying settings), the impact could be higher.
Vulnerable vs. Patched Code
Since no patch is available, we can only hypothesize the vulnerable code pattern. A typical vulnerable snippet might look like:
// Vulnerable code (admail.php or similar)
add_action('wp_ajax_nopriv_admail_subscribe', 'admail_handle_subscribe');
function admail_handle_subscribe() {
// Missing authorization check
$email = sanitize_email($_POST['email']);
$product_id = intval($_POST['product_id']);
// ... process subscription
wp_send_json_success();
}
A patched version would include:
// Patched code
add_action('wp_ajax_nopriv_admail_subscribe', 'admail_handle_subscribe');
function admail_handle_subscribe() {
// Verify nonce and user capabilities
if (!wp_verify_nonce($_POST['_wpnonce'], 'admail_subscribe_nonce')) {
wp_die('Security check failed.');
}
// Additional check for logged-in users if needed
if (!current_user_can('read')) {
wp_die('Insufficient permissions.');
}
$email = sanitize_email($_POST['email']);
$product_id = intval($_POST['product_id']);
// ... process subscription
wp_send_json_success();
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with AdMail plugin version <= 1.7.0 installed and activated.
- Network access to the target.
Exploitation Steps:
- Identify Vulnerable Endpoints: Use a web proxy (e.g., Burp Suite) or browser developer tools to inspect AJAX requests made by the plugin. Look for actions like
admail_subscribe,admail_unsubscribe, oradmail_get_status. - Craft Exploit Request: Send a POST request to
/wp-admin/admin-ajax.phpwith the action parameter set to the vulnerable function. Example usingcurl:
curl -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=admail_subscribe&email=attacker@example.com&product_id=123"
- Verify Exploitation: Check if the subscription is created without authentication. If the endpoint returns a success response, the vulnerability is confirmed.
Note: No public exploit code is available. The above is a generic example based on common WordPress plugin vulnerabilities.
Blue Team (Detection & Hardening)
Detection:
- Monitor for unusual AJAX requests to
/wp-admin/admin-ajax.phpwith actions related to AdMail (e.g.,admail_*). - Look for requests from unauthenticated users that trigger administrative functions.
- Use the Sigma rule provided in the Detection Engineering section.
Hardening:
- Immediate: Disable the AdMail plugin until a patch is released.
- Workaround: Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithactionparameters starting withadmail_from unauthenticated users. - Long-term: Apply the principle of least privilege to all plugin endpoints. Ensure all AJAX handlers check for proper nonces and user capabilities.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=admail_*parameters from unauthenticated IPs. - Unusual patterns in server logs showing repeated calls to the same AJAX action without a valid nonce.
- POST requests to
- File IOCs:
- Modified plugin files (e.g.,
admail.php) if an attacker uploads a malicious version. - Unexpected entries in the WordPress
wp_optionstable related to AdMail settings.
- Modified plugin files (e.g.,
- Behavioral IOCs:
- Sudden increase in stock notification subscriptions from unknown email addresses.
- Unauthorized changes to plugin settings (if the vulnerability allows it).
Detection Engineering
YARA Rule
rule Detect_AdMail_Missing_Auth_CVE_2025_32234 {
meta:
description = "Detects exploitation attempts of CVE-2025-32234 in AdMail plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-32234"
strings:
$ajax_action = /action=admail_[a-z_]+/
$wp_ajax = "admin-ajax.php"
$no_nonce = /_wpnonce=[a-f0-9]{10}/ nocase
condition:
$wp_ajax and $ajax_action and not $no_nonce
}
Sigma Rule
title: CVE-2025-32234 - AdMail Missing Authorization Exploitation
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects unauthenticated AJAX requests targeting AdMail plugin actions
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-32234
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains|all:
- 'action=admail_'
- '!wpnonce'
condition: selection
falsepositives:
- Legitimate plugin functionality if nonce is missing but user is authenticated (rare)
level: medium
tags:
- attack.initial_access
- attack.t1190
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-32234 - AdMail Missing Authorization Exploitation"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=admail_"; http_client_body; pcre:"/action=admail_[a-z_]+/Ri"; reference:cve,2025-32234; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Plugin: Deactivate and uninstall AdMail until a security update is released.
- Apply Virtual Patching: Use a WAF to block requests to
admin-ajax.phpwithactionparameters starting withadmail_from unauthenticated users. - Monitor Logs: Review web server and WordPress logs for signs of exploitation.
Long-term Fix:
- The vendor must release a patched version that implements proper authorization checks (nonce verification and capability checks) on all AJAX and REST endpoints.
- Users should update to the latest version once available.
Workaround Code (if patching is delayed):
Add the following to the theme's functions.php to block unauthenticated AdMail AJAX requests:
add_action('init', function() {
if (defined('DOING_AJAX') && DOING_AJAX && !is_user_logged_in()) {
$action = $_REQUEST['action'] ?? '';
if (strpos($action, 'admail_') === 0) {
wp_die('Unauthorized.');
}
}
});
Valters IT – Securing WordPress ecosystems one CVE at a time.
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.