CVE-2024-11804 Overview
The Planaday API plugin for WordPress contains a Reflected Cross-Site Scripting (XSS) vulnerability affecting all versions up to and including 11.4. The flaw resides in the tab parameter, which is rendered without sufficient input sanitization or output escaping. Unauthenticated attackers can craft malicious URLs that inject arbitrary JavaScript into responses. Execution occurs when a victim clicks the crafted link, allowing attackers to run scripts in the victim's browser session against the vulnerable site. The vulnerability is tracked under CWE-79.
Critical Impact
Successful exploitation enables session theft, credential harvesting, and administrative actions performed under the identity of an authenticated WordPress user who follows a malicious link.
Affected Products
- Planaday API plugin for WordPress — all versions through 11.4
- WordPress installations with the plugin activated
- Any site exposing the plugin's tab parameter to unauthenticated requests
Discovery Timeline
- 2024-12-12 - CVE-2024-11804 published to NVD
- 2026-06-17 - Last updated in NVD database
Technical Details for CVE-2024-11804
Vulnerability Analysis
The vulnerability is a Reflected Cross-Site Scripting flaw in the Planaday API plugin. User-controlled input supplied through the tab URL parameter is reflected back into the rendered page without proper sanitization or escaping. Because the plugin fails to encode characters such as <, >, and quotation marks, attacker-supplied HTML and JavaScript execute in the context of the vulnerable site.
The issue requires user interaction. An attacker must convince a target to click a crafted link, submit a manipulated form, or visit an attacker-controlled page that triggers navigation. Once triggered, the injected script runs with the privileges of the victim's session on the WordPress site.
Because the injection point does not require authentication, any unauthenticated visitor can serve as the delivery vector, and any authenticated user, including administrators, can serve as the victim.
Root Cause
The plugin accepts the tab query parameter and embeds its value directly into HTML output. Neither server-side sanitization functions such as WordPress's sanitize_text_field() nor context-appropriate output escaping such as esc_attr() or esc_html() are applied before rendering. This omission maps to CWE-79: Improper Neutralization of Input During Web Page Generation.
Attack Vector
An attacker crafts a URL targeting the vulnerable endpoint and appends a malicious payload to the tab parameter. The payload is delivered through phishing emails, malicious advertising, social media links, or attacker-controlled sites. When a WordPress user clicks the link, the injected JavaScript executes in the browser under the origin of the affected site.
Typical payloads target session cookies, cross-site request forgery tokens, or trigger administrative actions such as creating rogue accounts or modifying plugin configurations. See the Wordfence Vulnerability Report for additional context on the injection point and reproduction details.
Detection Methods for CVE-2024-11804
Indicators of Compromise
- Web server access logs containing requests to plugin endpoints with tab= parameter values that include <script>, javascript:, onerror=, or URL-encoded equivalents such as %3Cscript%3E.
- Unexpected outbound requests from administrator browsers to unknown domains shortly after clicking inbound links.
- Creation of unauthorized WordPress administrator accounts or unexpected changes to plugin and theme settings.
Detection Strategies
- Deploy a Web Application Firewall rule that inspects the tab query parameter for HTML tags, event handlers, and script schemes.
- Review WordPress audit logs for administrative changes correlated in time with suspicious inbound HTTP requests.
- Monitor referer headers pointing to the vulnerable plugin endpoint from external domains associated with phishing infrastructure.
Monitoring Recommendations
- Enable verbose HTTP request logging on the WordPress front-end and forward logs to a centralized SIEM for pattern analysis.
- Alert on repeated 200-response requests to Planaday API plugin URLs containing encoded angle brackets or JavaScript event attributes.
- Track browser telemetry for administrator accounts and flag anomalous DOM mutations or outbound XHR requests on plugin pages.
How to Mitigate CVE-2024-11804
Immediate Actions Required
- Update the Planaday API plugin to a version later than 11.4 as soon as the vendor publishes a patched release.
- Deactivate and remove the plugin if a patched version is not yet available and the plugin is not business-critical.
- Force a password reset for WordPress administrators and rotate session cookies to invalidate any tokens potentially exposed through prior clicks on malicious links.
Patch Information
The vendor published a source code change referenced in the WordPress Plugin Changeset that addresses the input handling in the affected endpoint. Site administrators should verify the installed plugin version exceeds 11.4 and confirm the fix is present. Refer to the Wordfence Vulnerability Report for advisory-level guidance.
Workarounds
- Configure a WAF rule blocking requests to plugin endpoints where the tab parameter contains <, >, or javascript: substrings.
- Restrict access to WordPress administrative pages using IP allow-listing until the plugin is patched.
- Enable a strict Content Security Policy that disallows inline scripts and limits script sources to trusted origins.
# Example ModSecurity rule to block script injection in the 'tab' parameter
SecRule ARGS:tab "@rx (?i)(<script|javascript:|onerror=|onload=|%3Cscript)" \
"id:1009111804,phase:2,deny,status:403,log,\
msg:'CVE-2024-11804 Planaday API XSS attempt blocked'"
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

