CVE-2026-14500: Arbitrary File Read in Bulk Order Update for WooCommerce Plugin
The Bulk Order Update for WooCommerce plugin contains a flaw that allows unauthenticated attackers to read the first line of files stored on affected WordPress servers. The vulnerability exists because an administrative function that processes CSV file uploads accepts user-supplied file paths without proper validation, and doesn't require authentication or verification of the user's identity. This creates two distinct risks: attackers can extract sensitive information (like system configuration files), and they can probe which files exist on the server without triggering alarms.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Weaknesses (CWE)
- CWE-22
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-07-08 / 2026-07-08
NVD description (verbatim)
The Bulk Order Update for WooCommerce plugin for WordPress is vulnerable to Arbitrary File Read in versions up to, and including, 1.6. This is due to the bouw_fetch_csv_data() AJAX handler being registered on the wp_ajax_nopriv_ hook with no capability or nonce check, and passing the attacker-supplied csv_url POST parameter — filtered only by esc_url_raw() (which leaves absolute filesystem paths intact) and validate_file() (which only rejects '..' traversal patterns) — directly into fopen()/fgetcsv() and reflecting the first parsed line in the JSON response. This makes it possible for unauthenticated attackers to read the first line of arbitrary files on the server (such as /etc/passwd) and to use the handler as a file-existence oracle.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-14500 is a path traversal and arbitrary file read vulnerability in the Bulk Order Update for WooCommerce plugin (versions ≤1.6). The bouw_fetch_csv_data() AJAX handler is registered on the wp_ajax_nopriv_ hook, making it accessible to unauthenticated users. The handler accepts a csv_url POST parameter and passes it to fopen()/fgetcsv() after applying only esc_url_raw() and validate_file(). While esc_url_raw() converts characters, it preserves absolute filesystem paths like /etc/passwd; validate_file() only blocks '..' double-dot traversal, not absolute paths. The function reads and reflects the first parsed CSV line in a JSON response, enabling both file content disclosure and file-existence enumeration. The lack of nonce verification compounds the risk by allowing cross-site request forgery vectors.
Business impact
Attackers can extract sensitive configuration data—database credentials, API keys, salts, and security parameters stored in accessible PHP files—enabling account takeover, data exfiltration, or lateral movement into backend systems. The file-existence oracle aspect allows reconnaissance without immediate detection, enabling targeted follow-up attacks. For e-commerce operations, the integrity of CSV-based bulk orders could be undermined if attackers exfiltrate templates or modify processing logic. Reputational harm and regulatory exposure (PCI-DSS, GDPR) are possible if customer data or transaction records are exposed.
Affected systems
WordPress installations using the Bulk Order Update for WooCommerce plugin in version 1.6 and earlier are affected. The vulnerability is unauthenticated and requires no special configuration—any internet-facing WordPress site running a vulnerable version is exploitable. The attack surface includes all AJAX endpoints registered on wp_ajax_nopriv_, meaning the vulnerability is active as long as the plugin is installed, regardless of user role or site settings.
Exploitability
This vulnerability has low barriers to exploitation. No authentication is required, no user interaction is necessary, and the attack can be launched over the network with a simple HTTP POST request specifying a file path. The validation bypass using absolute filesystem paths is straightforward to discover and leverage. While the information leakage is limited to the first line of a file, that single line often contains critical data (e.g., configuration directives, SQL connection strings, or API credentials). Exploitation requires only basic web request construction—no sophisticated tooling or zero-day knowledge.
Remediation
Upgrade the Bulk Order Update for WooCommerce plugin to a version newer than 1.6 that addresses these validation weaknesses. The vendor should implement: (1) capability and permission checks (e.g., require manage_woocommerce capability and current_user_can() verification) on the AJAX handler; (2) nonce validation via wp_verify_nonce(); (3) a whitelist of allowed file paths or protocols rather than blocklist-based filtering; (4) rejection of absolute filesystem paths entirely; and (5) sandboxing of file reads to a designated upload directory only. Until patched, disable the plugin or restrict access via web application firewall rules.
Patch guidance
Check the plugin's changelog and GitHub repository for version 1.7 or later, which should address capability checks, nonce validation, and path filtering. Verify that the patched version no longer accepts absolute filesystem paths in the csv_url parameter and that file operations are restricted to the WordPress uploads directory. Test the patch in a staging environment before production rollout to confirm CSV upload functionality still works as intended. Monitor plugin update notifications and subscribe to security advisories from the plugin vendor.
Detection guidance
Monitor web server and application logs for POST requests to wp-admin/admin-ajax.php with action=bouw_fetch_csv_data and csv_url parameters containing file paths (absolute paths like /etc/passwd, sensitive config files like wp-config.php, or unusual protocol schemes). Alert on successful responses (HTTP 200) paired with these patterns, as they indicate potential exploitation attempts. File integrity monitoring on /etc/passwd and other system files can detect if an attacker has enumerated sensitive locations. WAF rules can block requests where csv_url contains non-http(s) schemes or absolute filesystem paths starting with /.
Why prioritize this
Although assigned a CVSS 3.1 score of 5.3 (MEDIUM), this vulnerability warrants prioritization because: (1) it requires zero authentication and zero user interaction; (2) it affects all installations without special configuration; (3) it enables both direct data theft and reconnaissance for follow-up attacks; (4) the affected plugin is actively maintained and likely widely deployed in e-commerce environments; (5) the information leaked (configuration, credentials, secrets) directly enables lateral movement and account compromise. Organizations running WordPress with WooCommerce should treat this as high-priority within their update cycles.
Risk score, explained
The CVSS 3.1 score of 5.3 reflects a network-accessible, unauthenticated attack vector (AV:N, PR:N, UI:N) with low attack complexity (AC:L) and confidentiality impact (C:L), but no integrity or availability impact. The score appropriately captures the limited scope of information leakage (first line of a file) relative to full file read or system compromise. However, the real-world risk is amplified because the leaked data often contains high-value secrets; the file-existence oracle enables multi-stage attacks; and the ease of exploitation makes this a likely target for automated scanners. Security teams should consider context: a site storing database credentials in readable files faces higher practical risk than one with hardened environment configurations.
Frequently asked questions
Can an attacker read entire files, or just the first line?
Only the first line. The vulnerability reads the CSV file and reflects the first parsed row. However, this is often sufficient—configuration files, database credentials, and API keys are frequently on the first line or within the first few lines of common files like wp-config.php or .env files.
Does the vulnerability require the attacker to know the exact file path?
The attacker does not need to know the exact path in advance. They can use the file-existence oracle behavior: the plugin will return a different response (or status) depending on whether the file exists. This allows attackers to enumerate file paths and system structure without credentials.
If we disable the plugin but don't uninstall it, are we safe?
Disabling the plugin prevents its code from loading in WordPress. However, uninstalling is recommended to remove the vulnerable code entirely. Disabled plugins can sometimes be re-enabled via compromised admin accounts or automated updates. Uninstalling removes the attack surface.
What's the relationship between this vulnerability and WooCommerce itself?
This is a vulnerability in a third-party plugin (Bulk Order Update for WooCommerce), not in WooCommerce or WordPress core. WooCommerce and WordPress are not affected unless this specific plugin is installed. Always audit third-party plugins for security posture and keep them updated independently from core platform updates.
This analysis is provided for informational purposes. Verify all remediation and patch information against official vendor advisories and security bulletins before deployment. CVSS scores and severity ratings reflect industry-standard calculations but should be contextualized with organizational risk tolerance and asset criticality. Always test patches in non-production environments before rollout. No exploit code or proof-of-concept is provided. Organizations should consult with their security teams and the plugin vendor for authoritative guidance. Source: NVD (public-domain), retrieved 2026-08-16. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2018-25393MEDIUMNavigate CMS 2.8.5 Path Traversal Vulnerability (CVSS 6.5)
- CVE-2018-25421MEDIUMOpen STA Manager 2.3 Path Traversal File Download Vulnerability
- CVE-2019-25734MEDIUMContact Form by WD CSRF & Local File Inclusion Vulnerability
- CVE-2019-25740MEDIUMJoomla com_jsjobs Arbitrary File Deletion Vulnerability
- CVE-2022-50953MEDIUMWordPress admin-word-count-column Plugin Local File Read Vulnerability
- CVE-2024-47263MEDIUMSynology Hyper Backup Path Traversal – Admin Privilege Required
- CVE-2024-47273MEDIUMSynology Hyper Backup Path Traversal Vulnerability (4.3 MEDIUM)
- CVE-2025-24268MEDIUMmacOS Path Traversal Vulnerability – Patch Sequoia 15.4