Skip to main content

OpenReception CVE-2026-48074

| EUVDEUVD-2026-54258 LOW
Incorrect Authorization (CWE-863)
2026-08-06 security-advisories@github.com
2.7
CVSS 3.1 · Vendor: github

Severity by source

Vendor (github) PRIMARY
2.7 LOW
AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:L/A:N
vuln.today AI
4.1 MEDIUM

S:C selected over NVD's S:U because integrity impact crosses tenant security authority boundaries; PR:H confirmed by TENANT_ADMIN requirement; no confidentiality or availability impact applies.

3.1 AV:N/AC:L/PR:H/UI:N/S:C/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

Lifecycle Timeline

3
Source Code Evidence Fetched
Aug 06, 2026 - 23:28 vuln.today
Analysis Generated
Aug 06, 2026 - 23:28 vuln.today
Patch available
Aug 06, 2026 - 23:03 EUVD

DescriptionCVE.org

OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.6, when a TENANT_ADMIN deletes an existing staff user, the underlying StaffService.deleteStaffMember() runs an additional invite cleanup that deletes from the central user_invite table by email. The email clause has no tenantId predicate. Any pending invite in any tenant that shares the deleted staff's email is removed. A TENANT_ADMIN of tenant A who deletes a staff record with email victim[@]example[.]com also deletes the pending invite for victim[@]example[.]com in tenant B, even though they have no relationship to tenant B. The user-side delete is correctly scoped (eq(user.id, staffId), eq(user.tenantId, tenantId)), and the pending-invite-only delete path (when staffId is itself an invite ID) is also tenant-scoped. The bug is specifically in the invite cleanup that runs as a side effect of deleting an existing staff user. Version 1.0.6 patches the issue.

AnalysisAI

Cross-tenant invite deletion in OpenReception's appointment booking software (prior to 1.0.6) allows an authenticated TENANT_ADMIN to destroy pending onboarding invites belonging to unrelated tenants on the same platform instance. The flaw exists because the invite cleanup query inside StaffService.deleteStaffMember() matches only on email address without constraining to the acting tenant's ID, causing any staff deletion to silently cascade-delete matching invites across all tenants. No active exploitation has been identified and no public exploit code exists; the issue is fully remediated in version 1.0.6 via a single ORM predicate addition.

Technical ContextAI

The vulnerability is in src/lib/server/services/staff-service.ts within the StaffService.deleteStaffMember() method of OpenReception's TypeScript/Node.js backend. The application uses a query-builder ORM (evidenced by eq(), or(), and and() helper functions visible in the commit diff). The user_invite table stores pending invitations for all tenants in a shared schema. The secondary cleanup query - intended to remove orphaned invites when a staff member is deleted - used OR(createdUserId = staffId, email = userToDelete.email) without an enclosing AND(tenantId = tenantId) constraint. In a multi-tenant SaaS architecture, this permits unscoped DELETE operations across the entire shared table. CWE-863 (Incorrect Authorization) precisely describes the root cause: the system executes a privileged data-mutation action that exceeds the requesting principal's authorization scope. The fix in commit 5e77fd1df4262d09bfa6b59acfec4f66408de570 wraps the OR clause inside AND(eq(userInvite.tenantId, tenantId), OR(...)), correctly bounding the cleanup to the acting tenant.

RemediationAI

Upgrade OpenReception appointment-booking-software to version 1.0.6 or later, which is confirmed as the patched release per EUVD-2026-54258 and GitHub Security Advisory GHSA-6f8g-wfxp-mqxw (https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-6f8g-wfxp-mqxw). The underlying fix is applied in commit 5e77fd1df4262d09bfa6b59acfec4f66408de570. If an immediate upgrade is not feasible, a compensating control would be to revoke or restrict TENANT_ADMIN accounts' ability to perform staff deletions at the application layer or via network access control to the relevant API endpoint - this trades off routine administrative capability and does not fully eliminate risk if the endpoint cannot be blocked selectively. No other workaround eliminates the cross-tenant data leakage path short of patching.

Share

CVE-2026-48074 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy