SB2026042882 - Multiple vulnerabilities in Easy!Appointments
Published: April 28, 2026 Updated: June 15, 2026
Breakdown by Severity
- Low
- Medium
- High
- Critical
Description
This security bulletin contains information about 7 vulnerabilities.
1) Cross-site request forgery (CVE-ID: CVE-2026-23622)
CWE-ID: CWE-352 - Cross-Site Request Forgery (CSRF)
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:P/U:Clear
The vulnerability allows a remote attacker to perform cross-site request forgery attacks.
The vulnerability exists due to insufficient validation of the HTTP request origin in application/core/EA_Security.php::csrf_verify(). A remote attacker can trick the victim to visit a specially crafted web page and perform arbitrary actions on behalf of the victim on the vulnerable website.
2) Authorization bypass through user-controlled key (CVE-ID: CVE-2026-52841)
CWE-ID: CWE-639 - Authorization Bypass Through User-Controlled Key
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:U/U:Clear
The vulnerability allows a remote user to disclose sensitive information and modify appointment data.
The vulnerability exists due to improper access control in the Google OAuth provider binding flow when processing a user-supplied provider_id during OAuth setup and callback handling. A remote privileged user can bind a peer provider's Google sync to a Google account they control to disclose sensitive information and modify appointment data.
User interaction is required to complete the Google OAuth consent flow, and only instances with Google Calendar OAuth configured are vulnerable.
3) Server-Side Request Forgery (SSRF) (CVE-ID: CVE-2026-52840)
CWE-ID: CWE-918 - Server-Side Request Forgery (SSRF)
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:U/U:Clear
The vulnerability allows a remote user to disclose sensitive information about the deployment's internal network.
The vulnerability exists due to server-side request forgery in Caldav::connect_to_server when processing a user-supplied caldav_url. A remote privileged user can send a specially crafted request to disclose sensitive information about the deployment's internal network.
The returned error message can include the upstream status code and a small portion of the response body, making the SSRF semi-blind.
4) Authorization bypass through user-controlled key (CVE-ID: CVE-2026-52839)
CWE-ID: CWE-639 - Authorization Bypass Through User-Controlled Key
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:U/U:Clear
The vulnerability allows a remote user to modify appointments in another provider's schedule.
The vulnerability exists due to improper access control in the appointments/store and appointments/update endpoints when handling appointment modification requests with a user-controlled id_users_provider value. A remote privileged user can submit a crafted appointment request to modify appointments in another provider's schedule.
In the store path, the unauthorized appointment row is committed before the controller crashes, so the change persists even if the request returns an internal server error.
5) Cross-site scripting (CVE-ID: CVE-2026-52838)
CWE-ID: CWE-79 - Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:U/U:Clear
The vulnerability allows a remote user to execute arbitrary JavaScript in a victim's browser.
The vulnerability exists due to cross-site scripting in the public booking_message view when rendering the stored disable_booking_message setting. A remote privileged user can store malicious HTML or JavaScript in this field to execute arbitrary JavaScript in a victim's browser.
User interaction is required to open the public booking page while disabled-booking mode is enabled.
6) Authorization bypass through user-controlled key (CVE-ID: CVE-2026-52837)
CWE-ID: CWE-639 - Authorization Bypass Through User-Controlled Key
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:U/U:Green
The vulnerability allows a remote attacker to disclose sensitive information.
The vulnerability exists due to authorization bypass through user-controlled key in the booking reschedule view when handling a GET request to /index.php/booking/reschedule/{appointment_hash}. A remote attacker can send a request with a valid appointment hash to disclose sensitive information.
The response embeds the full customer record as inline JavaScript, exposing fields beyond those required by the reschedule interface.
7) Information disclosure (CVE-ID: N/A)
CWE-ID: CWE-200 - Exposure of sensitive information to an unauthorized actor
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:U/U:Clear
The vulnerability allows a remote user to modify or delete other users' appointments.
The vulnerability exists due to exposure of sensitive information to an unauthorized actor in the customers search endpoint when handling authenticated search requests. A remote user can obtain appointment hashes belonging to other users and reuse them to modify or delete other users' appointments.
The exposed hashes can also be used to view appointment information through appointment management functionality.
Remediation
Install update from vendor's website.
References
- https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-54v4-4685-vwrj
- https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-8hm4-r66f-29wr
- https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-pm5p-7w5h-jm5q
- https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-w8xc-8g92-v77h
- https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-996f-334j-67g7
- https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-xgr6-pqjv-3pf8
- https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-4vmm-5qvc-w5p7