CVE-2026-52838: Easy!Appointments stored XSS in booking disabled message

CVE-2026-52838 · Severity: low · CVSS 3.1 · Published 2026-07-14

Easy!Appointments, an open-source appointment scheduling system, contains a security vulnerability that allows administrators to inject malicious scripts into the public booking page. By setting a custom 'booking disabled' message, an authorized user can execute code in the browsers of any unauthenticated visitor who views the page during maintenance. This could lead to website defacement, phishing of customer information, or unauthorized redirection to malicious websites.

Technologies: alextselegidis/easyappointments (Packagist). Vendors: Packagist.

Quick answers

Is CVE-2026-52838 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-52838 being exploited in the wild.
How severe is CVE-2026-52838?
Low severity, with a CVSS score of 3.1, published 14 July 2026.
Which products and versions are affected?
alextselegidis/easyappointments (Packagist) <= 1.5.2, ECOSYSTEM:introduced=0,last_affected=1.5.2.
Is there a fix for CVE-2026-52838?
A patch was published on 2026-06-15: Version 1.6.0 released Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-52838 attacked?
It is attacked over the network, in a web application.
Am I affected by CVE-2026-52838?
Check whether you run alextselegidis/easyappointments (Packagist) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

Technical details

A stored Cross-Site Scripting (XSS) vulnerability exists in Easy!Appointments versions 1.5.2 and earlier. The root cause is the lack of sanitization and output escaping for the 'disable_booking_message' configuration value. An authenticated administrator can submit raw HTML/JavaScript through the booking settings rich-text editor, which is persisted verbatim in the database. When the booking system is disabled, the 'Booking' controller retrieves this value and the 'booking_message' view renders it using the PHP short echo tag (<?=) without calling htmlspecialchars() or an equivalent escaping function. This allows for arbitrary script execution in the context of unauthenticated visitors. The issue is addressed in version 1.6.0.

Affected products

  • alextselegidis Easy!Appointments <= 1.5.2

Identifiers

  • CVE-2026-52838
  • GHSA-996f-334j-67g7

Timeline

  • 2026-05-25: disclosed: Vulnerability reported by Yash Shendge (ashrexon)
  • 2026-06-15: patched: Version 1.6.0 released
  • 2026-07-14: advisory: NVD publication date
  • 2026-07-29: advisory: GitHub Advisory published

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.