---
id: "CVE-2026-104798"
kind: "vulnerability"
aliases: ["CVE-2026-104798"]
title: "The My Calendar \u2013 Accessible Event Manager plugin for WordPress is vulnerable to Privilege Escalation in all\u2026"
severity: "critical"
cvss: 9.8
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["my-calendar", "package", "self-hosted", "wordpress"]
not_affected_if: ["plugin-deactivated", "plugin-not-installed"]
published_at: "2026-10-16T05:17:28+00:00"
first_seen_at: "2026-10-23T21:57:12+00:00"
updated_at: "2026-10-23T22:28:55+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-104798", "first_seen_at": "2026-10-23T21:57:12+00:00"}]
---

# The My Calendar – Accessible Event Manager plugin for WordPress is vulnerable to Privilege Escalation in all…

The My Calendar WordPress plugin up to and including 3.8.7 lets an unauthenticated visitor inject a shortcode through the public mcs GET parameter and reach arbitrary PHP functions. The described chain overwrites the credentials of user ID 1, the initial Administrator, so the attacker gets full wp-admin access.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

Check the installed My Calendar plugin version under wp-admin > Plugins; versions 3.8.7 and below are affected.

## Fix

Update the My Calendar – Accessible Event Manager plugin to a version newer than 3.8.7; the fixed version is not stated in the sources.
If you cannot update immediately, deactivate the plugin and rotate the administrator password.

## Timeline

- 2026-10-23T21:57:12+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-104798

## From the sources

The My Calendar – Accessible Event Manager plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 3.8.7. The public `mcs` GET parameter is reflected into post content unsanitized before WordPress core's `do_shortcode` filter runs, allowing an unauthenticated attacker to inject a nested `[my_calendar above=...]` shortcode; `mc_generate_calendar_nav()` then splits the `above` attribute on commas and dispatches each element via `call_user_func()` with no authentication, authorization, or callable allowlist check. This makes it possible for unauthenticated attackers to invoke arbitrary loaded PHP functions, enabling a call chain in which the shortcode `$params` array is passed to `edit_user()` — which PHP coerces to integer `1` as the `$user_id` argument — overwriting the credentials of the initial Administrator account (user ID 1) and granting the attacker full wp-admin access. Exploitation is trivially reachable via the plugin's auto-generated `/my-calendar/` page, which is publicly accessible by default upon plugin activation.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
