Skip to main content

SurrealDB EUVDEUVD-2026-115951

| CVE-2026-121419 HIGH
Improper Privilege Management (CWE-269)
2026-11-03 VulnCheck GHSA-hprh-85vv-3jpq
8.6
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain valid low-privilege token for access method
  2. Delivery
    Capture victim's mcp-session-id
  3. Exploit
    Send own token with victim's session id to POST /mcp
  4. Execution
    BoundSubject fingerprint collision passes check_subject
  5. Impact
    Execute MCP tools with victim's roles and permissions

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
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

Exploitation requires a specific deployment: SurrealDB with the MCP HTTP transport enabled and reachable (POST /mcp, built with the mcp/http features) AND a database-, namespace-, or root-level DEFINE ACCESS method of TYPE JWT or BEARER that serves more than one user. The attacker must hold (1) a valid token for that same access method - even the lowest role suffices - and (2) the victim's mcp-session-id (the very leak this defense was meant to neutralize, e.g. from HTTP logs, proxies, or shared observability). Limiting factors: deployments that authenticate MCP users via the user/password signin path are NOT affected because that path sets a per-user actor id; single-user access methods have no other victim to impersonate; and the stdio MCP transport is exempt (only the strict 'http' transport label triggers the networked subject check). The attacker cannot escalate beyond the roles/permissions the victim's session already holds.

Impact

This is a credible, above-average priority rather than a high-CVSS paper tiger, but its blast radius is narrowed by specific preconditions. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H, score 8.6) describes a network-reachable flaw of low complexity requiring low privileges and no user interaction, with high confidentiality and integrity impact and no availability impact - consistent with a cross-user authorization bypass that lets an attacker read and modify data. PR:L is accurate: the attacker must already hold a valid (even lowest-role) token for the same access method, so this is an authenticated privilege-escalation/lateral-movement issue, not anonymous RCE. The vuln'. today decision label is 'this_week' (not act_now/emergency), aligning with a serious-but-not-fire-drill posture. A full, self-contained reproduction script is published in the GHSA advisory and was confirmed end-to-end (7/7 checks) against the released v3.2.0 binary and the v3.3.0-nightly master build, so working exploit code is public. No EPSS score and no CISA KEV status were provided in the input; absence of KEV means there is no evidence of active exploitation, and the missing EPSS means probability-of-exploitation cannot be quantified here. The real limiter on risk is configuration specificity: only deployments exposing MCP over HTTP with a multi-user JWT/Bearer access method are affected, which is a narrow slice of all SurrealDB installs. Note a version-range discrepancy to verify: the CVE/package metadata says >= 3.1.0 < 3.3.0, while the GHSA advisory states the MCP HTTP transport is affected from >= 3.2.0 (MCP HTTP being a v3.x feature) - reconcile with the vendor before scoping.

Exploit ScenarioDerived

A SurrealDB instance exposes the MCP HTTP transport (POST /mcp) with a database/namespace/root JWT access method serving multiple users. A low-privilege user (e.g. viewer-role 'bob') who obtains a higher-privilege victim's mcp-session-id - leaked via HTTP logs, a proxy, or shared observability - sends his own valid token together with that session id and executes MCP tools with the victim's roles, reading or writing records his own permissions forbid. A public, end-to-end-verified PoC reproduction script exists in the GHSA advisory; because AV:N/AC:L and the attacker uses only legitimate credentials, exploitation is straightforward once the session id is known.

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

Cross-user MCP session takeover in SurrealDB 3.1.0 through 3.2.x allows an authenticated holder of even a lowest-role JWT or Bearer token to run MCP tools with a victim's roles and permissions by presenting that victim's mcp-session-id alongside their own valid credential. The flaw only exists when the MCP HTTP transport (POST /mcp) is exposed and the deployment uses a database-, namespace- or root-level DEFINE ACCESS method of TYPE JWT or BEARER that serves more than one user; users authenticated through the user/password signin path and the stdio MCP transport are not affected. Severity is high on paper (CVSS 8.6, C:H/I:H) but the blast radius is capped by those deployment preconditions and by the fact that the attacker cannot exceed the victim's own privileges; the vendor advisory includes a public proof-of-concept reproduction and a fix in 3.3.0, and no confirmed active exploitation or KEV listing is available at time of analysis.

RemediationAI

