Skip to main content

SurrealDB CVE-2026-121423

| EUVDEUVD-2026-115955 HIGH
Uncontrolled Recursion (CWE-674)
2026-11-03 VulnCheck GHSA-934p-hvjv-46qj
7.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as user with table write+read
  2. Delivery
    Create record then loop UPDATE v=[v] ~10^4+ times
  3. Exploit
    Issue SELECT or EXPORT to hit recursion sink
  4. Execution
    Unbounded recursion overflows thread stack
  5. Impact
    panic='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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

surrealdb 0 <3.3.0

Affected Packages

euvd surrealdb fix: 3.3.0

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

Vendor (VulnCheck) PRIMARY 7.1 HIGH
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
vuln.today AI 6.5 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Nov 03, 2026 - 16:17 EUVD
CVE Published
Nov 03, 2026 - 14:28 cve.org
HIGH 7.1

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

Prevalence
Low
emerging multi-model database, modest production footprint versus mainstream DBs
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2025-71392 CRITICAL
9.4 Jul 18

Privilege escalation via second-order SurrealQL injection in SurrealDB before 2.0.5, 2.1.5, and 2.2.2 lets an authentica

CVE-2026-63756 CRITICAL
9.2 Jul 20

Privilege escalation in SurrealDB before v3.1.0 lets unauthenticated attackers hijack the privileges of concurrently-act

CVE-2026-121417 HIGH
8.8 Nov 03

Use-after-free in SurrealDB Core before 3.3.0 can crash or corrupt memory in Rust applications that embed the database a

CVE-2026-63760 HIGH
8.7 Jul 20

Denial of service in SurrealDB before 3.1.0 lets an unauthenticated remote attacker crash the database with a single Web

CVE-2026-63747 HIGH
8.7 Jul 20

Denial of service in SurrealDB before 3.1.0 lets an unauthenticated remote attacker crash the entire database process wi

CVE-2026-63757 HIGH
8.7 Jul 20

Session hijacking in SurrealDB before 3.1.0 lets unauthenticated attackers enumerate attached session UUIDs through the

CVE-2026-109343 HIGH
8.6 Oct 12

SurrealDB versions before 3.3.0 fail to validate a caller's authorization level when the SurrealQL USE statement switche

CVE-2026-109334 HIGH
8.6 Oct 12

Cross-tenant data access in SurrealDB before 3.3.0 allows an authenticated namespace- or database-level SYSTEM user to b

CVE-2026-63735 HIGH POC
8.6 Jul 20

Cross-tenant authorization bypass in SurrealDB before 3.2.0 lets any authenticated user reach custom API endpoints belon

CVE-2026-121419 HIGH
8.6 Nov 03

Cross-user MCP session takeover in SurrealDB 3.1.0 through 3.2.x allows an authenticated holder of even a lowest-role JW

CVE-2026-63739 HIGH
8.3 Jul 20

Arbitrary file read in SurrealDB before 3.1.5 lets an authenticated database user holding the EDITOR or OWNER role discl

CVE-2026-63763 HIGH
7.5 Jul 20

Confused-deputy privilege escalation in SurrealDB before 2.5.0 and before 3.0.0-beta.3 lets a low-privileged user (e.g.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy