Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid credentials for own tenant
-
DeliveryCraft HTTP /sql request with foreign Surreal-NS/Surreal-DB headers
-
ExploitBypass missing can_access_ns_db check in check_auth
-
ExecutionSession bound to victim namespace/database
-
ImpactRead, create and modify cross-tenant records
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Requires the SurrealDB HTTP interface exposed and a valid Database-level or Namespace-level account (PR:L) - the attacker must already authenticate as some tenant user. Exploitation is meaningful only in multi-tenant deployments where more than one namespace/database shares the instance, so a foreign tenant exists to pivot into. The technique abuses the split between the Surreal-Auth-NS/Surreal-Auth-DB (verified) and Surreal-NS/Surreal-DB (context-selecting) headers on HTTP requests. Limiting factors: Root and anonymous (Level::No) principals are unaffected because they are already unrestricted by can_access_ns_db, and the missing check only mattered once both a namespace and database were selected. No user interaction is needed and no non-default configuration is required beyond running a shared multi-tenant instance on versions before 3.3.0. |
| Impact | This is a genuine, credible priority rather than an inflated high-CVSS score. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N, VC:H/VI:H/VA:N) is internally consistent with the description and confirmed by the fix commit: a network-reachable HTTP endpoint, low complexity, requires only low privileges (a valid credential for one tenant), no user interaction, and yields high confidentiality and integrity impact with no availability impact. CWE-639 (authorization bypass through a user-controlled key) matches exactly - check_auth() authenticates against the Surreal-Auth-NS/Surreal-Auth-DB headers but builds the session context from the separate, attacker-controlled Surreal-NS/Surreal-DB headers without an access check. No EPSS score, no CISA KEV listing, and no public POC were provided, so exploitation status is: no public exploit identified at time of analysis. However, the vulnerability is trivially reproducible (the fix's own regression tests demonstrate the header-pivot with plain HTTP requests), and any competent attacker with a single tenant account could reconstruct it, so the absence of a published POC should not lower urgency for multi-tenant operators. Note the tag says 'Authentication Bypass' but the attacker is in fact authenticated (PR:L) - this is an authorization / cross-tenant access-control bypass, so the tag is imprecise. |
| Exploit ScenarioDerived | In a shared multi-tenant SurrealDB deployment, an attacker who legitimately holds Database- or Namespace-level credentials for their own tenant sends an HTTP /sql request presenting their real credentials in the Surreal-Auth-NS/Surreal-Auth-DB headers while setting Surreal-NS/Surreal-DB to a victim tenant's namespace and database. The session is built against the attacker-chosen context without an access check, so queries execute against the foreign tenant and can read, create, and modify its records. No public POC is provided, but the vendor's regression tests reproduce the pivot with ordinary HTTP requests. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 29, 2026
Cross-tenant data access in SurrealDB before 3.3.0 allows a user holding a valid Database- or Namespace-level account to read, create, and modify records in a different tenant's namespace or database on the same instance. The flaw lies in HTTP session construction: check_auth() validates Basic credentials against the Surreal-Auth-NS/Surreal-Auth-DB headers but then builds the session from the separately supplied Surreal-NS/Surreal-DB headers without verifying that the authenticated principal may access that context, so an attacker simply points the context headers at a foreign tenant. Exploitation requires remote access to the SurrealDB HTTP interface plus an already-valid low-privilege tenant login (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N, 8.6 on CVSS 4.0); no public exploit code has been identified at time of analysis, but the impact is high in any shared multi-tenant deployment and is fully resolved by upgrading to 3.3.0.
RemediationAI
Vendor-released patch: upgrade to SurrealDB 3.3.0, which contains upstream commit 5000e233b4a8b96689c82715c172061dcf711d31 enforcing the can_access_ns_db() check on the Surreal-NS/Surreal-DB context headers; consult GHSA-vx2p-7hhm-wv62 and the v3.3.0 release notes before rolling out. If immediate upgrade is not possible, the highest-value compensating control is to stop sharing a single instance across mutually untrusted tenants - deploy one SurrealDB instance (or at minimum one namespace with no separate tenant databases) per trust boundary, which removes the cross-tenant pivot target entirely but increases operational and resource overhead. Because exploitation requires a valid Database- or Namespace-level login, rotate credentials and audit existing tenant accounts for unexpected scope, and treat any recent possession of a low-privilege tenant credential as a potential compromise: review access logs on the HTTP endpoint for sessions whose Surreal-Auth-NS/Surreal-Auth-DB differs from Surreal-NS/Surreal-DB. Restricting network access to the HTTP listener (default port 8000) to trusted clients, and disabling anonymous/guest access, reduces the attack surface but does not fix the boundary logic and offers no protection against a legitimate but malicious tenant - note that root and anonymous principals are unaffected by the missing check because they are already unrestricted. After upgrading, validation can be performed by confirming that cross-tenant header requests now return HTTP 401, as asserted by the upstream regression test.
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
SurrealDB is a multi-model database whose namespace/database hierarchy provides logical tenant isolation, and the HTTP API accepts per-request headers that select the session context. Source review of the fix commit 5000e233b4a8b96689c82715c172061dcf711d31 (file surrealdb/server/src/ntw/auth.rs at tag v3.2.4) shows the root cause precisely: Basic authentication verifies the supplied credentials against the Surreal-Auth-NS and Surreal-Auth-DB headers, and a bearer token carries its own baked-in namespace/database, but the resulting Session is then constructed using the independent Surreal-NS and Surreal-DB headers without any call to can_access_ns_db(). This is CWE-639 (Authorization Bypass Through User-Controlled Key): the namespace/database selector in the request headers is an attacker-controlled key that the authorization decision never checks, producing an IDOR-style horizontal privilege escalation across tenants. The patch adds a guard that, once both a namespace and a database are selected, rejects the request unless au.can_access_ns_db(ns, db) succeeds. Root principals and anonymous (Level::No) sessions are deliberately exempt because they are already unrestricted by can_access_ns_db, and the check only becomes relevant when both context values are supplied - consistent with regression tests added in tests/http_integration.rs covering cross-database pivots, cross-namespace pivots, legitimate same-tenant access (HTTP 200), and root context selection.
Know when Rust gets its next vulnerability
- 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Network HTTP endpoint (AV:N), trivial header manipulation (AC:L), requires a valid tenant credential (PR:L), no interaction; high confidentiality and integrity from cross-tenant read/write, no availability impact.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
2DescriptionCVE.org
SurrealDB before 3.3.0 contains an authorization bypass in HTTP session construction where check_auth() verifies credentials against Surreal-Auth-NS and Surreal-Auth-DB headers but constructs sessions using Surreal-NS and Surreal-DB headers without validating access permissions. Attackers can authenticate as a user from one tenant while selecting another tenant's namespace and database to read, create, and modify records across tenant boundaries.
Technical POC Analysis
Evidence base: GitHub advisory GHSA-vx2p-7hhm-wv62 plus the four fix commit subjects it lists.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
SurrealDB, a multi-model database, contains a high-severity cross-tenant data access vulnerability (CVE-2026-102876) that allows any authenticated low-privilege tenant user to read, create, and modify records in other tenants' namespaces or databases on the same instance. This flaw breaks the fundamental security boundary in shared deployments, potentially exposing sensitive customer data, violating data isolation guarantees, and leading to regulatory and reputational damage. Organizations using SurrealDB in multi-tenant or shared environments should prioritize remediation by upgrading to version 3.3.0.
Apply vendor 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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Command injection via Windows CreateProcess argument parsing affects multiple language runtimes and tooling (Node.js, PH
In the standard library in Rust before 1.52.0, a double free can occur in the Vec::from_iter function if freeing the ele
In the standard library in Rust before 1.52.0, the Zip implementation can report an incorrect size due to an integer ove
Stored cross-site scripting and open redirect in Warpgate's SSO endpoints (versions prior to 0.25.5) allow an unauthenti
library/std/src/net/parser.rs in Rust before 1.53.0 does not properly consider extraneous zero characters at the beginni
Denial of service in the Vector observability pipeline's `logstash` source (versions 0.15.0 through 0.56.x) allows a rem
The Rust Programming Language Standard Library 1.34.x before 1.34.2 contains a stabilized method which, if overridden, c
In the standard library in Rust before 1.52.0, the Zip implementation calls __iterator_get_unchecked() more than once fo
In the standard library in Rust before 1.50.0, read_to_end() does not validate the return value from Read in an unsafe c
Cargo prior to Rust 1.26.0 may download the wrong dependency if your package.toml file uses the `package` configuration
Rust is a programming language. Rated critical severity (CVSS 10.0), this vulnerability is remotely exploitable, no auth
The Rust Programming Language Standard Library version 1.29.0, 1.28.0, 1.27.2, 1.27.1, 127.0, 126.2, 126.1, 126.0 contai
EUVD-2026-89411
GHSA-xjq6-rqgg-x5j7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB