Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as record user
-
DeliveryIdentify indexed restricted fields
-
ExploitIssue MATCHES / compound B-tree / KNN query
-
ExecutionObserve returned record-ID membership
-
ImpactInfer restricted field values
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
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 a valid authenticated SurrealDB record user holding table-level SELECT permission (PR:L), targeting a database whose schema defines a field-level restrictive (non-FULL) SELECT permission on a field AND an index covering that restricted field - specifically a FULLTEXT index (queried via @@/MATCHES), a compound B-tree index (queried with the restricted-field predicate plus a residual unrestricted-field predicate), or an HNSW vector index (queried via KNN <|k,ef|>). The vulnerable path is the streaming execution planner, which is the default for supported read-only statements in versions 3.1.0 up to (not including) 3.3.0. Limiting factors that reduce real-world exposure: the attacker must already have authenticated record-user access (no anonymous/remote-unauthenticated path); the deployment must actually use restrictive field-level SELECT permissions together with indexes on those restricted fields; a simple single-field restricted B-tree equality is NOT affected because that form retains the original predicate for re-evaluation (negative control); and disclosure is inferential (result-set membership/proximity oracle) rather than direct retrieval of the restricted value. |
| Impact | This is a medium-severity information-disclosure flaw, not a high-impact break: the CVE-record CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N) scores 5.3, and the GHSA's CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) agrees - network-reachable, low complexity, but requires an authenticated principal (PR:L) and yields only a low, confidentiality-only impact (VI/VA and I/A are N). The key risk-moderating signal is mechanism: the attacker is already a legitimate record user with table-level SELECT, and the flaw merely lets them use restricted-field indexes as a confirmation/proximity oracle (inferring which record IDs contain a guessed value, term, or nearest vector) rather than reading the restricted field directly - hence C:L rather than C:H. The vuln.today Decision label is 'this_month' (not act_now/emergency), consistent with a real-but-not-urgent issue. No CISA KEV listing and no EPSS score were supplied, so there is no evidence of active or probable widespread exploitation; however, a complete, recorded proof-of-concept is published in the GHSA advisory, so exploitability is demonstrated, not theoretical. Net: a genuine authorization-boundary defect worth patching on a normal cycle, but its blast radius is gated by authenticated access plus a specific schema configuration, so it is not a drop-everything internet-wide threat. One data conflict to verify: the advisory prose says 'No fixed version is available' and was confirmed on 3.3.0-nightly, while the structured package metadata and CVE title state the fix is in 3.3.0 - confirm the exact fixed build with the vendor. |
| Exploit ScenarioDerived | A multi-tenant application backs its data on SurrealDB and grants end users record-user access with field-level SELECT permissions that hide sensitive columns (e.g. password hints, secret tokens, or embeddings). An authenticated record user issues full-text MATCHES, compound B-tree, or HNSW KNN queries against those restricted fields and reads the returned record-ID membership to confirm guessed values or nearest vectors, even though direct SELECT still hides the field. A complete working PoC with recorded results is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Incorrect authorization in SurrealDB 3.1.0 through 3.2.x lets an authenticated record user recover restricted field values by inference: the default streaming execution planner selects FULLTEXT, compound B-tree and HNSW indexes built on fields whose field-level SELECT permission is not FULL, then drops the index-covered predicate instead of re-evaluating it against the permission-reduced document. Affected are deployments that combine restrictive field-level SELECT permissions with indexes on those fields; direct SELECT output continues to hide the values, but result-set membership and ordering act as a confirmation or nearest-neighbour oracle, so the impact is low-severity, confidentiality-only disclosure (CVSS 4.0 5.3 / CVSS 3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N, CWE-863/CWE-200). A public PoC reference exists (a reproduction script with recorded results in the GitHub advisory); it is not verified as working exploit code, and there is no CISA KEV listing.
RemediationAI
Upgrade to SurrealDB 3.3.0 or later: the advisory metadata lists the vulnerability range as >= 3.1.0, < 3.3.0 with fix in 3.3.0, although the GHSA text at the time of writing still stated that no fixed version was available and confirmed the flaw on a 3.3.0-nightly commit, so validate the fix on the exact build you deploy (track https://github.com/surrealdb/surrealdb/security/advisories/GHSA-x6mm-9295-rvph). Where an upgrade cannot be deployed immediately, the actionable compensating controls are schema-level: do not index fields whose field-level SELECT permission is restrictive - drop or avoid FULLTEXT, compound B-tree and HNSW indexes on any field defined with non-FULL SELECT permissions, accepting the query-performance cost of removing the index; alternatively raise the affected field's SELECT permission to FULL if record users are legitimately allowed to read it, accepting that the value then becomes directly readable; or tighten the table-level permissions (for example NONE or a WHERE filter) so untrusted record users cannot issue SELECT against tables containing restricted indexed fields, accepting reduced application functionality. Note that a simple single-field restricted B-tree equality is not exploitable because that form re-evaluates the predicate, so only compound B-tree, full-text MATCHES and KNN query shapes need to be considered when scoping workarounds.
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 applies authorization at two layers: table-level PERMISSIONS and per-field PERMISSIONS FOR select, where a field may be defined as not readable by record users while still being indexed. The legacy query planner enforces this boundary explicitly: in surrealdb/core/src/idx/planner/tree.rs:402-414 it skips any index whose columns reference a field with a non-FULL SELECT permission whenever permissions are being enforced, preventing index-only fast paths from short-circuiting document-level field reduction. The streaming planner, which is the default for supported read-only statements from 3.1.0 onward, resolves restricted field prefixes for ordering and union decisions but does not apply that guard when choosing index sources (IndexAnalyzer at core/src/exec/index/analysis.rs:19-77 does not receive field permission definitions, and core/src/exec/planner/select/mod.rs:1546-1711 selects the scan without re-checking). The root cause is CWE-863 (incorrect authorization), with CWE-200 information exposure as the effect: for MATCHES/@@ full-text queries plan_fulltext_search_source removes the predicate before constructing FullTextScan, so results are never re-tested against the reduced document; for compound B-tree predicates plan_btree_scan_source strips the restricted-field condition while a residual unrestricted condition still passes; for KNN queries plan_knn_search_source returns record IDs straight from the vector index, exposing proximity ordering. A single restricted-field equality is a negative control because that form retains the predicate for re-evaluation. The advisory frames this as an incomplete application of the restricted-index boundary previously fixed in GHSA-c8jx-96c9-8xrp and GHSA-h4h3-3rfj-x6fq.
Know when Surrealdb 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:L/VI:N/VA:N/SC:N/SI:N/SA:N
Authenticated record user over the network query interface (PR:L, AV:N, AC:L, no UI); only partial inferential confidentiality loss via an index oracle, so C:L and no integrity or availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
SurrealDB from 3.1.0 before 3.3.0 contains an incorrect authorization vulnerability that allows record users to infer restricted field values because the streaming planner uses indexes on fields with restrictive SELECT permissions. Attackers can issue full-text MATCHES, compound B-tree, or HNSW KNN queries against restricted fields to learn which records contain guessed values or nearest vectors.
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
Privilege escalation via second-order SurrealQL injection in SurrealDB before 2.0.5, 2.1.5, and 2.2.2 lets an authentica
Privilege escalation in SurrealDB before v3.1.0 lets unauthenticated attackers hijack the privileges of concurrently-act
Use-after-free in SurrealDB Core before 3.3.0 can crash or corrupt memory in Rust applications that embed the database a
Denial of service in SurrealDB before 3.1.0 lets an unauthenticated remote attacker crash the database with a single Web
Denial of service in SurrealDB before 3.1.0 lets an unauthenticated remote attacker crash the entire database process wi
Session hijacking in SurrealDB before 3.1.0 lets unauthenticated attackers enumerate attached session UUIDs through the
SurrealDB versions before 3.3.0 fail to validate a caller's authorization level when the SurrealQL USE statement switche
Cross-tenant data access in SurrealDB before 3.3.0 allows an authenticated namespace- or database-level SYSTEM user to b
Cross-tenant authorization bypass in SurrealDB before 3.2.0 lets any authenticated user reach custom API endpoints belon
Cross-user MCP session takeover in SurrealDB 3.1.0 through 3.2.x allows an authenticated holder of even a lowest-role JW
Arbitrary file read in SurrealDB before 3.1.5 lets an authenticated database user holding the EDITOR or OWNER role discl
Confused-deputy privilege escalation in SurrealDB before 2.5.0 and before 3.0.0-beta.3 lets a low-privileged user (e.g.
EUVD-2026-115950
GHSA-8x38-ppf2-349c
NVD
CVE.org
Exploit-DB