Advisory · CVE-2026-102876
SurrealDB header confusion lets one tenant read another's data
SurrealDB before 3.3.0 verifies credentials against the Surreal-Auth-NS and Surreal-Auth-DB headers but builds the session from the unauthenticated Surreal-NS and Surreal-DB headers, letting an authenticated user cross tenant boundaries.
- Vendor
- SurrealDB
- Product
- SurrealDB
- Identifier / CWE
- CVE-2026-102876
CWE-639 - Action timing
- Immediate
Explain it like I’m five
SurrealDB checks your ID badge against one set of door labels, but then walks you through a different door you named yourself. An authenticated user can point at another tenant's door and be let into their rooms.
- 01Authenticated request
An attacker with a valid SurrealDB account in one tenant sends an HTTP request.
- 02Header mismatch
check_auth() validates credentials against Surreal-Auth-NS and Surreal-Auth-DB.
- 03Session built from other headers
The session is constructed from the unvalidated Surreal-NS and Surreal-DB headers instead.
- 04Cross-tenant access
The attacker reads, creates, and modifies records in another tenant's namespace and database.
What happened
A cross-tenant authorization bypass was disclosed in SurrealDB. Versions before 3.3.0 verify credentials against the Surreal-Auth-NS and Surreal-Auth-DB headers but construct sessions from the separate Surreal-NS and Surreal-DB headers without validating access permissions. An attacker who is authenticated as a user of one tenant can select another tenant’s namespace and database to read, create, and modify records. It carries a CVSS 4.0 score of 8.6 (high).
What to do
- Upgrade SurrealDB to 3.3.0 or later on all nodes.
- Treat the exposure window as a data-access event, not just a patch task.
- Review query and access logs for sessions whose auth namespace and selected namespace diverged.
- Identify which records were read or modified across tenant boundaries during the window.
- Notify affected tenants and rotate credentials where cross-tenant access cannot be excluded.
Management note
Multi-tenant isolation is the contract SurrealDB sells, and this flaw breaks it with nothing more than HTTP headers. If you host other people’s data on affected versions, the incident question is not whether you can patch, but whether tenant data stayed separated while you were exposed.