CVE-2025-26764
Executive Summary
CVE-2025-26764 is a Missing Authorization vulnerability in the Distance Based Shipping Calculator WordPress plugin by enituretechnology. This flaw allows unauthenticated attackers to exploit incorrectly configured access control security levels, potentially leading to unauthorized data access or manipulation of shipping calculations. The vulnerability affects all versions up to and including 2.0.22. With a CVSS score of 6.5 (Medium), it poses a significant risk to e-commerce sites relying on this plugin for shipping logic. No public proof-of-concept or patch is currently available, making proactive detection and mitigation critical.
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. Organizations using this plugin should verify its integrity by checking checksums against the repository and monitoring for unauthorized modifications. Since the plugin handles shipping cost calculations, exploitation could lead to financial fraud or data exfiltration.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – Impact confined to the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Limited data modification.
- Availability (A): None (N) – No denial-of-service impact.
Threat Level: Medium. The low complexity and lack of authentication make this an attractive target for automated scanning and exploitation.
Deep Dive & Mechanics
The vulnerability stems from missing authorization checks in AJAX handlers or REST API endpoints within the Distance Based Shipping Calculator plugin. WordPress plugins often expose admin-ajax.php or REST routes for frontend functionality. When these endpoints fail to verify user capabilities (e.g., manage_options or edit_posts), unauthenticated attackers can invoke them.
Attack Flow:
- Attacker identifies the vulnerable endpoint (e.g.,
/wp-admin/admin-ajax.php?action=dbsc_update_settings). - Sends a crafted POST request with malicious parameters.
- The plugin processes the request without checking if the user is an administrator.
- Attacker modifies shipping rates, accesses customer data, or disables the plugin.
Root Cause: The plugin uses wp_ajax_ hooks but omits wp_ajax_nopriv_ checks or fails to call current_user_can() before processing sensitive actions.
Vulnerable vs. Patched Code
Vulnerable Code (<= 2.0.22):
add_action('wp_ajax_dbsc_update_settings', 'dbsc_update_settings_callback');
function dbsc_update_settings_callback() {
// Missing capability check
update_option('dbsc_shipping_rates', $_POST['rates']);
wp_die();
}
Patched Code (Hypothetical):
add_action('wp_ajax_dbsc_update_settings', 'dbsc_update_settings_callback');
function dbsc_update_settings_callback() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
check_admin_referer('dbsc_update_settings_nonce');
update_option('dbsc_shipping_rates', sanitize_text_field($_POST['rates']));
wp_die();
}
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Install WordPress 6.x with Distance Based Shipping Calculator <= 2.0.22.
- Identify AJAX actions via plugin source code or by monitoring network traffic.
Exploitation Steps:
- Enumerate AJAX actions:
curl -s http://target/wp-admin/admin-ajax.php?action=dbsc_get_settings - Exploit missing authorization to modify settings:
curl -X POST http://target/wp-admin/admin-ajax.php \ -d "action=dbsc_update_settings&rates={\"free\":\"0\"}" - Verify changes by checking shipping rates on the frontend.
Blue Team (Defensive)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwith unknown actions. - Alert on
POSTrequests to/wp-admin/admin-ajax.phpfrom unauthenticated users. - Check for rapid changes to
wp_optionstable entries related todbsc_.
Hunting:
- Search logs for
action=dbsc_parameters. - Review WordPress user capability logs for unauthorized
manage_optionsattempts.
Indicators of Compromise (IOCs)
- Network:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=dbsc_*parameters. - Unusual
User-Agentstrings in AJAX requests.
- POST requests to
- File System:
- Modified
wp_optionsentries:dbsc_shipping_rates,dbsc_api_key. - Unexpected files in
/wp-content/plugins/distance-based-shipping-calculator/.
- Modified
- Logs:
- WordPress debug log entries:
PHP Notice: Undefined index: rates in .... - Web server logs with 200 responses to
admin-ajax.phpfrom non-admin IPs.
- WordPress debug log entries:
Detection Engineering
YARA Rule
rule CVE_2025_26764_WordPress_Plugin {
meta:
description = "Detects vulnerable Distance Based Shipping Calculator plugin files"
author = "Valters IT"
date = "2025-04-01"
hash = "sha256:target_file_hash"
strings:
$vuln_func = "add_action('wp_ajax_dbsc_" ascii wide nocase
$missing_check = "current_user_can" ascii wide nocase
condition:
$vuln_func and not $missing_check
}
Sigma Rule
title: CVE-2025-26764 - Missing Authorization in Distance Based Shipping Calculator
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects exploitation attempts against missing authorization in the plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains|all:
- 'action=dbsc_'
- 'rates='
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: high
Suricata Rule
alert http $EXTERNAL_NET any -> $HOME_NET any (
msg:"CVE-2025-26764 - Missing Authorization in Distance Based Shipping Calculator";
flow:to_server,established;
content:"POST"; http_method;
content:"admin-ajax.php"; http_uri;
content:"action=dbsc_"; http_client_body;
content:"rates="; http_client_body;
classtype:attempted-admin;
sid:10000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if not critical for business operations.
- Apply virtual patching via WAF rules blocking
action=dbsc_*requests from unauthenticated users. - Monitor logs for exploitation attempts.
Long-Term Fix:
- Update to a patched version once released by the vendor.
- Implement a Web Application Firewall (WAF) rule to block unauthorized AJAX requests.
- Conduct a security audit of all WordPress plugins for similar authorization flaws.
Workaround:
- Add the following code to the theme's
functions.phpto block unauthenticated AJAX calls:add_action('init', function() { if (defined('DOING_AJAX') && DOING_AJAX && !is_user_logged_in()) { $allowed_actions = ['dbsc_public_action']; $action = $_REQUEST['action'] ?? ''; if (strpos($action, 'dbsc_') === 0 && !in_array($action, $allowed_actions)) { wp_die('Unauthorized', 403); } } });
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
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.