Upgrade to SurrealDB 3.3.0 or later, the release in which the JWT/Bearer token path is expected to derive the actor id from the token's per-user id/sub claim so that users of the same access method receive distinct BoundSubjects; consult the vendor advisory at https://github.com/surrealdb/surrealdb/security/advisories/GHSA-pgh9-49q4-hqcx for the authoritative patch details and confirm the fix on your build before relying on it. Until the upgrade is deployed, the most effective compensating control is to stop exposing POST /mcp to untrusted networks or to front it with a proxy that enforces single-identity sessions, accepting the trade-off that MCP clients must then be routed through that proxy. Alternatively, re-authenticate MCP callers through the user/password signin path, which sets a per-user actor id and is not affected, at the cost of managing per-user database credentials instead of shared JWT/Bearer issuance. Collapsing each JWT/BEARER access method to a single user removes the cross-user collision but eliminates shared-token architectures. Because exploitation requires the victim's mcp-session-id, scrub session ids from HTTP access logs, reverse-proxy logs and shared observability pipelines and restrict who can read them, and prefer the stdio transport where it is a viable integration. Rotating the JWT signing key does not remediate the collision, since the attacker's token remains valid under any key; treat any session whose mcp-session-id may have leaked as compromised and terminate it.

Affected VersionsENISA

surrealdb 3.1.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

SurrealDB's MCP module defines an explicit threat model in auth.rs stating that possession of an mcp-session-id alone must not let an attacker present a different credential and impersonate the original user. The enforcement is BoundSubject, a fingerprint of (session.au.level(), session.au.id()) captured at MCP initialize time and re-compared by check_subject on every subsequent request; missing or anonymous subjects are rejected, and a subject that is not equal to the bound one is rejected. For access-method authentication (DEFINE ACCESS ... TYPE JWT or TYPE BEARER), verify::token constructs the actor as Auth::new(Actor::new(de.name.to_string(), roles, Level::Database(ns, db))) - that is, the actor id is the access method name, not the per-user id/sub claim, which is retained only in session.tk. Only the user/password signin path puts a per-user name into the actor id. Consequently every user of the same access method produces a byte-identical fingerprint regardless of their token roles, the inequality branch of check_subject never fires, and the request is accepted; the HTTP factory forces the strict "http" transport label that enables this networked check, while the stdio transport is correctly exempt. Because tool execution runs against the session bound at handshake (handler(self.session())), the attacker's tool calls execute under the victim's session and permissions, and audit records attribute them to the same shared subject string (e.g. /ns:test/db:test/::api). The root cause is the CWE-269 improper privilege management class, with the advisory also categorising it as CWE-287 improper authentication: a per-session identity check that compares an identity field which is not actually per-user.

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 8.6 HIGH
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
vuln.today AI 8.1 HIGH

Network MCP endpoint (AV:N), low complexity once the session id is known (AC:L), requires a valid same-method token so PR:L; attacker gains victim's read/write (C:H/I:H), no availability or scope-crossing impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/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
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
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 8.6

DescriptionCVE.org

SurrealDB from 3.1.0 before 3.3.0 contains an improper authentication vulnerability where the MCP BoundSubject fingerprint uses the access method name instead of per-user identity for JWT/Bearer access. Attackers with a valid low-privilege token for the same access method and a victim's mcp-session-id can hijack the session and execute MCP tools with the victim's roles and permissions.

Technical POC Analysis

CWE-269 (Improper Privilege Management), with CWE-287 (Improper Authentication) also assigned by the vendor.

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 3.1.0 to 3.2.x contain a high-severity flaw (CVE-2026-121419) that allows an authenticated attacker with minimal privileges to impersonate other users and execute MCP tools with their permissions. This requires a specific configuration: the MCP HTTP transport exposed and JWT or Bearer authentication serving multiple users. While no active exploitation has been observed, the presence of a public proof-of-concept reproduction and the potential for privilege escalation within the victim's permissions warrant immediate attention, especially for organizations relying on SurrealDB for sensitive data operations.

Business Impact: High
Compensating Controls

Apply vendor patch (upgrade to 3.3.0). If patching is not immediately possible, disable the MCP HTTP transport (POST /mcp) or restrict access to it via network controls (e.g., firewall rules, VPN), and ensure that JWT/Bearer authentication is not used for multi-user access; monitor logs for unusual session identifiers or cross-user activity.

Threat Intelligence Overview

Prevalence
Low
newer niche multi-model database; vulnerable MCP-over-HTTP multi-user JWT config uncommon
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

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

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

CVE-2026-63737 HIGH
7.1 Jul 20

Denial of service in SurrealDB before 3.1.5 lets an authenticated user with query-execution privileges crash the entire

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