Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1336 CNY

100%

CVE-2026-48088— OpenReception vulnerable to unauthenticated staff crypto poisoning that breaks E2E recipient directory

Quick assessment

Affected
open-reception appointment-booking-software
Exploitation
Public or AI PoC available; prioritize validation
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

open-reception appointment-booking-software是open-reception组织的一款预约安排软件。 open-reception appointment-booking-software 1.0.4之前版本存在授权问题漏洞,该漏洞源于对 路由的身份验证缺失及对ML-KEM-768公钥等字段验证不足,可能导致未经身份验证的攻击者注册为额外加密接收者,获取预约数

CVSS 9.4 · Critical EPSS 0.29% · P22

Affected Version Matrix 1

VendorProduct Version RangeStatus
open-reception appointment-booking-software < 1.0.4 affected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-48088

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
OpenReception vulnerable to unauthenticated staff crypto poisoning that breaks E2E recipient directory
Source: CVE Program / CVE List V5
Vulnerability Description
OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.4, the route `POST /api/tenants/{tenantId}/staff/{staffId}/crypto` accepts and stores attacker-controlled ML-KEM-768 public keys against any tenant on the platform without authentication. The handler logs an "Unauthorized crypto key storage attempt" warning when neither a session nor a registration cookie is present, then proceeds to insert the row regardless. The platform's E2E claim that "even administrators cannot view sensitive information" is broken: any unauthenticated network attacker can register themselves as an additional encryption recipient for any tenant's future patient appointments. A second variant of the bug suppresses the unauthorized-warning log entry. The Zod schema makes the `email` field optional. When the request body omits `email` and the request carries no registration cookie, the comparison `registrationEmail === email` becomes `undefined === undefined`, which evaluates to `true`. The handler treats the request as a legitimate registration flow, skips the warning entirely, and stores the row. Successful storage is still recorded as an `[info]` log line, but the security-relevant warning that operators are most likely to monitor or alert on is gone. The `staff_crypto` table has no unique constraint on `user_id`, so an arbitrary number of attacker rows can coexist for the same staff identifier and all return as `is_active=true`. The supplied `staffId` does not need to match any existing user or pending invite. Schema validation on `passkeyId`, `publicKey`, and `privateKeyShare` is also weak: the literal string `<placeholder-base64>` was accepted, indicating no length, format, or cryptographic-validity check beyond field presence. This weakness is independent of the auth bypass but compounds it: a poisoned directory can also be filled with malformed entries that break legitimate booking flows. The injected key is consumed by the public booking flow. After completing the unauthenticated `bootstrap-challenge` and `bootstrap-verify` ceremony as a "patient", the resulting `bookingAccessToken` is accepted by `GET /api/tenants/{id}/appointments/staff-public-keys`, which returns the attacker-controlled keys alongside any legitimate ones. A new appointment encrypts its tunnel key with ML-KEM to all listed recipients, so the attacker becomes a co-recipient of the encryption and can decapsulate the tunnel key with the matching secret. From there, all appointment payloads for that booking are decryptable. Version 1.0.4 patches the issue.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
Source: CVE Program / CVE List V5
Vulnerability Type
授权机制缺失
Source: CVE Program / CVE List V5
Vulnerability Title
open-reception appointment-booking-software 授权问题漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
open-reception appointment-booking-software是open-reception组织的一款预约安排软件。 open-reception appointment-booking-software 1.0.4之前版本存在授权问题漏洞,该漏洞源于对 `POST /api/tenants/{tenantId}/staff/{staffId}/crypto` 路由的身份验证缺失及对ML-KEM-768公钥等字段验证不足,可能导致未经身份验证的攻击者注册为额外加密接收者,获取预约数
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
open-reception appointment-booking-software < 1.0.4 -

II. Public POCs for CVE-2026-48088

# POC Description Source Link Shenlong Link
AI-Generated POC Premium
Qwen3.6-35B-A3B · 7330 chars
Pro+ exclusive includes:
Vulnerability reproduction recording (real sandbox build + trigger, exclusive)
In-depth vulnerability mechanism
Trigger conditions & impact
Full executable POC code
Exploit chain & mitigation
POC zip download
100+ AI POC generations per month

III. Intelligence Information for CVE-2026-48088

登录查看更多情报信息。

Patches & Fixes for CVE-2026-48088 (1)

Vendor Advisories for CVE-2026-48088 (1)

Same Patch Batch · open-reception · 2026-08-06 · 16 CVEs total

CVE-2026-48086 9.9 CRITICAL OpenReception: Tenant admin self-promotes to GLOBAL_ADMIN
CVE-2026-48087 9.8 CRITICAL OpenReception: WebAuthn passkey injection allows account takeover
CVE-2026-48085 9.8 CRITICAL OpenReception has unauthenticated GLOBAL_ADMIN account creation post-bootstrap
CVE-2026-48081 8.1 HIGH OpenReception vulnerable to stored click-triggered XSS via javascript: tenant links render
CVE-2026-48080 8.0 HIGH OpenReception's tenant detail endpoint discloses live PostgreSQL connection string, superu
CVE-2026-48084 7.4 HIGH OpenReception doesn't rate limit passphrase login attempts
CVE-2026-48079 7.4 HIGH OpenReception's logout page clears local access_token before server-side revocation, leavi
CVE-2026-48076 6.5 MEDIUM OpenReception's bootstrap booking flow allows unauthenticated booking on isPublic=false ch
CVE-2026-48083 6.5 MEDIUM OpenReception: Unauthenticated POST /api/log accepts arbitrary content with CRLF injection
CVE-2026-48075 6.5 MEDIUM OpenReception's unauthenticated add-to-tunnel endpoint accepts arbitrary appointment injec
CVE-2026-48071 5.8 MEDIUM OpenReception's client PIN challenge throttle is keyed by emailHash only, allowing cross-t
CVE-2026-48078 5.3 MEDIUM OpenReception's schedule endpoint discloses isPublic=false channels and slot availability
CVE-2026-48077 5.3 MEDIUM OpenReception: GET appointment by ID returns full appointment record without authorization
CVE-2026-48082 3.7 LOW OpenReception's bootstrap challenge proof-of-work difficulty hardcoded to 16 bits, which e
CVE-2026-48074 2.7 LOW OpenReception: Staff deletion removes pending invites cross-tenant by email match

IV. Related Vulnerabilities

V. Comments for CVE-2026-48088

No comments yet


Leave a comment