CVE-2025-63057
Executive Summary
CVE-2025-63057 is a DOM-Based Cross-Site Scripting (XSS) vulnerability affecting the Roxnor Wp Ultimate Review WordPress plugin, versions 2.3.7 and below. This vulnerability allows an attacker to inject malicious scripts into a web page through improper neutralization of user input. The attack is executed entirely on the client side (DOM), bypassing server-side filters. Given the plugin's nature, this is a WordPress ecosystem issue, not related to Apache or Nginx.
The CVSS score is 6.5 (Medium), with a low attack complexity and no privileges required, but user interaction is required. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the lack of a patch makes it a persistent risk for unmaintained sites.
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 is a WordPress plugin distributed via the official WordPress plugin repository and third-party marketplaces. The supply chain risk is moderate: if the plugin is abandoned (no patch), site owners must manually remove or replace it. No known malicious packages have been injected, but the lack of updates increases the risk of dependency confusion or typosquatting.
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): Required (R) – Victim must click a crafted link or visit a malicious page.
- Scope (S): Changed (C) – The injected script can affect resources beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Partial modification of content.
- Availability (A): None (N) – No impact on availability.
Threat Level: Medium. The vulnerability is easy to exploit but requires user interaction. The lack of a patch increases the risk for unmaintained sites.
Deep Dive & Mechanics
The vulnerability resides in the DOM-based XSS category. The plugin's JavaScript code improperly handles user-controlled input (e.g., URL fragments, document.referrer, or window.name) and injects it directly into the DOM without sanitization.
Attack Vector:
- An attacker crafts a malicious URL containing a JavaScript payload in the fragment identifier (e.g.,
#<script>alert(1)</script>). - The victim clicks the link and visits a page using the vulnerable plugin.
- The plugin's JavaScript reads the fragment and inserts it into the DOM (e.g., via
innerHTMLordocument.write). - The injected script executes in the victim's browser context, allowing cookie theft, redirection, or defacement.
Root Cause: The plugin uses location.hash or similar DOM properties without encoding or validation.
Vulnerable vs. Patched Code
Since no patch is available, we can only describe the vulnerable pattern.
Vulnerable Code (JavaScript):
// Vulnerable: Directly using location.hash
var userInput = location.hash.substring(1);
document.getElementById('review-content').innerHTML = userInput;
Patched Code (Hypothetical):
// Patched: Use textContent or sanitize input
var userInput = location.hash.substring(1);
var sanitized = DOMPurify.sanitize(userInput);
document.getElementById('review-content').textContent = sanitized;
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A WordPress site with WP Ultimate Review <= 2.3.7.
- A victim user with a modern browser.
Exploit Steps:
- Craft a malicious URL:
https://victim-site.com/review-page/#<img src=x onerror=alert(document.cookie)> - Send the link to the victim via phishing email or social engineering.
- When the victim clicks the link, the script executes, exfiltrating cookies to an attacker-controlled server.
Proof-of-Concept (PoC) HTML:
<!DOCTYPE html>
<html>
<body>
<script>
// Simulate the vulnerable plugin behavior
var hash = window.location.hash.substring(1);
document.write(hash);
</script>
</body>
</html>
Blue Team (Defense & Detection)
Detection Steps:
- Monitor web server logs for requests containing
#<scriptor#<imgpatterns. - Use Content Security Policy (CSP) to block inline scripts.
- Deploy a WAF rule to block URLs with suspicious fragment identifiers.
Lab Setup:
- Install WordPress with the vulnerable plugin.
- Use a browser with developer tools to inspect DOM injection.
- Simulate attacks using Burp Suite or custom scripts.
Indicators of Compromise (IOCs)
- Network IOCs:
- URLs containing
#<script,#<img,#<svgin the fragment. - Outbound connections to unknown domains from the victim's browser.
- URLs containing
- File IOCs:
- Modified JavaScript files in
/wp-content/plugins/wp-ultimate-review/(if attacker uploads malicious code).
- Modified JavaScript files in
- Behavioral IOCs:
- Unexpected DOM modifications (e.g., injected
<script>tags). - Unusual
document.cookieaccess in browser console.
- Unexpected DOM modifications (e.g., injected
Detection Engineering
YARA Rule
rule CVE_2025_63057_DOM_XSS {
meta:
description = "Detects DOM-based XSS patterns in WP Ultimate Review plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-63057"
strings:
$s1 = "location.hash" ascii wide nocase
$s2 = "innerHTML" ascii wide nocase
$s3 = "document.write" ascii wide nocase
condition:
any of ($s*) and filesize < 100KB
}
Sigma Rule
title: CVE-2025-63057 DOM XSS in WP Ultimate Review
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects potential DOM XSS exploitation attempts via URL fragments
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- '#<script'
- '#<img'
- '#<svg'
condition: selection
falsepositives:
- Legitimate use of hash fragments (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-63057 DOM XSS Attempt"; flow:to_server; content:"#<script"; http_uri; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable or remove the WP Ultimate Review plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block requests containing
#<scriptor#<imgin the URI. - Add Content Security Policy (CSP) headers to restrict inline scripts:
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval' https://trusted-cdn.com;
Long-Term Fix:
- Monitor the plugin's repository for an official patch.
- If the plugin is abandoned, migrate to an alternative review plugin (e.g., "WP Customer Reviews" or "YASR").
Workaround:
- Manually patch the plugin's JavaScript file to use
textContentinstead ofinnerHTMLand sanitize input withDOMPurify.
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.