CVE-2025-24633
Executive Summary
CVE-2025-24633 is a Missing Authorization vulnerability in the WordPress plugin Build Private Store For Woocommerce by silverplugins217, affecting all versions up to and including 1.0. This flaw allows an unauthenticated attacker to exploit incorrectly configured access control security levels, potentially exposing private store content or functionality intended only for authorized users. The vulnerability carries a CVSS score of 5.3 (Medium), with a low confidentiality impact and no impact on integrity or availability. As of this report, no official patch is available, and no public proof-of-concept (PoC) or exploit code has been released. The EPSS score is 0.0%, indicating a very low probability of active exploitation in the wild at this time.
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 through the official WordPress plugin repository and third-party marketplaces. Since no patch is available, users are advised to consider the plugin as a supply chain risk. Organizations should audit their WordPress installations for this plugin and evaluate whether its functionality can be replaced with a patched alternative. The lack of a patch increases the risk of future exploitation once details become more widely known.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Base Score: 5.3 (Medium)
- Attack Vector: Network (AV:N) – The vulnerability can be exploited remotely.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: None (PR:N) – No authentication is needed.
- User Interaction: None (UI:N) – No user action is required.
- Scope: Unchanged (S:U) – The impact is confined to the vulnerable component.
- Confidentiality Impact: Low (C:L) – Limited information disclosure is possible.
- Integrity Impact: None (I:N) – No data modification is possible.
- Availability Impact: None (A:N) – No denial of service is possible.
Threat Level: Medium. The vulnerability is easy to exploit but only leads to limited information disclosure. The absence of a patch and the lack of public exploits currently reduce the immediate risk, but this may change as the vulnerability becomes more widely known.
Deep Dive & Mechanics
The vulnerability resides in the Build Private Store For Woocommerce WordPress plugin, which is designed to restrict access to a WooCommerce store to authorized users only. The plugin likely implements access controls by checking user roles or capabilities before displaying store content. However, due to a missing authorization check in one or more AJAX handlers, REST API endpoints, or shortcode callbacks, an unauthenticated attacker can bypass these restrictions.
Root Cause: The plugin fails to call wp_verify_nonce() or current_user_can() on certain sensitive functions, allowing direct access to private store data without authentication. This is a classic CWE-862 (Missing Authorization) issue.
Attack Vector: An attacker sends crafted HTTP requests to the vulnerable endpoint(s) without any authentication token. The server processes the request and returns data that should be protected, such as product listings, pricing, or customer information.
Impact: An attacker can enumerate private products, view hidden prices, or access other sensitive store configuration data. This could lead to competitive intelligence gathering or targeted attacks against the store owner.
Vulnerable vs. Patched Code
Since no official patch is available, the following is a hypothetical example of the vulnerable code pattern and how it should be fixed.
Vulnerable Code (PHP):
// In a plugin file like build-private-store.php
add_action('wp_ajax_nopriv_get_private_products', 'get_private_products');
function get_private_products() {
// Missing authorization check
$products = wc_get_products(array('status' => 'private'));
wp_send_json($products);
}
Patched Code (PHP):
add_action('wp_ajax_nopriv_get_private_products', 'get_private_products');
function get_private_products() {
// Add authorization check
if (!current_user_can('read_private_products')) {
wp_die('Unauthorized', 403);
}
$products = wc_get_products(array('status' => 'private'));
wp_send_json($products);
}
The patched version adds a current_user_can() check to ensure only users with the appropriate capability can access the private products.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Install WordPress 6.x with WooCommerce and Build Private Store For Woocommerce <= 1.0.
- Configure the plugin to create a private store with some hidden products.
- Use a tool like Burp Suite or curl to interact with the plugin.
Exploitation Steps:
- Identify vulnerable endpoints by reviewing the plugin source code or using a fuzzer.
- Send a direct request to the AJAX endpoint without authentication:
curl -X POST http://target/wp-admin/admin-ajax.php?action=get_private_products - If the endpoint returns private product data, the vulnerability is confirmed.
- Automate the extraction of all private data using a script.
Note: No public exploit code is available. The above is a generic example based on the vulnerability description.
Blue Team (Defensive)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwith actions related to the plugin (e.g.,get_private_products,fetch_private_store_data). - Look for requests from unauthenticated users (no
wordpress_logged_incookie) to endpoints that should require authentication. - Use the Sigma and YARA rules provided in the Detection Engineering section.
Mitigation:
- Disable or remove the plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block requests to known vulnerable endpoints.
- Restrict access to
admin-ajax.phpusing IP whitelisting or.htaccessrules.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/wp-admin/admin-ajax.phpwith action parameters likeget_private_products,fetch_private_store_data, or similar. - Requests from IP addresses not associated with legitimate users.
- HTTP requests to
- File IOCs:
- Presence of the plugin directory:
/wp-content/plugins/build-private-store-for-woocommerce/ - Modified plugin files with unauthorized access patterns.
- Presence of the plugin directory:
- Log IOCs:
- WordPress debug log entries showing failed capability checks or unexpected AJAX calls.
- Web server access logs with 200 responses to
admin-ajax.phpfrom unauthenticated users.
Detection Engineering
YARA Rule
rule Detect_Build_Private_Store_Vuln {
meta:
description = "Detects vulnerable Build Private Store For Woocommerce plugin files"
author = "Valters IT"
date = "2025-04-01"
cve = "CVE-2025-24633"
strings:
$vuln_func = "wp_ajax_nopriv_" ascii wide nocase
$missing_auth = "current_user_can" ascii wide nocase
condition:
$vuln_func and not $missing_auth
}
Sigma Rule
title: Detect Exploitation of CVE-2025-24633
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated AJAX requests to vulnerable Build Private Store For Woocommerce endpoints
author: Valters IT
date: 2025-04-01
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains|all:
- 'action=get_private_products'
- 'action=fetch_private_store_data'
condition: selection
falsepositives:
- Legitimate admin requests (rare)
level: high
Suricata Rule
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"CVE-2025-24633 Build Private Store For Woocommerce Exploit Attempt"; flow:to_server,established; content:"POST"; http_method; content:"admin-ajax.php"; http_uri; content:"action=get_private_products"; http_client_body; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin – Deactivate and delete the Build Private Store For Woocommerce plugin from all WordPress installations until a patch is released.
- Monitor logs – Review web server and WordPress logs for any signs of exploitation.
- Implement WAF rules – Block requests to
admin-ajax.phpwith suspicious action parameters.
Long-term Fix:
- The vendor must release a patched version that includes proper authorization checks using
current_user_can()orwp_verify_nonce(). - Users should subscribe to the plugin's update notifications and apply the patch as soon as it becomes available.
Workarounds:
- Use a different private store plugin that is actively maintained and patched.
- Implement custom code to add authorization checks to the vulnerable endpoints (if you have developer resources).
Valters IT – Securing your digital frontier.
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.