CVE-2026-77186: My Calendar <= 3.8.3 - Authenticated (Contributor+) Stored Cross-Site Scripting via 'fallback' Shortcode Attribute
The My Calendar – Accessible Event Manager plugin for WordPress is vulnerable to Stored Cross-Site Scripting via 'fallback' Shortcode Attribute in all versions up to, and including, 3.8.3 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The bypass relies on hex-encoded shortcode attribute payloads (e.g. \x3cscript\x3e), which wpksespost cannot strip on save because they appear as literal backslash sequences rather than real HTML tags; WordPress core's shortcodeparseatts() then calls stripcslashes() at render time, decoding the escapes into real angle brackets before they reach the unescaped sink.
Affected Software
Event History
Frequently Asked Questions
Which users can exploit this issue?
An attacker must be authenticated with Contributor-level access or higher. The vulnerable shortcode attribute can then be used to store a script payload in a page.
When does the injected script run?
The script executes whenever a user accesses a page containing the injected shortcode. This can affect users who view the compromised page, not only the account that inserted it.
Why can the payload bypass sanitization during saving?
The bypass uses hex-encoded escape sequences such as \x3cscript\x3e, which appear as literal backslash text when saved and are not removed by wp_kses_post. At render time, WordPress shortcode parsing decodes those sequences with stripcslashes(), producing HTML that reaches an unescaped output sink.