CVE-2026-9838: ICS Calendar WordPress Plugin Reflected XSS Vulnerability
A reflected cross-site scripting (XSS) vulnerability exists in the ICS Calendar WordPress plugin affecting all versions up to 12.0.9. An attacker can inject malicious JavaScript by crafting a specially designed link and tricking a user into clicking it. The vulnerable code path is reachable through an unauthenticated AJAX action that fails to properly sanitize user input before displaying it in the page. If successful, the injected script executes in the victim's browser with their privileges, potentially allowing the attacker to steal session cookies, perform actions on their behalf, or redirect them to malicious sites.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 6.1 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Weaknesses (CWE)
- CWE-79
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-07-10 / 2026-07-10
NVD description (verbatim)
The ICS Calendar plugin for WordPress is vulnerable to Reflected Cross-Site Scripting via the 'htmltagtitle' parameter in all versions up to, and including, 12.0.9 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a link. The vulnerability is reachable via the unauthenticated wp_ajax_nopriv_r34ics_ajax AJAX action, which accepts attacker-controlled js_args values merged over stored shortcode configuration without nonce verification, allowing the htmltagtitle key to bypass the normal shortcode allowlist check.
10 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability resides in the unauthenticated AJAX action wp_ajax_nopriv_r34ics_ajax, which accepts attacker-controlled values in the js_args parameter and merges them with stored shortcode configuration data. The htmltagtitle parameter is processed without sufficient input sanitization or output escaping, bypassing the normal shortcode allowlist protections. Because the AJAX endpoint lacks nonce verification, an attacker can send arbitrary requests from a third-party site. The resulting output is reflected in the HTTP response without proper HTML entity encoding, enabling XSS payload execution in any browser context where a victim visits the attacker's link. This is a classic reflected XSS (CWE-79) exploitable via user interaction.
Business impact
Compromised user accounts on sites running the vulnerable plugin can lead to unauthorized access, data theft, and reputational damage. Attackers can harvest administrator credentials, inject malicious content into the site, or modify calendar events and settings. For sites using ICS Calendar to manage events visible to customers or staff, XSS exploitation could deface event listings or trigger credential harvesting phishing attacks against site visitors. Organizations relying on this plugin should assess how many WordPress installations in their ecosystem are affected and prioritize remediation accordingly.
Affected systems
The ICS Calendar plugin for WordPress in versions up to and including 12.0.9 is affected. The vulnerability is present in all installations unless patched or the vulnerable AJAX action is otherwise mitigated. Sites using the plugin on WordPress versions that support AJAX and have the plugin activated are at risk. There is no version-specific platform limitation; any WordPress installation with the vulnerable plugin is potentially exploitable.
Exploitability
Exploitability is straightforward and does not require authentication or technical privilege escalation. An attacker need only craft a malicious URL containing XSS payload in the htmltagtitle parameter and distribute it via email, social media, or embedded links on third-party sites. Victim users must click the link for the attack to succeed, making social engineering the primary barrier to exploitation. No account compromise or insider access is required. The CVSS score of 6.1 (MEDIUM) reflects the requirement for user interaction and limited scope of impact (confidentiality and integrity), though the attack surface is broad and unauthenticated access reduces friction significantly.
Remediation
Immediately update the ICS Calendar plugin to a patched version that implements proper input sanitization and output escaping on the htmltagtitle parameter. Additionally, add nonce verification to the wp_ajax_nopriv_r34ics_ajax AJAX action to prevent cross-site request forgery. Organizations should verify that any update removes the parameter from the allowlist bypass or enforces strict validation. If an update is not immediately available, consider temporarily disabling the plugin or restricting AJAX endpoint access via Web Application Firewall (WAF) rules until a patch is available.
Patch guidance
Verify the plugin vendor's advisory for the specific patched version addressing CVE-2026-9838. Update the ICS Calendar plugin through the WordPress admin dashboard (Plugins > Updates) once a fix is released. Before applying the patch in production, test it in a staging environment to confirm compatibility with your WordPress version, theme, and any dependent custom code. After patching, verify that calendar functionality and AJAX interactions continue to work as expected. Document the patch date and version for compliance auditing.
Detection guidance
Monitor web server logs and WAF logs for HTTP requests to the wp-admin/admin-ajax.php endpoint with action=r34ics_ajax and the htmltagtitle parameter containing suspicious characters, HTML tags, script tags, or URL-encoded equivalents. Look for requests from external referrers or without valid WordPress session cookies. Implement SIEM alerts for patterns matching typical XSS payloads (e.g., <script>, onerror=, onclick=) in query parameters. Inspect browser console logs on affected sites for JavaScript errors or console messages indicating failed script injection. Consider using WordPress security plugins that log and alert on AJAX parameter anomalies.
Why prioritize this
While the CVSS score is MEDIUM (6.1), this vulnerability warrants timely remediation because exploitation requires only user interaction and no authentication. WordPress plugins are frequently targeted by attackers due to their wide deployment. Reflected XSS on an unauthenticated endpoint is particularly dangerous because attackers can easily distribute malicious links at scale. Organizations with public-facing WordPress sites should prioritize this patch within 30 days; internal or lower-traffic sites can accommodate a slightly longer remediation window but should not delay indefinitely.
Risk score, explained
The CVSS v3.1 score of 6.1 reflects a MEDIUM severity rating based on several factors: Network-accessible attack vector (AV:N) increases ease of exploitation; low attack complexity (AC:L) means no special conditions are required; no privileges needed (PR:N) and user interaction required (UI:R) indicate an attacker must trick a victim into clicking a link; changed scope (S:C) means the vulnerability can affect resources outside the vulnerable component (the victim's browser session); and limited impact on confidentiality (C:L) and integrity (I:L) with no availability impact (A:N). The score does not account for blast radius or prevalence across plugin installations, which security teams should factor into organizational risk assessment.
Frequently asked questions
Can this vulnerability affect a WordPress site if the ICS Calendar plugin is installed but not activated?
No. The vulnerability is only exploitable when the plugin is activated and the vulnerable AJAX action is available. Deactivating the plugin immediately mitigates the risk, though uninstalling it is recommended for defense in depth.
Do attackers need to know specific details about how a site uses ICS Calendar to exploit this?
No. The vulnerability exists in the default AJAX handler regardless of how the calendar is configured. An attacker can craft a generic malicious link and distribute it broadly, relying on statistical probability that some recipients are on vulnerable sites.
Can site administrators detect if someone has exploited this vulnerability on their site?
Yes, via web server access logs and WAF logs showing requests to wp-admin/admin-ajax.php with action=r34ics_ajax and suspicious parameter values. Browser DevTools console may also show evidence of injected scripts. WordPress security plugins can alert on suspicious AJAX activity.
Is there a workaround if I cannot patch the plugin immediately?
Temporarily disable the plugin until a patch is available. If disabling breaks critical functionality, consider using a Web Application Firewall to block requests to the wp_ajax_nopriv_r34ics_ajax action or filter suspicious parameter patterns until the vendor releases a fix.
This analysis is based on publicly available vulnerability data and vendor disclosures as of the publication date. Security teams should verify patch availability and compatibility with their WordPress environment before deploying updates. Exploit details are not disclosed in this advisory. Organizations are encouraged to test patches in staging environments and maintain current backups. For the latest updates and official guidance, consult the ICS Calendar plugin vendor's security advisory and WordPress security resources. Source: NVD (public-domain), retrieved 2026-08-17. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2016-20070MEDIUMPrivilege Escalation & Stored XSS in WordPress Booking Calendar Contact Form 1.0.23
- CVE-2018-25384MEDIUMStored XSS in Wikidforum 2.20 Allows Authenticated Attackers to Inject Malicious Scripts
- CVE-2019-25731MEDIUMStored XSS in Zuz Music 2.1 Contact Form
- CVE-2019-25737MEDIUMStored XSS in Live Chat Unlimited 2.8.3 – Admin Session Compromise
- CVE-2019-25739MEDIUMGigToDo 1.3 Stored XSS Vulnerability in Proposal Descriptions
- CVE-2019-25742MEDIUMStored XSS in Zoner Real Estate WordPress Theme 4.1.1 – Admin Account Compromise Risk
- CVE-2019-25743MEDIUMWordPress Soliloquy Lite 2.5.6 Stored XSS Vulnerability
- CVE-2019-25744MEDIUMWordPress Popup Builder 3.49 Stored XSS Vulnerability – Exploit Prevention & Patch Guide