Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as TENANT_ADMIN
-
DeliverySend PUT to staff role endpoint
-
ExploitSet role to GLOBAL_ADMIN
-
ExecutionRe-login to refresh JWT
-
ImpactAccess all tenants platform-wide
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated account holding the TENANT_ADMIN role on the target OpenReception instance (any tenant on the hosted service). The concrete prerequisite is access to the staff role-update endpoint PUT /api/tenants/[id]/staff/[staffId] with a request body setting role to the GLOBAL_ADMIN enum value; no non-default configuration, feature flag, or user interaction is needed, and the target can be the attacker's own account or any colleague within the same tenant. Limiting factors: the attacker must already possess valid tenant-admin credentials (not unauthenticated), the elevated role only takes effect after re-login because the role is carried in the JWT, and the cross-tenant impact is only realized on multi-tenant (hosted) deployments - on a single-tenant self-hosted install it is a lower-impact local privilege escalation. Note that plaintext appointment contents remain protected by the E2E model unless this is chained with the staff-crypto poisoning issue (V-4) or staff-passkey hijacking (V-1). |
| Impact | The CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H yields 9.9 (Critical), and the metrics are internally consistent with the description: network-reachable API (AV:N), a single low-complexity request (AC:L), only tenant-admin privileges required (PR:L), no victim interaction (UI:N), and a genuine scope change (S:C) because a tenant-scoped identity crosses into other tenants' security domains. The confidentiality/integrity/availability impacts are all High and well-justified given full platform administrative control. EPSS and KEV data were not provided; there is no evidence of active exploitation, so this should be treated as a high-priority latent risk rather than a confirmed in-the-wild threat. The main tempering factor is that exploitation requires an existing valid TENANT_ADMIN account - this is not an unauthenticated internet attack - but on the hosted multi-tenant service any single paying customer's admin becomes the adversary, which is a severe trust-boundary break. On single-tenant self-hosted installs the scope-change premium does not fully apply, lowering real-world impact to a local-tenant privilege escalation. |
| Exploit ScenarioDerived | A legitimate customer signs up for a tenant on the hosted OpenReception service and receives a normal TENANT_ADMIN account. They send one PUT request to their own tenant's staff endpoint setting their role (or a disposable collaborator's role) to GLOBAL_ADMIN, which passes schema validation and is accepted. After logging out and back in, their JWT now carries GLOBAL_ADMIN, granting full administrative control over every other tenant's configuration, users, staff records, and tenant lifecycle. No public exploit code is required - the request is a trivial role-field change. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 06, 2026
Privilege escalation in OpenReception's appointment booking platform (versions prior to 1.0.2) lets any TENANT_ADMIN promote an account to platform-wide GLOBAL_ADMIN with a single PUT request to the staff role-update endpoint. Because no policy check enforces that only an existing GLOBAL_ADMIN may grant that role, schema validation alone acts as the authorization gate, and after re-login the attacker's JWT carries platform-wide control over every tenant. No public exploit identified at time of analysis, but the fix is a one-line authorization guard, making the flaw trivially reproducible for anyone reading the GHSA advisory or patch commit.
RemediationAI
Vendor-released patch: upgrade to OpenReception 1.0.2, which adds an explicit authorization check rejecting any attempt to assign the GLOBAL_ADMIN role through the staff role-update endpoint (commit 8525d35a41c31078d9f01c62e9687e653cf1a494; advisory GHSA-5qfr-7q4g-3469). If you cannot upgrade immediately, apply the equivalent server-side guard yourself in src/routes/api/tenants/[id]/staff/[staffId]/+server.ts by rejecting PUT requests where role === "GLOBAL_ADMIN" unless the caller is already a GLOBAL_ADMIN - the trade-off is a manual code change that must be re-applied on redeploy. As a compensating control, audit the current staff/role table for any unexpected GLOBAL_ADMIN accounts and for tenant-admin-initiated promotions of colleague accounts (the handler also allows promoting other staff, which can leave the attacker's own audit trail clean), and restrict or monitor access to the tenant staff-management API. Revoke and re-issue JWTs and force re-login after remediation so any already-elevated tokens lose effect.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OpenReception is a SvelteKit-based, end-to-end encrypted, multi-tenant appointment booking service. The vulnerable code lives in the staff role-update handler at src/routes/api/tenants/[id]/staff/[staffId]/+server.ts (the PUT handler). The role field is a TypeScript/schema enum that includes GLOBAL_ADMIN, and the handler treated passing enum validation as sufficient authorization - a textbook CWE-269 (Improper Privilege Management) failure where a data-shape check is mistaken for an access-control decision. Roles are propagated through JWTs issued at login, so an elevated role only takes full effect after the attacker re-authenticates. The fix (commit 8525d35a41c31078d9f01c62e9687e653cf1a494) adds an explicit AuthorizationError thrown whenever updateData.role === "GLOBAL_ADMIN", blocking assignment of that role through this endpoint entirely.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network API reachable with one low-complexity request; only tenant-admin privileges needed (PR:L), no user interaction, and crossing into other tenants' domains justifies S:C with full C/I/A impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.2, a TENANT_ADMIN promotes themselves to platform-wide GLOBAL_ADMIN through a single PUT request. The role-update handler accepts the GLOBAL_ADMIN enum value from any tenant admin updating their own tenant's staff. No policy check enforces that "only an existing GLOBAL_ADMIN may grant GLOBAL_ADMIN", so the schema validation IS the authorization decision. After re-login, the JWT contains the new role and the formerly-tenant-scoped admin reaches every other tenant on the platform. On the hosted OpenReception service this is a scope-changed escalation: a single customer-side tenant administrator gains full platform-wide administrative control over all other tenants' configuration, users, staff records, operational metadata, and tenant lifecycle. Plaintext appointment contents remain subject to the E2E model unless chained with the staff-crypto poisoning issue (V-4) or with staff-passkey hijacking (V-1). On a single-tenant self-hosted deployment it is still a privilege escalation because TENANT_ADMIN should not be able to create new tenants, modify global configuration, or manage other administrators. The same handler also accepts updates targeted at any colleague within the tenant. A tenant admin can promote a separate collaborator account instead of themselves, leaving their own audit trail clean while the platform-wide breach happens through a separate identity. Version 1.0.2 fixes the issue.
Executive ViewAI
OpenReception's appointment booking platform (versions prior to 1.0.2) contains a critical privilege escalation flaw that allows tenant administrators to unilaterally promote their own accounts to platform-wide administrative control through a single API request. This threatens all organizations using affected versions by exposing complete system compromise and unrestricted access to all tenant booking data, customer information, and platform configurations by a single compromised admin account.
Immediately restrict TENANT_ADMIN role to only essential personnel with documented business justification; implement network access controls to limit API access to role-update endpoints from trusted administrative networks only; enable comprehensive audit logging and real-time alerting on all role modification events; require multi-factor authentication for any account with administrative access; establish weekly audit reports of role assignments and approval chains; consider temporarily disabling TENANT_ADMIN capabilities except for emergency break-glass access until vendor provides an authorized patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
EUVD-2026-54168
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB