Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Network-reachable unauthenticated public endpoint; no special conditions; confidentiality limited to metadata disclosure only; no integrity or availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
3DescriptionCVE.org
OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.5, the unauthenticated /api/tenants/{id}/schedule endpoint returns every non-archived channel for a tenant regardless of the channel's isPublic flag. Channels marked isPublic = false are intended to be invisible to public callers; the dashboard creates them deliberately to hide internal-only services from the patient booking UI. The schedule endpoint ignores the flag entirely and discloses channel names, descriptions, IDs, agent associations, pause status, confirmation requirements, and computed slot availability for the requested date range. The asymmetry between addAppointmentToTunnel (which enforces eq(channel.isPublic, true)) and the schedule endpoint (which does not) confirms the design intent: private channels exist as a real access boundary in the booking flow, just not in the schedule disclosure. Version 1.0.5 patches the issue.
AnalysisAI
Unauthenticated information disclosure in OpenReception appointment-booking-software prior to version 1.0.5 exposes private channel metadata through the public /api/tenants/{id}/schedule endpoint, bypassing the isPublic flag that governs channel visibility in the booking UI. Any caller with a valid tenant ID can retrieve channel names, descriptions, IDs, agent associations, pause status, confirmation requirements, and computed slot availability for channels deliberately configured as internal-only - data that the product's own design intends to hide from public callers. No public exploit has been identified and the vulnerability is not listed in CISA KEV, but the CVSS vector (AV:N/AC:L/PR:N/UI:N) confirms trivial unauthenticated reachability requiring no special conditions.
Technical ContextAI
OpenReception is a SvelteKit-based end-to-end encrypted appointment booking platform. The vulnerable component is src/routes/api/tenants/[id]/schedule/+server.ts, a public REST handler that assembles per-tenant channel schedules. CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) applies: the endpoint constructs its response by iterating all non-archived tenant channels without applying the isPublic filter. The design asymmetry is confirmed by source code: addAppointmentToTunnel enforces eq(channel.isPublic, true) at booking time, but the schedule handler lacked the equivalent .filter(([_, channelData]) => channelData.channel.isPublic) guard until the 1.0.5 patch commit (f47320dd). The affected version range per EUVD is appointment-booking-software < 1.0.5.
RemediationAI
Upgrade to OpenReception appointment-booking-software version 1.0.5, which introduces a .filter(([_, channelData]) => channelData.channel.isPublic) guard in the schedule endpoint response, aligning it with the existing isPublic enforcement in addAppointmentToTunnel. The patch commit is available at https://github.com/open-reception/appointment-booking-software/commit/f47320dd8a236750442a60cb32829b04e99dd8df and the security advisory at https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-v6fw-m2mg-5gr9. As a compensating control prior to patching, operators can restrict the /api/tenants/{id}/schedule endpoint to authenticated sessions via a reverse proxy or WAF rule; note that this may disrupt the intended public booking UI flow, which depends on this endpoint being unauthenticated for initial slot display. No other generic workarounds are applicable given the flaw is in application logic.
Same weakness CWE-200 – Information Exposure
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-54148