Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister/authenticate as subscriber linked to a staff record
-
DeliverySend crafted AJAX request altering id/wp_user_id
-
ExploitOverwrite admin Bookly staff account binding
-
ExecutionHijack administrator account association
-
ImpactEscalate to administrator privileges
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Requires an authenticated WordPress account with subscriber-level access or above (PR:L), and the attacking user must be linked to at least one Bookly staff record. That linkage occurs by default when an admin enables the bookly_gen_allow_staff_edit_profile option, which is active on fresh Bookly installs. Exploitation targets the staff-edit AJAX endpoint via the user-controlled 'id'/'wp_user_id' parameters. Limiting factors: the site must run Bookly ≤28.4, the attacker must obtain a subscriber account (so sites disabling open registration raise the bar), and the staff-edit-profile option/staff-record linkage must be present - environments that disabled this option or never linked WP users to staff entries are not exposed. No user interaction is required (UI:N). |
| Impact | This is a genuine but conditionally-gated privilege-escalation issue rather than a drop-everything emergency. The CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N, 6.8 Medium) tells a coherent story: network-reachable, but with high attack complexity and low-privilege (subscriber) authentication required, yielding high confidentiality and integrity impact via account hijacking. The AC:H rating is well-justified because exploitation is not universal - the attacker must already be linked to at least one Bookly staff record, which only holds when the bookly_gen_allow_staff_edit_profile option is enabled (notably, this is active on fresh installs). No EPSS score, KEV listing, or public POC was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation. Signals are internally consistent (no CVSS-vs-description conflict): a network IDOR on a user-controlled key requiring a logged-in account. The practical priority is moderate - the impact (seizing an administrator's staff-account binding to escalate privileges) is serious, but the subscriber-account requirement plus the staff-record-linkage precondition meaningfully narrow the realistic attacker population compared to an unauthenticated flaw. Prioritize patching on sites that allow open user registration and run default Bookly staff-profile settings. |
| Exploit ScenarioDerived | On a WordPress site running Bookly (≤28.4) that permits self-registration and has the default staff-edit-profile option enabled, an attacker registers a subscriber account that becomes linked to a Bookly staff record. They then send a crafted AJAX request manipulating the 'id'/'wp_user_id' parameters to overwrite an administrator's Bookly staff record so it points at the attacker's WordPress user, hijacking the higher-privileged account association and escalating privileges. No public exploit code was identified in the provided data, and AC:H reflects the required staff-record linkage precondition. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 10, 2026
Privilege escalation in the Bookly WordPress plugin (versions up to and including 28.4) allows authenticated attackers with subscriber-level access to overwrite the WordPress user binding of any Bookly staff record, including those owned by administrators, by manipulating the 'id' and 'wp_user_id' parameters in the staff-edit AJAX endpoint. Exploitation requires the attacker to have a subscriber account and to be linked to at least one Bookly staff record, a condition present by default on fresh installs where the bookly_gen_allow_staff_edit_profile option is enabled. No public exploit code has been identified and CISA KEV does not list this vulnerability; the assessed CVSS is 6.8 with high attack complexity (AC:H) due to the prerequisite of a staff-linked subscriber account.
RemediationAI
Update the Bookly plugin to version 28.5 or later to obtain the vendor-released patch (confirmed by the Trac changeset from 28.4 to 28.5). If immediate patching is not possible, disable the bookly_gen_allow_staff_edit_profile option (which prevents staff members from editing their own profiles, a functional trade-off) and ensure that no WordPress user accounts are linked to Bookly staff records. Additionally, restrict user registration on the WordPress site to prevent attackers from obtaining the required subscriber-level account, as this raises the bar for exploitation. Note that the vulnerability requires the attacker to already have a subscriber account linked to a staff record, so sites with closed registration and no staff-user linkages are not exposed. For further details, refer to the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/1c3cfaa5-00e3-41b6-8f38-cebdd5dec180?source=cve.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability is a classic Insecure Direct Object Reference (IDOR), classified as CWE-639, in the Bookly appointment booking plugin for WordPress. The plugin's staff-edit AJAX endpoint (backend/components/dialogs/staff/edit/Ajax.php) fails to validate that the 'id' parameter (staff record ID) and 'wp_user_id' parameter (WordPress user ID to bind) belong to the requesting user or that the user has permission to modify them. The request handling in lib/base/Request.php and entity manipulation in lib/base/Entity.php allow an authenticated subscriber to update the wp_user_id field of arbitrary staff records. By changing this binding to their own user ID, an attacker can associate their low-privileged WordPress account with a high-privileged staff member's record, effectively hijacking that staff account's booking privileges. The affected product is identified by CPE cpe:2.3:a:ladela:online_scheduling_and_appointment_booking_system_-_bookly:*:*:*:*:*:*:*:* (all versions). The fix is included in version 28.5, as shown by the Trac changeset diff from 28.4 to 28.5.
Know when Online Scheduling And Appointment Booking System Bookly gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N
Network IDOR but AC:H because the attacker must be linked to a Bookly staff record via a specific (default) option; PR:L for subscriber access; C/I:H from account hijack, A:N as no availability loss.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Online Scheduling and Appointment Booking System - Bookly plugin for WordPress is vulnerable to Insecure Direct Object Reference in all versions up to, and including, 28.4 via the 'id, wp_user_id' parameter due to missing validation on a user controlled key. This makes it possible for authenticated attackers, with subscriber-level access and above, to overwrite the WordPress account binding of any Bookly staff record, including those owned by administrators, effectively hijacking a higher-privileged staff member's account association and escalating privileges. Exploitation requires the attacking user to be linked to at least one Bookly staff record, which occurs by default whenever an admin enables the bookly_gen_allow_staff_edit_profile option (active on fresh installs) and links a WordPress user to a staff entry.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Unauthenticated attackers can read the complete AI booking conversation transcript of any Bookly customer — including na
Unauthenticated attackers can exploit an insecure direct object reference in the Bookly appointment-booking plugin for W
Stored cross-site scripting in the Bookly WordPress appointment booking plugin (versions up to and including 27.7) enabl
PHP Object Injection in the Bookly (Online Scheduling and Appointment Booking System) WordPress plugin, affecting all ve
Stored cross-site scripting in the Bookly Online Scheduling and Appointment Booking System plugin for WordPress (version
Unauthorized plugin update execution in the Bookly scheduling plugin for WordPress (all versions through 27.2) allows an
Unauthenticated attackers who already know a registered customer's primary phone number or email can read that customer'
Price manipulation in Bookly WordPress plugin (versions up to 27.0) allows unauthenticated attackers to reduce appointme
Unauthenticated attackers can overwrite the name, email, phone, and address of any existing customer record in the Bookl
Insecure Direct Object Reference in the Bookly plugin's Mobile Staff Cabinet API (versions up to and including 27.7) all
EUVD-2026-96035
GHSA-688p-jfpg-cv62
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB