Description
The Booking Calendar plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 11.8.2 via the `wpbc_ajax_option_save` AJAX action. The vulnerability exists because the `handle_ajax_save()` function applies per-option safeguards only to names explicitly registered via `register_option_policy()`, causing `get_option_policy()` to return an empty policy — bypassing all can_save, force_mode, and allowed_keys checks — for any unregistered option name, including core WordPress options, while an attacker-controlled `data_name` parameter passes through `sanitize_key()` and is written directly to `update_option()` without restriction. This makes it possible for authenticated attackers with Editor-level access and above to escalate their privileges to Administrator by writing core WordPress options such as `default_role=administrator` and `users_can_register=1`, then self-registering a new Administrator account. The nonce check does not meaningfully restrict this attack, as both the nonce value and nonce action are attacker-supplied POST parameters, and a valid nonce is trivially obtainable via `admin-ajax.php?action=rest-nonce`.
References6
- plugins.trac.wordpress.org/browser/booking/tags/11.8.2/includes…
- plugins.trac.wordpress.org/browser/booking/tags/11.8.2/includes…
- plugins.trac.wordpress.org/browser/booking/tags/11.8.2/includes…
- plugins.trac.wordpress.org/browser/booking/tags/11.8.2/includes…
- plugins.trac.wordpress.org/changeset?reponame=&old=3699185%40bo…
- www.wordfence.com/threat-intel/vulnerabilities/id/ab68a6b2-e9b0…
Metrics
- CVSS 3.1
-
7.2
HIGH
Score source: CNA
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H - EPSS — exploit probability
- 1% percentile: 52 · as of 8 November 2026
- CWE
- CWE-269
Could this be exploited in your environment?
A patch closes the known hole. A penetration test shows what an attacker can still reach — with proof.