Description
The Bookly plugin for WordPress is vulnerable to Insecure Direct Object Reference in versions up to, and including, 27.7 via the appointment() method of the Mobile Staff Cabinet API (resource=appointment, action=bookly_mobile_staff_cabinet) in frontend/modules/mobile_staff_cabinet/api/handlers/Handler1_0.php. This is due to the handler loading an Appointment by the attacker-supplied params[id] without verifying that the appointment's staff_id matches the authenticated staff member, whereas sibling operations (deleteAppointment, saveAppointment, appointments list) correctly scope to $this->staff->getId() when $this->role === ROLE_STAFF. This makes it possible for authenticated attackers, with staff-level mobile cabinet access (any valid access_key token bound to a Staff entity), to read appointment details — including the internal note and the full customer_appointments collection (customer full_name, email, phone, notes, custom_fields, extras, payment_total, payment_type, payment_status) — belonging to other staff members by enumerating sequential appointment IDs.
Published: 2026-08-16
Score: 4.3 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Bookly WordPress plugin contains an insecure direct object reference flaw in its Mobile Staff Cabinet API appointment() method. The API loads an appointment record based solely on an attacker‑supplied appointment ID without checking that the caller’s staff ID matches the appointment’s staff member. This omission allows an authenticated staff user—anyone with a valid mobile cabinet access token bound to a Staff entity—to read appointment details, including internal notes and the full customer appointment collection, of appointments belonging to other staff members. The flaw does not enable remote code execution or denial of service; its primary impact is the disclosure of confidential customer and business information.

Affected Systems

The vulnerability is present in the Bookly scheduling plugin for WordPress from the ladela vendor. All plugin versions up to and including 27.7 are affected. No earlier or later versions are known to be impacted.

Risk and Exploitability

The CVSS score of 4.3 indicates moderate severity. EPSS is not available and the vulnerability is not listed in the CISA KEV catalog, suggesting no evidence of active exploitation. However, the flaw requires only authenticated staff access, a condition that is common in normal operations, making enumeration of other staff appointments feasible. Because the attacker can obtain sensitive customer data, the risk to confidentiality is significant even though the exploitation probability appears low based on current data.

Generated by OpenCVE AI on August 16, 2026 at 05:29 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Bookly plugin to version 27.8 or newer to remove the parameter validation flaw
  • If an upgrade is not immediately possible, revoke or disable staff mobile cabinet access keys to prevent authenticated users from enumerating appointments
  • Apply an additional authorization filter on the appointment() endpoint that verifies the appointment’s staff_id matches the caller’s staff id
  • Monitor authentication logs for unusual attempts to access appointments belonging to other staff members
  • Consult the vendor for any interim patches or configuration guidance

Generated by OpenCVE AI on August 16, 2026 at 05:29 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 16 Aug 2026 04:45:00 +0000

Type Values Removed Values Added
Description The Bookly plugin for WordPress is vulnerable to Insecure Direct Object Reference in versions up to, and including, 27.7 via the appointment() method of the Mobile Staff Cabinet API (resource=appointment, action=bookly_mobile_staff_cabinet) in frontend/modules/mobile_staff_cabinet/api/handlers/Handler1_0.php. This is due to the handler loading an Appointment by the attacker-supplied params[id] without verifying that the appointment's staff_id matches the authenticated staff member, whereas sibling operations (deleteAppointment, saveAppointment, appointments list) correctly scope to $this->staff->getId() when $this->role === ROLE_STAFF. This makes it possible for authenticated attackers, with staff-level mobile cabinet access (any valid access_key token bound to a Staff entity), to read appointment details — including the internal note and the full customer_appointments collection (customer full_name, email, phone, notes, custom_fields, extras, payment_total, payment_type, payment_status) — belonging to other staff members by enumerating sequential appointment IDs.
Title Online Scheduling and Appointment Booking System – Bookly <= 27.7 - Authenticated (Staff+) Insecure Direct Object Reference to Sensitive Information Exposure via 'params[id]' Parameter
Weaknesses CWE-639
References
Metrics cvssV3_1

{'score': 4.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: Wordfence

Published:

Updated: 2026-08-16T04:24:49.949Z

Reserved: 2026-06-22T14:40:37.356Z

Link: CVE-2026-12905

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-16T05:16:45.947

Modified: 2026-08-16T05:16:45.947

Link: CVE-2026-12905

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-16T05:30:06Z

Weaknesses
  • CWE-639

    Authorization Bypass Through User-Controlled Key