Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as user with table write+read
-
DeliveryCreate record then loop UPDATE v=[v] ~10^4+ times
-
ExploitIssue SELECT or EXPORT to hit recursion sink
-
ExecutionUnbounded recursion overflows thread stack
-
Impactpanic='abort' kills surreald, persistent DoS for all tenants
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
|
| Exploitation Conditions | Requires an authenticated SurrealDB account with ordinary table write AND read privileges - a scoped/record user with table write suffices (CVSS PR:L); it is not remote-unauthenticated. No non-default configuration is required: the advisory states default deployments are affected. The attacker must be able to issue write statements (UPDATE/CREATE) to accumulate a deeply nested value and then any read path (SELECT, INFO, or admin EXPORT) to trigger a sink. Limiting factors that temper real-world risk: valid credentials with write+read are mandatory; the attack needs roughly 10,000+ separate requests to build sufficient nesting depth to overflow the ~8 MiB thread stack; and impact is confined to availability (process abort / DoS) with no confidentiality or integrity effect. Aggravating factor: once written, the poisoned record causes persistent DoS surviving restart, re-crashing on every read/EXPORT until purged out-of-band. |
| Impact | Signals are internally consistent and point to a real but bounded priority. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and the GHSA advisory agree: this is a network-reachable, low-complexity, authenticated (PR:L) flaw whose only impact is availability (VA:H; VC:N/VI:N) - a denial of service, not data compromise or code execution. The vuln.today Decision label is 'this_week' (not act_now/emergency). KEV status is not listed in the input, so there is no confirmed active exploitation; EPSS is not provided, so exploitation probability cannot be quantified from this data. A documented proof of concept (the SQL accumulation steps) is published in the GHSA advisory, which raises practical exploitability above a theoretical issue. The notable aggravating factor beyond the raw 7.1 score is persistence and blast radius: the deeply nested value survives the write and re-crashes the whole surreald process (all namespaces/databases/tenants) on every subsequent SELECT/EXPORT until the poisoned record is purged out-of-band, and panic='abort' makes each overflow an unconditional process kill. Net: a credible this-week-tier, authenticated, persistent multi-tenant DoS - a genuine operational risk for anyone running SurrealDB before 3.3.0 with untrusted or scoped users, but not a critical RCE-class emergency. Missing data to flag: no EPSS score and no KEV entry in the input, so widespread-exploitation likelihood is unmeasured. |
| Exploit ScenarioDerived | An authenticated SurrealDB user holding only ordinary table write+read (even a scoped/record user) creates a record and repeatedly issues UPDATE statements wrapping a stored array inside itself (UPDATE deep:1 SET v=[v]) across ~10,000+ separate requests, each adding one nesting level and staying under all per-parse caps. A single subsequent SELECT or EXPORT then walks the value through a depth-unguarded recursion sink, overflowing the thread stack and aborting the entire surreald process for every tenant. A demonstrative PoC (the exact SQL sequence) is published in the GHSA-rpmq-gq3f-h6jg advisory; it is not verified as compiled working exploit code but is trivially scriptable. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
SurrealDB builds before 3.3.0 abort the entire surreald process when an authenticated user with ordinary table write and read privileges accumulates a deeply nested val::Value one level per request and then triggers a read. The upstream advisory publishes a SQL proof-of-concept sequence (create a record holding an empty array, repeat UPDATE deep:1 SET v = [v] roughly 10,000+ times, then SELECT it) that drives native recursion past the ~8 MiB thread stack limit; because surrealdb-core is compiled with panic = 'abort', the resulting stack overflow is an unconditional process abort affecting every namespace, database and tenant on the instance. Beyond that advisory PoC sequence no public exploit code was identified at time of analysis, and the attack remains credential-gated and request-intensive; the aggravating factor is persistence, since the poisoned record survives restart and re-crashes every subsequent read and the admin EXPORT until it is purged out-of-band.
RemediationAI
Upgrade SurrealDB to 3.3.0 or later, the version listed as fixed by the vendor and package metadata, per advisory GHSA-rpmq-gq3f-h6jg. The upstream fix direction is a single value-nesting depth cap enforced at all three value boundaries: convert_value_to_public_value (val/mod.rs:1169), Value::fmt_sql (val/mod.rs:608) and revision (de)serialize (catalog/record.rs:71,88), mirroring the existing parser recursion limits and the flatbuffers MAX_VERIFIER_DEPTH; no configuration-level workaround is described in the advisory, so patching is the documented remedy. Until an upgrade can be deployed, reduce exposure by restricting table write privileges to trusted roles, since exploitation requires a scoped or record-level account holding table write plus read - the trade-off is that legitimate bulk-load/ETL identities also lose write access and must be granted explicit, audited exceptions. Operationally, note that a poisoned record survives restart and re-crashes the normal read path and the admin EXPORT/backup, so recovery of an already-affected instance requires locating and purging the offending record out-of-band at the storage layer before normal service or backups can resume; that carries the trade-off of direct storage access outside the database engine and loss of the record's data.
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
The flaw is CWE-674 (uncontrolled recursion) in the value layer rather than in the query parser. Three post-parse code paths walk val::Value with no cumulative depth counter: convert_value_to_public_value (surrealdb/core/src/val/mod.rs:1169, via convert_array_to_public at :1256 and convert_object_to_public_map at :1274) on the universal query-result path; Value::fmt_sql (val/mod.rs:608, via Array::fmt_sql in val/array.rs:222) on the export/INFO path; and the revision 0.30.0 storage codec revision::to_vec / revision::from_slice (catalog/record.rs:71,88), which serializes and deserializes nested collections recursively. Existing recursion guards are per-parse or per-expression: object_recursion_limit=100, query_recursion_limit=20 and expr_recursion_limit=128 in the syn parser, plus max_computation_depth=120 enforced through Options::dive. Each read-modify-write step (UPDATE deep:1 SET v = [v]) adds exactly one structural level, so it never approaches those per-request limits, and the write path (kvs/tx.rs, catalog/record.rs) performs no cumulative value-depth or size check. Four previously published SurrealDB recursion advisories (GHSA-6r8p-hpg7-825g, GHSA-q8qp-67f9-wr3f, GHSA-q729-696q-g9pq, GHSA-jv2j-mqmw-xvv5) hardened the parser's Expr/Kind/JSON parse trees and do not cover these serialization sinks.
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:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable, low complexity, no user interaction; requires an authenticated table write+read user (PR:L); impact is availability-only process abort with no confidentiality or integrity effect.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
SurrealDB before 3.3.0 contains an unbounded recursion vulnerability that allows authenticated users to abort the surreald process by triggering stack overflow on deeply nested values. Attackers can repeatedly run UPDATE statements wrapping a stored array in itself, then SELECT or EXPORT it, causing persistent denial of service for all tenants.
Technical POC Analysis
CWE-674 (Uncontrolled Recursion).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
SurrealDB versions before 3.3.0 are vulnerable to a process-wide crash triggered by any authenticated user with basic read/write privileges, causing an outage that affects all tenants on the instance. Because the poisoned record persists across restarts, recovery requires manual data purging, extending downtime and impacting availability for all customers.
No vendor-released patch identified at time of analysis; interim mitigations include restricting write privileges to trusted users, validating input to reject deep nesting, isolating tenants, and monitoring for abnormal nesting depth.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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-115955
GHSA-934p-hvjv-46qj
NVD
CVE.org
Exploit-DB