Skip to main content

SurrealDB CVE-2026-121420

| EUVDEUVD-2026-115952 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-11-03 VulnCheck GHSA-3rgm-63j6-74qx
4.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to SurrealDB instance
  2. Delivery
    craft SurrealQL http:: call to IPv6 transition address
  3. Exploit
    bypass FilteringResolver is_private_ip guard
  4. Execution
    address routes to embedded private IPv4
  5. Impact
    reach localhost/internal/metadata endpoint

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Three conditions must all hold: (1) the attacker is an authenticated SurrealDB user (PR:L) able to trigger outbound HTTP, specifically via SurrealQL http:: functions, webhook deliveries, or OIDC metadata fetches that pass through the FilteringResolver; (2) the SurrealDB host has NAT64, 6to4, or Teredo IPv6 transition connectivity so the crafted transition address actually routes to its embedded IPv4 target - the advisory explicitly scopes the bypass to such hosts, making this the primary limiting factor and a non-default condition for most deployments; (3) the version is in range 3.2.0 up to but not including 3.3.0. The guard correctly handles IPv4-mapped (::ffff:) addresses, so only NAT64 (64:ff9b::/96), 6to4 (2002::/16), and Teredo (2001:0000::/32) wrappers bypass it. Exploitation is further limited to internal/private IPv4 targets reachable from the host (localhost, internal services, cloud IMDS at 169.254.169.254).

Impact

This is a genuine but conditional SSRF (CWE-918), not a high-severity emergency. The vendor CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:L/UI:N) scores only 4.8 (medium), and the vuln.today decision label is 'this_month' - not act_now or emergency. Several signals point to limited real-world risk: exploitation requires an authenticated user (PR:L) who can already trigger outbound HTTP via SurrealQL http:: functions, and - critically - the bypass only works 'on hosts with NAT64, 6to4, or Teredo connectivity' per the GHSA advisory, which is a non-default network condition on most deployments. No CISA KEV listing and no EPSS score were provided, and no working exploit code is published, so there is no evidence of active exploitation. One signal to verify: the vendor's vector uses AV:L (local), yet the mechanism is an authenticated user submitting a SurrealQL query that drives an outbound HTTP request, which is more naturally a network-reachable interaction - this AV:L choice should be confirmed with the vendor, as it materially lowers the score. Net: a valid defense-in-depth bypass worth patching on affected SurrealDB instances that permit user-driven outbound HTTP and sit on transition-address-capable networks, but not a widespread-exploitation priority.

Exploit ScenarioDerived

An authenticated SurrealDB user who is permitted to invoke SurrealQL http functions (e.g. http::get) issues a request to an IPv6 transition address such as 64:ff9b::7f00:1 (NAT64 wrapping 127.0.0.1) or 2002:a9fe:a9fe:: (6to4 wrapping 169.254.169.254). The is_private_ip SSRF guard only unwraps IPv4-mapped (::ffff:) addresses via to_canonical(), so the transition address passes the filter, and on a host with NAT64/6to4/Teredo connectivity it routes to the embedded private IPv4 target such as cloud metadata (IMDS) or an internal service. No working exploit code is published, though the GHSA and VulnCheck advisories document the exact bypass addresses.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Nov 03, 2026

Server-side request forgery guard bypass in SurrealDB 3.2.x lets an authenticated user reach internal or private IPv4 endpoints by routing outbound HTTP through IPv6 transition addresses (NAT64, 6to4, Teredo) that the FilteringResolver's is_private_ip check fails to unwrap. Only deployments that actually have one of those transition mechanisms active, and whose users can trigger outbound requests via SurrealQL http:: functions, webhook deliveries, or OIDC metadata fetches, are exposed; targets of interest include localhost services, internal hosts, and cloud instance metadata at 169.254.169.254. The GitHub security advisory (GHSA-c9wc-jcr5-8974) publishes illustrative payloads such as 64:ff9b::7f00:1 and 2002:a9fe:a9fe::, but no verified working exploit code was identified, and there is no CISA KEV confirmation of active exploitation; the vulnerability.today decision label is this_month, reflecting a conditional, moderate-severity issue rather than an emergency.

