CVE-2026-2432 Overview
The CM Custom Reports – Flexible reporting to track what matters most plugin for WordPress is vulnerable to Stored Cross-Site Scripting (XSS) via admin settings in all versions up to and including 1.2.7. The vulnerability exists due to insufficient input sanitization and output escaping in the plugin's administrative interface. This allows authenticated attackers with administrator-level permissions or above to inject arbitrary web scripts into pages that execute whenever a user accesses an injected page.
Critical Impact
This Stored XSS vulnerability enables persistent script injection that affects WordPress multi-site installations and installations where unfiltered_html has been disabled, potentially compromising administrative sessions and user data.
Affected Products
- CM Custom Reports – Flexible reporting plugin for WordPress versions up to and including 1.2.7
- WordPress multi-site installations running affected plugin versions
- WordPress installations with unfiltered_html capability disabled
Discovery Timeline
- 2026-03-20 - CVE-2026-2432 published to NVD
- 2026-03-20 - Last updated in NVD database
Technical Details for CVE-2026-2432
Vulnerability Analysis
This Stored Cross-Site Scripting vulnerability resides in the GraphModule.php file within the CM Custom Reports plugin's backend classes. The vulnerability allows authenticated administrators to inject malicious JavaScript code through the plugin's admin settings interface. Once stored, the malicious scripts execute in the context of any user who views the affected page, enabling session hijacking, credential theft, or further administrative actions on behalf of the victim.
The attack requires administrator-level access, which limits the attack surface but poses significant risk in multi-site WordPress installations where administrators may have varying trust levels. When unfiltered_html is disabled (a common security hardening measure), administrators are expected to be restricted from injecting arbitrary HTML/JavaScript—this vulnerability bypasses that protection.
Root Cause
The root cause is classified as CWE-79: Improper Neutralization of Input During Web Page Generation (Cross-Site Scripting). The vulnerable code in GraphModule.php at line 151 fails to properly sanitize user-supplied input before storing it in the database and does not adequately escape the output when rendering the stored data. This allows script tags and event handlers to be preserved and executed in the browser context.
Attack Vector
The attack is network-based and requires high-privilege authentication (administrator access). An attacker with administrator credentials can navigate to the plugin's settings page and inject malicious JavaScript payloads into configurable fields. These payloads are stored in the WordPress database and subsequently rendered without proper escaping when other users (including super administrators in multi-site setups) access pages containing the injected content.
The vulnerability specifically affects:
- WordPress multi-site installations where site administrators may inject scripts affecting network administrators
- Single-site installations where unfiltered_html has been disabled as a security measure
The malicious scripts can perform actions such as stealing session cookies, redirecting users to phishing pages, or executing administrative actions on behalf of the victim user. For technical details on the vulnerable code path, see the WordPress Plugin Code Repository.
Detection Methods for CVE-2026-2432
Indicators of Compromise
- Review stored plugin settings in the wp_options table for unexpected JavaScript code, <script> tags, or event handler attributes
- Monitor for unusual administrator session activity or unexpected privilege usage
- Check browser console logs for script errors originating from the CM Custom Reports plugin pages
- Look for modifications to plugin settings by users who should not have access
Detection Strategies
- Implement Web Application Firewall (WAF) rules to detect XSS payloads in POST requests to WordPress admin pages
- Deploy endpoint detection to monitor for suspicious JavaScript execution patterns in WordPress admin contexts
- Utilize WordPress security plugins to scan for stored XSS payloads in the database
- Review audit logs for changes to CM Custom Reports plugin configuration settings
Monitoring Recommendations
- Enable comprehensive logging for all WordPress administrative actions, particularly plugin configuration changes
- Monitor network traffic for data exfiltration patterns that may indicate successful XSS exploitation
- Set up alerts for modifications to WordPress options related to the CM Custom Reports plugin
- Implement Content Security Policy (CSP) headers to detect and block inline script execution
How to Mitigate CVE-2026-2432
Immediate Actions Required
- Update the CM Custom Reports plugin to a patched version (versions after 1.2.7)
- Audit existing plugin settings for any injected malicious scripts and sanitize affected entries
- Review administrator access logs for suspicious configuration changes
- Consider temporarily disabling the plugin until the update can be applied in production environments
Patch Information
A patch has been released addressing the insufficient input sanitization and output escaping issues in the GraphModule.php file. The fix implements proper WordPress escaping functions to prevent script injection through admin settings. Review the WordPress Plugin Changeset Log for detailed code changes. Additional vulnerability details are available in the Wordfence Vulnerability Report.
Workarounds
- Restrict administrator access to only trusted users until the patch is applied
- Implement strict Content Security Policy (CSP) headers to block inline script execution: Content-Security-Policy: script-src 'self'
- Use a Web Application Firewall (WAF) to filter potentially malicious input to WordPress admin endpoints
- For multi-site installations, consider temporarily revoking plugin configuration access from site administrators
# WordPress wp-config.php security hardening
# Add to wp-config.php to enforce content security
# Disable file editing from admin panel
define('DISALLOW_FILE_EDIT', true);
# Force SSL for admin
define('FORCE_SSL_ADMIN', true);
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

