CVE-2026-52839
LowCVSS 3.3Exploitation Probability (EPSS)
Low risk4th percentile - higher than 4% of all known CVEs
Summary
A vulnerability in Easy!Appointments before version 1.6.0 allows an authenticated provider to inject appointments into another provider's schedule. The `appointments/store` and `appointments/update` endpoints do not verify that the provider ID belongs to the current session, breaking provider isolation. Additionally, the `store` path has a write-before-crash bug that persists unauthorized data in the database.
Risk Assessment
The organization faces a risk of schedule integrity compromise, leading to appointment conflicts, loss of customer trust, and potential legal issues due to unauthorized data access.
Recommendation
Immediately upgrade Easy!Appointments to version 1.6.0 or later, which includes a fix for this vulnerability.
Other vulnerabilities in Easy!Appointments
See all- CVE-2026-61946Medium
The Easy Appointments plugin versions 3.12.27 and earlier are vulnerable to unauthenticated Insecure Direct Object References (IDOR).
- CVE-2026-55651High
In Easy!Appointments version 1.5.2, an Excessive Data Exposure vulnerability in the customers search endpoint allows an authenticated user to obtain appointment hashes belonging to other users.
- CVE-2026-52841Low
A vulnerability in Easy!Appointments prior to version 1.6.0 allows any logged-in backend user (admin, provider, secretary) to hijack another provider's Google sync. The attacker can replace the OAuth token, causing customer data (name, email) to be sent to their own Google calendar.
- CVE-2026-52838Low
A stored XSS vulnerability in Easy!Appointments allows an administrator to inject malicious HTML/JavaScript into the booking disabled message field. This content is displayed unsanitized on the public booking page, affecting every unauthenticated visitor.
- CVE-2026-108758High
Easy!Appointments through 1.6.0 contains an authorization bypass vulnerability in Booking::register() that allows unauthenticated attackers to modify any appointment by supplying an appointment id without its hash. Attackers can enumerate sequential appointment ids with a self-asserted manage_mode flag to rewrite appointment details, rebind them to attacker-controlled customers, and obtain management hashes for rescheduling or cancellation.
- CVE-2026-9232Medium
The Easy Appointments plugin for WordPress is vulnerable to Sensitive Information Exposure in all versions up to and including 3.12.27 via the handle_customers_ajax. This allows authenticated attackers with contributor-level access and above to extract the full customer dataset from the ea_customers table, including personally identifiable information such as names, email addresses, mobile numbers, dates of birth, and physical addresses.
- CVE-2026-87966Medium
The Easy Appointments WordPress plugin before 4.0.2.2 does not perform an ownership or authorization check on its unauthenticated appointment-reservation endpoint before updating an existing appointment identified by a request-supplied id, allowing unauthenticated attackers to overwrite, and through a follow-on cleanup delete, arbitrary appointments.
- CVE-2026-87965Medium
The Easy Appointments WordPress plugin before 4.0.2.2 does not use an unguessable token to authorize its mail-link appointment cancellation and confirmation action, deriving the token from a hardcoded source-embedded salt and the appointment's creation timestamp, so unauthenticated attackers who know or guess that timestamp can cancel or confirm arbitrary appointments.
- CVE-2026-81798High
DOM-Based Cross Site Scripting (XSS) vulnerability in Easy Appointments versions up to 4.0.2.1. Allows an attacker to manipulate the DOM of the page in the victim's browser, leading to execution of malicious script.
- CVE-2026-14225Low
A vulnerability in the Easy Appointments WordPress plugin before 3.12.28 incorrectly validates shortcode input, allowing contributor-level users to execute arbitrary registered shortcodes.
Original NVD description (English source)
Easy!Appointments is a self hosted appointment scheduler. Versions prior to 1.6.0 correctly filter provider-scoped appointments in the `appointments/search` response, proving that provider isolation is an intended security boundary. However, the direct mutation endpoints `appointments/store` and `appointments/update` only check generic appointment privileges and never verify that the submitted `id_users_provider` belongs to the current session. A normal authenticated provider can inject new appointments into another provider's schedule via `store`, or reassign existing appointments into a foreign provider's calendar via `update`. The `store` path contains an additional write-before-crash bug: the unauthorized row is committed to the database before the controller crashes on a type error, so the attacker receives an error response while the foreign appointment is already persisted. Version 1.6.0 patches the issue.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

