Description
OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to 1.1.1, POST /api/auth/passkeys accepts a request-body userId and attacker-supplied passkey without an authenticated session, does not call WebAuthnService.verifyRegistration, and does not bind enrollment to locals.user.id. An unauthenticated attacker who knows the public tenant ID and the target staff email can use the public booking bootstrap and GET /api/tenants/[id]/appointments/staff-public-keys to obtain candidate userId values. The attacker first causes UserService.addAdditionalPasskey to store a controlled public key for a candidate userId, then attempts login with the target email; the login check compares verificationResult.userId with the email-resolved account and reveals whether the injected credential belongs to that target. Repeating this injection-before-login sequence identifies the matching userId, and the normal login endpoint accepts the attacker's assertion for the stored key and creates a STAFF session. The session can expose tenant data and reveal TENANT_ADMIN identifiers for further takeover; GLOBAL_ADMIN accounts are not reachable through this tenant-scoped path. A hijacked TENANT_ADMIN can modify or delete tenant resources and key shares, potentially making appointment data permanently undecryptable and taking booking services offline. This issue is fixed in version 1.1.1.
Published: 2026-09-17
Score: 9.8 Critical
EPSS: < 1% Very Low
KEV: No
Impact: Account takeover via unauthenticated WebAuthn passkey injection
Action: Immediate Patch
AI Analysis

Impact

A highly critical vulnerability exists in OpenReception's appointment booking software, allowing an unauthenticated attacker to inject a WebAuthn passkey for a chosen user. The flaw is present in POST /api/auth/passkeys before version 1.1.1, where the system neither verifies the supplied credential with WebAuthnService.verifyRegistration nor ties the enrollment to the currently authenticated user's session. By forging a passkey tied to a target staff account, the attacker can then perform a login attempt that, if the verificationResult.userId matches the account derived from the target's email, succeeds and creates a STAFF session. The vulnerability thus enables full account takeover and, through the held session, permits access to tenant data and the privilege of becoming a TENANT_ADMIN. The affected tenants can modify or delete critical data, potentially making appointment records permanently unreadable and disrupting booking services. This addresses CWE‑306, which relates to missing authentication for privileged operations.

Affected Systems

The vulnerability affects the open-reception:appointment-booking-software platform in all releases prior to version 1.1.1. The affected components include the API endpoints POST /api/auth/passkeys, GET /api/tenants/[id]/appointments/staff-public-keys, and the user management pathways that process added passkeys. Any deployment of the software that does not apply the v1.1.1 hotfix remains vulnerable. The software is delivered as a public web service; no specific operating system or platform was stated, so any environment hosting the app is potentially at risk.

Risk and Exploitability

The severity is CVSS 9.8, indicating critical risk. The EPSS score is below 1 %, suggesting low current exploitation likelihood, yet the simplicity of the attack (HTTP POST without authentication) and the high impact make it a significant threat. The vulnerability is not listed in the CISA KEV catalog. An attacker only requires knowledge of a public tenant ID and a target staff email, both of which are publicly visible through the booking bootstrap and the staff-public-keys endpoint. Once those are known, the attacker can inject a passkey, discover the correct userId, and log in to obtain staff or tenant‑admin privileges. Therefore, the overall risk is high and warrants immediate remediation.

Generated by OpenCVE AI on September 19, 2026 at 01:31 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the software to version 1.1.1 or later, which introduces verification of passkeys and binds enrollment to the authenticated user.
  • If the upgrade cannot be applied immediately, suppress unauthenticated access to POST /​api​/auth​/passkeys or disable external passkey enrollment until a patch is installed.
  • Enable monitoring and audit for unexpected POST‑request attempts to the passkeys endpoint, and review tenant logs for unauthorized passkey creation or login attempts.

Generated by OpenCVE AI on September 19, 2026 at 01:31 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 18 Sep 2026 13:00:00 +0000

Type Values Removed Values Added
First Time appeared Open-reception
Open-reception appointment-booking-software
Vendors & Products Open-reception
Open-reception appointment-booking-software

Thu, 17 Sep 2026 20:30:00 +0000

Type Values Removed Values Added
Description OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to 1.1.1, POST /api/auth/passkeys accepts a request-body userId and attacker-supplied passkey without an authenticated session, does not call WebAuthnService.verifyRegistration, and does not bind enrollment to locals.user.id. An unauthenticated attacker who knows the public tenant ID and the target staff email can use the public booking bootstrap and GET /api/tenants/[id]/appointments/staff-public-keys to obtain candidate userId values. The attacker first causes UserService.addAdditionalPasskey to store a controlled public key for a candidate userId, then attempts login with the target email; the login check compares verificationResult.userId with the email-resolved account and reveals whether the injected credential belongs to that target. Repeating this injection-before-login sequence identifies the matching userId, and the normal login endpoint accepts the attacker's assertion for the stored key and creates a STAFF session. The session can expose tenant data and reveal TENANT_ADMIN identifiers for further takeover; GLOBAL_ADMIN accounts are not reachable through this tenant-scoped path. A hijacked TENANT_ADMIN can modify or delete tenant resources and key shares, potentially making appointment data permanently undecryptable and taking booking services offline. This issue is fixed in version 1.1.1.
Title OpenReception: Unauthenticated WebAuthn passkey injection via `POST /api/auth/passkeys` leads to account takeover
Weaknesses CWE-306
References
Metrics cvssV3_1

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


Subscriptions

Open-reception Appointment-booking-software
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-17T20:07:24.631Z

Reserved: 2026-06-15T15:30:40.318Z

Link: CVE-2026-54460

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-17T21:17:15.557

Modified: 2026-09-17T21:17:15.557

Link: CVE-2026-54460

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-19T01:45:16Z

Weaknesses
  • CWE-306

    Missing Authentication for Critical Function