CVE-2026-48080: OpenReception's tenant detail endpoint discloses live PostgreSQL connection string, superuser-scoped in the tested official deployment
OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.2, the GET /api/tenants/{id} endpoint returns the full tenant record to any authenticated TENANTADMIN of that tenant, including the databaseUrl field. This field contains the live PostgreSQL connection string the application uses to connect to that tenant's database. In the tested official docker-compose.prod.yml deployment, the connection string contained the user postgres with rolsuper=true and the plaintext password from secrets/postgrespassword.txt. Operators who configure a non-superuser PostgreSQL user via secrets/postgresuser.txt would expose a less privileged credential, but the disclosure of the connection string itself is independent of that choice. The same credential applies to every database managed by that PostgreSQL instance: the central appointmentbooking database, every per-tenant database (one per tenant), and the postgres administrative database. A TENANTADMIN of one tenant who can reach postgres:5432 (directly via internal network, indirectly via any SSRF, RCE, or file-read in the application) can read every other tenant's appointment ciphertexts, key shares, and metadata; read the central user table, including all GLOBALADMIN accounts, password hashes, and session records; modify or delete any data in any tenant database; and/or i a superuser-scoped deployment: use PostgreSQL's pgreadserverfiles, COPY ... FROM PROGRAM, and CREATE EXTENSION for further escalation inside the database container. This breaks the per-tenant database isolation that is otherwise the primary cross-tenant control in the application. The application code carefully scopes most queries to the calling tenant's database, but those scopings are irrelevant once the attacker holds the credentials that bypass the application entirely. Version 1.0.2 fixes the issue.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 1.0.2 - Configuration
In docker-compose.prod.yml, ensure the application’s PostgreSQL connection string does not use the superuser account (user 'postgres' with rolsuper=true). Configure a less-privileged PostgreSQL user via secrets/postgres_user.txt so that database access is least-privilege.
OpenReception deployment (tested official docker-compose.prod.yml) PostgreSQL connection string user = Use a non-superuser PostgreSQL role instead of the superuser 'postgres' with rolsuper=true
Event History
Frequently Asked Questions
What is the severity of CVE-2026-48080?
CVE-2026-48080 has a severity rating of high, with a score of 8.
What does CVE-2026-48080 disclose?
CVE-2026-48080 discloses a live PostgreSQL connection string for a tenant, which can include superuser privileges.
How do I fix CVE-2026-48080?
To fix CVE-2026-48080, upgrade to OpenReception version 1.0.2 or later, which addresses this vulnerability.
Which endpoint is vulnerable in CVE-2026-48080?
The vulnerable endpoint in CVE-2026-48080 is the `GET /api/tenants/{id}` endpoint.
Who is affected by CVE-2026-48080?
CVE-2026-48080 affects any authenticated `TENANT_ADMIN` user accessing the tenant detail endpoint before the fix.