Executive brief
OpenReception is an end-to-end encrypted appointment booking platform used to manage sensitive patient and staff scheduling data. Prior to version 1.0.4, an unauthenticated attacker can register malicious encryption keys for any tenant without authorization, making themselves a co-recipient of all future appointments' encryption and enabling full decryption of patient data. This completely defeats the platform's core security promise that even administrators cannot access sensitive appointment information.
Technical details
The vulnerability is an authentication bypass combined with weak schema validation in the `POST /api/tenants/{tenantId}/staff/{staffId}/crypto` endpoint. The handler logs an "Unauthorized crypto key storage attempt" warning when no session or registration cookie is present, then proceeds to store the attacker-controlled ML-KEM-768 public key regardless. A second bypass variant exploits the optional `email` field: when omitted alongside missing cookies, the comparison `registrationEmail === undefined` evaluates to `true`, skipping the warning log entirely. The `staff_crypto` table lacks unique constraints on `user_id`, allowing multiple attacker rows per staff ID all marked `is_active=true`. Schema validation on cryptographic fields is minimal (literal strings like `<placeholder-base64>` are accepted). The injected keys are consumed by the public appointment booking flow and used to encrypt tunnel keys via ML-KEM to all stored recipients, enabling the attacker to decrypt all appointment payloads. Version 1.0.4 patches the issue; no patches are available for earlier versions.
Affected products
- OpenReception appointment booking software prior to 1.0.4
Timeline
- 2026-08-06: disclosed: CVE-2026-48088 published
- 2026: patched: Fixed in version 1.0.4