CVE-2025-1666
Executive Summary
CVE-2025-1666 is a Missing Authorization vulnerability in the WordPress plugin "Cookiebot CMP by Usercentrics" (cookiebot). The flaw resides in the send_uninstall_survey() function, which lacks a proper capability check. This allows any authenticated attacker with Subscriber-level access or higher to submit the uninstall survey on behalf of the website. While the impact is limited to unauthorized data modification (low integrity), it undermines the trust model of the plugin's administrative functions. The vulnerability affects all versions up to and including 4.4.1. No public exploit code or proof-of-concept is currently available, and the patch status remains unknown.
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
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
- Base Score: 4.3 (Medium)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Subscriber)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: Low
- Availability Impact: None
The threat level is considered Medium due to the low privileges required and the ability to perform unauthorized actions, though the direct impact is limited to survey submission.
Deep Dive & Mechanics
The vulnerability is a classic case of Missing Authorization (CWE-862). In WordPress plugin development, administrative actions (like sending an uninstall survey) should be protected by capability checks (e.g., current_user_can('manage_options')). The send_uninstall_survey() function in the Cookiebot CMP plugin fails to perform such a check, allowing any authenticated user, even with the lowest Subscriber role, to trigger the survey submission.
The function is typically hooked into an AJAX action or a direct admin POST request. Without the capability check, the server processes the request without verifying that the user has the necessary permissions to perform the action. This can lead to:
- Unauthorized submission of survey data.
- Potential data pollution or analytics manipulation.
- In rare cases, if the survey submission triggers other side effects (e.g., logging, external API calls), it could be used for reconnaissance or resource exhaustion.
Vulnerable vs. Patched Code
Vulnerable Code (<= 4.4.1):
public function send_uninstall_survey() {
// No capability check
$survey_data = $_POST['survey_data'];
// Process and send survey...
wp_die();
}
Patched Code (Hypothetical):
public function send_uninstall_survey() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( 'Unauthorized' );
}
$survey_data = $_POST['survey_data'];
// Process and send survey...
wp_die();
}
The patch adds a capability check using current_user_can('manage_options') to ensure only administrators can submit the survey.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A WordPress site running Cookiebot CMP <= 4.4.1.
- An authenticated user account with Subscriber role or higher.
Exploitation Steps:
- Log in as a Subscriber.
- Identify the AJAX action or endpoint for the uninstall survey. This is typically
wp_ajax_send_uninstall_surveyor similar. - Craft a POST request to the WordPress admin-ajax.php endpoint with the action parameter and any required survey data.
Example Request:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target-site.com
Content-Type: application/x-www-form-urlencoded
Cookie: wordpress_logged_in_...
action=send_uninstall_survey&survey_data[reason]=test&survey_data[details]=exploit
- The server will process the request and submit the survey, confirming the vulnerability.
Blue Team
Detection:
- Monitor for AJAX requests to
admin-ajax.phpwith the actionsend_uninstall_surveyfrom non-admin users. - Look for unusual patterns in survey submission logs (e.g., multiple submissions from the same low-privilege user).
- Use the Sigma rule provided in the Detection Engineering section.
Hunting:
- Query web server logs for POST requests to
/wp-admin/admin-ajax.phpcontainingaction=send_uninstall_survey. - Correlate with user role data to identify unauthorized submissions.
Indicators of Compromise (IOCs)
- Network:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=send_uninstall_surveyfrom non-admin IPs.
- POST requests to
- Logs:
- WordPress debug logs showing survey submission from unexpected user roles.
- File:
- No file-based IOCs as this is a logic flaw.
Detection Engineering
YARA Rule
rule CVE_2025_1666_WordPress_Cookiebot_Missing_Auth {
meta:
description = "Detects vulnerable Cookiebot CMP plugin code with missing capability check in send_uninstall_survey"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-1666"
strings:
$func = "send_uninstall_survey" ascii wide nocase
$no_check = "current_user_can" ascii wide nocase
condition:
$func and not $no_check
}
Sigma Rule
title: CVE-2025-1666 - Unauthorized Uninstall Survey Submission
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthorized submission of the uninstall survey via missing capability check in Cookiebot CMP plugin.
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=send_uninstall_survey'
condition: selection
falsepositives:
- Legitimate admin submissions (should be rare)
level: medium
tags:
- attack.initial_access
- cve.2025.1666
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-1666 - Unauthorized Uninstall Survey Submission"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=send_uninstall_survey"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Update the plugin to the latest version if a patch becomes available. Check the WordPress plugin repository or vendor site for updates.
- Disable the plugin if no patch is available and the risk is unacceptable.
- Implement a Web Application Firewall (WAF) rule to block POST requests to
admin-ajax.phpwithaction=send_uninstall_surveyfrom non-admin users.
Long-term Fix:
- The vendor must add a capability check (
current_user_can('manage_options')) to thesend_uninstall_survey()function. - Conduct a security audit of all AJAX handlers in the plugin to ensure proper authorization.
Workaround:
- Use a WordPress security plugin (e.g., Wordfence, Sucuri) to restrict access to AJAX actions based on user roles.
Valters IT
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.