RemediationAI

Upgrade to SurrealDB 3.3.0, the vendor-released fix that adds NAT64 (64:ff9b::/96), 6to4 (2002::/16) and Teredo (2001:0000::/32) unwrapping to the is_private_ip logic in surrealdb/core/src/net/mod.rs. Track the advisory at https://github.com/surrealdb/surrealdb/security/advisories/GHSA-c9wc-jcr5-8974 for the confirmed release and the upstream fix reference. If upgrading cannot happen immediately, attack the precondition rather than the symptom: on the SurrealDB host, disable IPv6 transition mechanisms (turn off NAT64/DNS64 translation, 6to4, and Teredo interfaces) so crafted transition addresses cannot route to their embedded IPv4 target, accepting that this removes any legitimate transition-path connectivity the host relies on; and restrict who and what can cause egress by limiting the network capability so that SurrealQL http:: functions, webhook targets and OIDC metadata fetches are not usable by untrusted users, at the cost of reducing legitimate integration functionality. Restricting host egress with firewall rules that deny the resolver's paths to RFC 1918 ranges, localhost and 169.254.169.254 reduces reachable targets but does not correct the classification flaw, and enforcing IMDSv2-only style metadata access limits metadata abuse without preventing access to internal services.

Affected VersionsENISA

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

CWE-918 covers server-side request forgery, and here the root cause is an incomplete IP classification routine. SurrealDB's FilteringResolver (surrealdb/core/src/net/mod.rs) backs the reqwest-based outbound HTTP client and calls is_private_ip on every resolved address. That function first calls to_canonical(), which normalises only IPv4-mapped addresses (::ffff:a.b.c.d) into plain IPv4, and then applies standard checks: loopback, RFC 1918 private, link-local, broadcast, unspecified and CGNAT 100.64.0.0/10 for v4; loopback, unspecified, ULA fc00::/7 and link-local fe80::/10 for v6. Three IPv6 transition formats survive to_canonical() unchanged and are evaluated only by the narrow IPv6 branch, which none of them match: NAT64 well-known prefix 64:ff9b::/96 (RFC 6052) carrying the IPv4 target in the last 32 bits, 6to4 2002::/16 (RFC 3056) carrying it in bits 16-47, and Teredo 2001:0000::/32 (RFC 4380) carrying it XORed with 0xffffffff in the last 32 bits. On a host where such transition connectivity exists, the kernel or gateway forwards those packets to the embedded IPv4 destination, so the guard returns false and the request proceeds. The advisory's suggested fix extracts the embedded IPv4 from each transition prefix and re-applies the IPv4 private-range checks recursively. Per CPE the affected package is surrealdb:surrealdb (Rust crate) in the 3.2.0 to pre-3.3.0 range.

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 4.8 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L
vuln.today AI 4.9 MEDIUM

Authenticated user drives the request over the network (AV:N, PR:L); AC:H because the advisory requires the host to have NAT64/6to4/Teredo connectivity; S:C as the SSRF reaches internal systems with limited read/write impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

Lifecycle Timeline

1
Patch available
Nov 03, 2026 - 16:17 EUVD

DescriptionCVE.org

SurrealDB from 3.2.0 before 3.3.0 contains a server-side request forgery vulnerability in the FilteringResolver is_private_ip check that fails to unwrap NAT64, 6to4, and Teredo IPv6 addresses. Authenticated users triggering outbound HTTP requests via SurrealQL http functions can use transition addresses embedding private IPv4 targets to reach localhost, internal services, or cloud metadata endpoints.

Threat Intelligence Overview

Prevalence
Low
emerging niche database, limited production enterprise footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Defer
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

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