CVE-2025-66089
Executive Summary
CVE-2025-66089 is a Missing Authorization vulnerability in the WordPress plugin Product Feed for WooCommerce by WebToffee. This flaw allows an unauthenticated attacker to exploit incorrectly configured access control security levels, potentially leading to unauthorized data exposure or manipulation of product feed configurations. The vulnerability affects all versions up to and including 2.3.1. As of this report, no official patch has been released, and no public proof-of-concept (PoC) code is available. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the risk remains for unpatched installations.
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 distributed via the official WordPress plugin repository. Users who installed the plugin directly from the WordPress dashboard or via manual upload are affected. No supply chain compromise has been identified, but the lack of a patch increases the risk of malicious actors leveraging this flaw in targeted attacks.
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)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: None (C:N)
- Integrity Impact: Low (I:L)
- Availability Impact: None (A:N)
Threat Level: Medium. The vulnerability allows low-impact integrity compromise without authentication, but no public exploit exists yet.
Deep Dive & Mechanics
The Product Feed for WooCommerce plugin provides functionality to generate and manage product feeds for various e-commerce platforms. The missing authorization vulnerability exists in the plugin's REST API endpoints or AJAX handlers that manage feed configurations. Due to improper access control checks, unauthenticated requests can trigger actions that should require administrative privileges.
Root Cause: The plugin fails to validate user capabilities (e.g., manage_options or edit_posts) before executing sensitive operations such as:
- Modifying feed settings
- Deleting or creating new feeds
- Accessing feed data that may contain product information
Attack Vector: An attacker sends crafted HTTP requests to the vulnerable endpoint(s) without authentication. The server processes the request due to missing capability checks, leading to unauthorized actions.
Impact: An attacker could:
- Modify product feed URLs to point to malicious sites (phishing)
- Delete existing feeds, disrupting e-commerce operations
- Access feed data that may include product details (though no direct data exposure is confirmed)
Vulnerable vs. Patched Code
Since no patch is available, a hypothetical fix would involve adding capability checks to all sensitive functions. Below is an example of vulnerable vs. patched code for a typical WordPress AJAX handler.
Vulnerable Code (<= 2.3.1):
add_action('wp_ajax_wt_pf_save_feed', 'wt_pf_save_feed');
add_action('wp_ajax_nopriv_wt_pf_save_feed', 'wt_pf_save_feed'); // Missing capability check
function wt_pf_save_feed() {
// Process feed saving without checking user capabilities
$feed_data = $_POST['feed_data'];
update_option('wt_pf_feed_config', $feed_data);
wp_die('Feed saved');
}
Patched Code (Hypothetical):
add_action('wp_ajax_wt_pf_save_feed', 'wt_pf_save_feed');
// Remove the nopriv action to require authentication
function wt_pf_save_feed() {
// Check if user has manage_options capability
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
$feed_data = $_POST['feed_data'];
update_option('wt_pf_feed_config', $feed_data);
wp_die('Feed saved');
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target WordPress site with Product Feed for WooCommerce <= 2.3.1
- Network access to the site
Exploitation Steps:
- Identify vulnerable endpoints by scanning for AJAX actions or REST routes related to the plugin (e.g.,
/wp-admin/admin-ajax.php?action=wt_pf_save_feed). - Send a crafted POST request without authentication:
curl -X POST http://target.com/wp-admin/admin-ajax.php \ -d "action=wt_pf_save_feed&feed_data=malicious_data" - Verify unauthorized modification by checking if the feed configuration changed.
Note: No public exploit code exists; this is a theoretical approach.
Blue Team (Detection & Defense)
Detection:
- Monitor for unauthenticated POST requests to
/wp-admin/admin-ajax.phpwith action parameters containingwt_pf_orwebtoffee_product_feed. - Alert on any modification to the
wt_pf_feed_configoption in the database without a corresponding admin session.
Defense:
- Immediately disable the plugin if no patch is available.
- Implement a Web Application Firewall (WAF) rule to block unauthenticated requests to plugin-specific AJAX actions.
- Use a WordPress security plugin to enforce capability checks.
Indicators of Compromise (IOCs)
- Network:
- Unauthenticated POST requests to
/wp-admin/admin-ajax.phpwithaction=wt_pf_*parameters. - Anomalous changes to product feed URLs in the database.
- Unauthenticated POST requests to
- File System:
- Modified plugin files (e.g.,
wp-content/plugins/webtoffee-product-feed/).
- Modified plugin files (e.g.,
- Database:
- Unexpected values in the
wp_optionstable forwt_pf_feed_configor similar options.
- Unexpected values in the
Detection Engineering
YARA Rule
rule Detect_CVE_2025_66089_Exploit {
meta:
description = "Detects exploitation attempts for CVE-2025-66089 in WordPress logs"
author = "Valters IT"
date = "2025-04-10"
strings:
$ajax_action = "action=wt_pf_" nocase
$feed_data = "feed_data=" nocase
condition:
all of them
}
Sigma Rule
title: Unauthenticated AJAX Request to Product Feed for WooCommerce
id: 8a3f7c2e-5d1b-4a9f-8c6e-2f3a7b1d4e5c
status: experimental
description: Detects unauthenticated POST requests to WordPress AJAX handler with Product Feed for WooCommerce actions.
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=wt_pf_'
condition: selection
falsepositives:
- Legitimate admin actions (if logged in)
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-66089 - Unauthenticated AJAX Request to Product Feed for WooCommerce"; flow:to_server; http.method; content:"POST"; http.uri; content:"/wp-admin/admin-ajax.php"; http.client_body; content:"action=wt_pf_"; nocase; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a WAF rule to block unauthenticated requests to
/wp-admin/admin-ajax.phpwithaction=wt_pf_*. - Review server logs for any signs of exploitation.
Long-term Fix:
- Monitor the WebToffee plugin page for an official patch.
- Apply the patch immediately upon release.
- Consider replacing the plugin with an alternative that has proper access controls.
Valters IT Signature: This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters-it.com.
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.