Skip to main content

My Calendar CVE-2026-40308

| EUVDEUVD-2026-23306 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-04-16 GitHub_M GHSA-2mvx-f5qm-v2ch
8.8
CVSS 4.0 · GitHub Advisory
Share

Severity by source

GitHub Advisory PRIMARY
8.8 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
9.1 CRITICAL

Unauthenticated network endpoint with no UI (AV:N/AC:L/PR:N/UI:N); cross-tenant event disclosure gives C:H and worker crash gives A:H; no integrity impact and shared WordPress app keeps S:U.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

7
Source Code Evidence Fetched
Jul 24, 2026 - 07:17 vuln.today
Analysis Generated
Jul 24, 2026 - 07:17 vuln.today
Patch released
Apr 28, 2026 - 21:15 nvd
Patch available
Patch available
Apr 16, 2026 - 22:46 EUVD
CVSS changed
Apr 16, 2026 - 22:22 NVD
8.8 (HIGH)
EUVD ID Assigned
Apr 16, 2026 - 22:00 euvd
EUVD-2026-23306
CVE Published
Apr 16, 2026 - 21:30 nvd
HIGH 8.8

DescriptionGitHub Advisory

My Calendar is a WordPress plugin for managing calendar events. In versions 3.7.6 and below, the mc_ajax_mcjs_action AJAX endpoint, registered for unauthenticated users, passes user-supplied arguments through parse_str() without validation, allowing injection of arbitrary parameters including a site value. On WordPress Multisite installations, this enables an unauthenticated attacker to call switch_to_blog() with an arbitrary site ID and extract calendar events from any sub-site on the network, including private or hidden events. On standard Single Site installations, switch_to_blog() does not exist, causing an uncaught PHP fatal error and crashing the worker thread, creating an unauthenticated denial of service vector. This issue has been fixed in version 3.7.7.

AnalysisAI

Unauthenticated information disclosure (IDOR) in the My Calendar WordPress plugin (versions ≤ 3.7.6) lets remote attackers read calendar events-including private and hidden ones-from any sub-site on a WordPress Multisite network by injecting an arbitrary site ID into the unauthenticated mcjs_action AJAX endpoint. On Single Site installations the same request triggers an uncaught fatal error, giving an unauthenticated denial-of-service vector. Publicly available exploit code exists, though EPSS remains very low (0.01%) and the flaw is not in CISA KEV. Fixed in version 3.7.7.

Technical ContextAI

The plugin registers mc_ajax_mcjs_action to the wp_ajax_nopriv_mcjs_action hook, making it reachable by unauthenticated users. When behavior=loadupcoming, the handler takes the attacker-controlled args string and (after sanitize_text_field and a '|'→'&' substitution) passes it directly to PHP's parse_str(), which populates a $args array with arbitrary attacker-supplied key-value pairs. That array flows into my_calendar_upcoming_events() in my-calendar-widgets.php, where a supplied 'site' value is passed straight to WordPress core's switch_to_blog($args['site']) with no capability check (e.g., no Super Admin / manage_network verification). This is a textbook CWE-639 (Authorization Bypass Through User-Controlled Key / IDOR): the sub-site identifier is a direct object reference the application trusts without authorization. The affected component is joedolson/my-calendar (CPE cpe:2.3:a:joedolson:my-calendar:*), and the behavior diverges by deployment: on Multisite, switch_to_blog() exists and changes DB context to the targeted tenant; on Single Site it is undefined, so the call fatals with 'Call to undefined function switch_to_blog()'.

RemediationAI

Vendor-released patch: 3.7.7-upgrade the My Calendar plugin to version 3.7.7 or later, which fixes the unvalidated switch_to_blog() call (release: https://github.com/joedolson/my-calendar/releases/tag/v3.7.7; advisory: https://github.com/joedolson/my-calendar/security/advisories/GHSA-2mvx-f5qm-v2ch). If immediate patching is not possible, compensating controls include blocking or restricting unauthenticated access to the wp-admin/admin-ajax.php endpoint for action=mcjs_action at a WAF or reverse proxy-note this may break legitimate front-end 'upcoming events' AJAX loading for anonymous visitors; adding a WAF rule to reject requests whose args parameter contains a 'site' key mitigates the IDOR/switch_to_blog path with less functional impact; and on Single Site installs, rate-limiting admin-ajax.php requests reduces the DoS exposure but does not eliminate the fatal-error trigger. Disabling the plugin entirely is the only complete workaround until 3.7.7 is applied, at the cost of losing calendar functionality.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2012-1823 CRITICAL POC
9.8 May 11

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

Share

CVE-2026-40308 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy