Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to SurrealDB instance
-
Deliverycraft SurrealQL http:: call to IPv6 transition address
-
Exploitbypass FilteringResolver is_private_ip guard
-
Executionaddress routes to embedded private IPv4
-
Impactreach 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
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.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.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
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
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
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-115952
GHSA-3rgm-63j6-74qx
NVD
CVE.org
Vulnrichment
Exploit-DB