CVE-2025-66139
Executive Summary
CVE-2025-66139 is a Missing Authorization vulnerability in the Merkulove Audier For Elementor WordPress plugin (versions <= 1.0.9). This flaw allows unauthenticated attackers to exploit incorrectly configured access control security levels, potentially leading to unauthorized data access or modification. The vulnerability is classified under CWE-862 (Missing Authorization) and carries a CVSS score of 5.4 (Medium). As a WordPress plugin vulnerability, it directly impacts the WordPress ecosystem and does not involve Apache or Nginx misconfigurations.
The EPSS score is 0.0%, indicating low exploitation likelihood currently, but the lack of a patch makes it a ticking time bomb for unmaintained sites. No public proof-of-concept (PoC) or exploit code is available, but the risk remains for sites using this plugin.
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 a WordPress plugin distributed via the official WordPress plugin repository and third-party marketplaces. Since no patch exists, users must consider removing the plugin entirely. The supply chain risk is elevated because the vendor (Merkulove) has not responded, leaving all installations vulnerable indefinitely.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
- Base Score: 5.4 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: None (A:N)
Threat Level: Medium. The vulnerability is easy to exploit remotely without authentication, but the impact is limited to low confidentiality and integrity loss. However, in a WordPress context, this could lead to unauthorized content manipulation or data leakage.
Deep Dive & Mechanics
The vulnerability resides in the Audier For Elementor plugin's AJAX handlers or REST API endpoints. The plugin fails to properly verify user capabilities before executing sensitive actions, such as saving settings, modifying posts, or accessing private data. Specifically, the audier-elementor component exposes functions that should require administrative privileges but are accessible to any unauthenticated user.
Root Cause: The plugin uses wp_ajax_* hooks without corresponding wp_ajax_nopriv_* checks or capability verification. Alternatively, it may rely on nonces that are not validated against user roles.
Attack Vector: An attacker sends crafted HTTP requests to the vulnerable endpoints, bypassing authorization checks. For example:
POST /wp-admin/admin-ajax.php
action=audier_save_settings&data=malicious_payload
Impact: Unauthorized modification of plugin settings, injection of malicious content into Elementor templates, or exposure of sensitive configuration data.
Vulnerable vs. Patched Code
Since no patch exists, we can only infer the vulnerable pattern. The plugin likely contains code similar to:
Vulnerable Code (audier-elementor.php):
add_action('wp_ajax_audier_save_settings', 'audier_save_settings_callback');
function audier_save_settings_callback() {
// No capability check
update_option('audier_settings', $_POST['data']);
wp_die();
}
Patched Code (Hypothetical):
add_action('wp_ajax_audier_save_settings', 'audier_save_settings_callback');
function audier_save_settings_callback() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
check_ajax_referer('audier_nonce', 'nonce');
update_option('audier_settings', sanitize_text_field($_POST['data']));
wp_die();
}
The patched version adds capability checks (current_user_can) and nonce verification.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target WordPress site with Audier For Elementor <= 1.0.9 installed and activated.
- No authentication required.
Exploitation Steps:
- Identify vulnerable endpoints by scanning for AJAX actions containing "audier".
- Send a crafted POST request to
wp-admin/admin-ajax.phpwith the action parameter set to a vulnerable function (e.g.,audier_save_settings). - Include malicious data to modify plugin settings or extract information.
Example cURL Command:
curl -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=audier_save_settings&data={\"evil\":\"true\"}"
Expected Outcome: Unauthorized modification of plugin options or data exposure.
Blue Team (Detection & Hardening)
Detection:
- Monitor for unusual POST requests to
admin-ajax.phpwith action parameters containing "audier". - Look for requests from unauthenticated users to AJAX endpoints that should require admin privileges.
Hardening:
- Immediately deactivate and remove the Audier For Elementor plugin.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwith action parameters matchingaudier_*from unauthenticated users. - Use a WordPress security plugin to enforce capability checks on all AJAX actions.
WAF Rule Example (ModSecurity):
SecRule REQUEST_FILENAME "/wp-admin/admin-ajax\.php" \
"chain,id:1001,deny,msg:'Audier For Elementor Exploit Attempt'"
SecRule ARGS:action "^audier_" \
"chain"
SecRule &ARGS:nonce "0"
Indicators of Compromise (IOCs)
- File Paths:
/wp-content/plugins/audier-elementor/ - AJAX Actions:
audier_save_settings,audier_get_data,audier_update_template - HTTP Requests: POST to
/wp-admin/admin-ajax.phpwithaction=audier_*from unauthenticated IPs. - Log Entries: WordPress debug logs showing
audier_*actions without nonce or capability checks. - Database Changes: Modified
wp_optionstable entries withaudier_settingskey.
Detection Engineering
YARA Rule
rule Detect_Audier_Elementor_Vuln {
meta:
description = "Detects vulnerable Audier For Elementor plugin files"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-66139"
strings:
$ajax_hook = /add_action\s*\(\s*['\"]wp_ajax_audier_/
$no_cap = /current_user_can/
condition:
$ajax_hook and not $no_cap
}
Sigma Rule
title: Audier For Elementor Missing Authorization Exploit
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated AJAX requests to audier_* actions
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains: 'action=audier_'
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-66139 Audier For Elementor Missing Authorization Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"admin-ajax.php"; http_uri;
content:"action=audier_"; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Deactivate and delete the Audier For Elementor plugin from all WordPress installations.
- Scan for unauthorized changes to plugin settings or Elementor templates.
- Review WordPress user roles and capabilities to ensure no backdoor accounts were created.
Long-Term Mitigation:
- Replace the plugin with an alternative that is actively maintained.
- Implement a WordPress security policy requiring all plugins to have recent updates and active support.
- Use a Web Application Firewall (WAF) with virtual patching for known vulnerabilities.
Vendor Contact: Merkulove has not responded. If you have a support contract, escalate through official channels. Otherwise, consider this plugin abandoned.
Valters IT Signature: This report is provided for educational and defensive purposes. Unauthorized exploitation is illegal. Always obtain proper authorization before testing.
Report generated by Valters IT DevSecOps Intelligence
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.