Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to SurrealDB instance
-
DeliveryInvoke http::get with aliased host/IP for a denied target
-
ExploitPort-specific --deny-net rule fails to match resolved IP
-
ExecutionReach blocked internal service
-
ImpactReceive internal service response
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 | Requires: (1) SurrealDB 3.1.0 through 3.2.x with outbound HTTP enabled so the http::* functions (http::get/post/put/patch/delete) are callable; (2) an authenticated caller (PR:L) permitted to invoke those functions; and (3) that the deployment relies on PORT-SPECIFIC egress deny rules of the form --deny-net HOST:PORT or --deny-net IP:PORT to protect internal services. The bypass is triggered by naming the denied target through a different alias that resolves to the same address (a hostname for a denied IP, or the IP for a denied hostname). Key LIMITS: bare-IP deny rules such as --deny-net 127.0.0.1 (stored as an IPNet/32) are NOT affected and block both forms; deployments not using port-bearing Host-form deny rules are unaffected. Impact WIDENS in deny-list mode (--allow-net unrestricted / --allow-all), where the resolved private-address filter is skipped, exposing loopback/RFC1918/link-local and cloud-metadata targets. |
| Impact | This is a genuine but bounded issue, best read as a defense-in-depth bypass rather than a high-urgency flaw. The CVSS 4.0 base vector supplied (AV:N/AC:L/AT:N/PR:L/UI:N) scores 5.3 Medium and models no impact to SurrealDB itself (VC:N/VI:N/VA:N) with only low subsequent-system impact (SC:L/SI:L/SA:L) - consistent with SSRF that reaches OTHER internal services rather than compromising the database. Note a real conflict in the inputs: the vendor GHSA advisory estimates a higher CVSS:3.1 of ~6.5 with C:H/I:N/A:N (full confidentiality of the reached internal service), whereas the NVD-style 4.0 vector rates subsequent confidentiality only Low - treat the true read impact as somewhere between, depending on what the exploitable internal service exposes. There is no CISA KEV entry (not confirmed actively exploited) and no EPSS score was provided, so widespread-exploitation probability cannot be quantified from the data. The vuln.today decision label is 'this_month' (not act_now/emergency), aligning with a patch-promptly posture. The practical risk is sharply gated: it only matters where an operator relies specifically on port-specific --deny-net HOST:PORT/IP:PORT rules to fence internal services AND exposes http::* functions to authenticated users; bare-IP deny rules (e.g. --deny-net 127.0.0.1) are not affected. Reported by VulnCheck with a vendor-published root-cause and reproduction, so the technical validity is well established even though mass exploitation is unproven. |
| Exploit ScenarioDerived | An operator runs SurrealDB 3.1.0-3.2.x with outbound HTTP enabled and relies on a port-specific rule such as --deny-net 127.0.0.1:9999 to block an internal admin service. An authenticated user invokes http::get('http://localtest.me:9999/') - a hostname alias resolving to the same denied 127.0.0.1 - which is not caught by the literal host comparison and whose port is discarded at the resolved-IP check, so the request reaches the blocked service and returns its response. The vendor GHSA advisory publishes full, working reproduction steps for this (network vector, low complexity, no user interaction), though it is not packaged as a standalone exploit tool and is not listed in CISA KEV. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
SurrealDB 3.1.0 through 3.2.x mishandles port-specific network deny rules, so an authenticated user who can call the http::* functions can reach an internal service that a --deny-net HOST:PORT or IP:PORT rule was meant to block simply by naming the same target through a different alias (a hostname that resolves to the denied IP, or the bare IP of a denied hostname). The advisory demonstrates this against the v3.2.0 release binary with published reproduction steps, so a public proof-of-concept reference exists; there is no CISA KEV entry indicating active exploitation. Scope is bounded: it is an egress-policy bypass that only matters to deployments relying on port-bearing deny rules, and bare-IP deny rules are unaffected; it is fixed in 3.3.0.
RemediationAI
Upgrade to SurrealDB 3.3.0, the fixed release for the >= 3.1.0, < 3.3.0 range (vendor advisory https://github.com/surrealdb/surrealdb/security/advisories/GHSA-mhv5-88p6-w4c3; upstream fix commit https://github.com/surrealdb/surrealdb/commit/9d9a5b0693e499e0d030cac6b618062ec02cd2bc). If upgrading immediately is not possible, the most direct workaround described in the advisory is to replace port-bearing deny rules with bare-IP deny rules such as --deny-net 127.0.0.1, which resolve correctly and block both the hostname and IP forms - at the cost of denying the whole address rather than one port, which may block legitimate traffic to other services on the same host. Additionally, restrict which authenticated users may invoke http::get/post/put/patch/delete, and consider running with a restricted --allow-net instead of deny-list mode, since in deny-list mode (--allow-net unrestricted) the resolved private-address filter is skipped and loopback, RFC1918, link-local and cloud-metadata targets become reachable - tightening to an allow-list asserts the private-IP filter but requires enumerating every legitimate outbound destination.
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 in SurrealDB's network-capability matching (CWE-918), specifically the NetTarget type in surrealdb/core/src/dbs/capabilities.rs as consumed by Context::check_allowed_net and the FilteringResolver. A port-specific rule such as --deny-net 127.0.0.1:9999 parses to NetTarget::Host(host, Some(port)), but NetTarget::resolve() maps every resolved address to a port-less NetTarget::IPNet, discarding the port, and the matches() implementation for Host(_, Some(port)) only compares against another Host(_, Some(port)) value - it structurally cannot match an IPNet target. Consequently the resolved-IP deny loops in context.rs and net/mod.rs can never enforce a port-bearing deny, leaving only the literal host-string comparison on the initial request; any alias of the same endpoint defeats it. Bare-IP rules (e.g. --deny-net 127.0.0.1, stored as IPNet/32) match the resolved IPNet directly and are robust. The advisory reports byte-identical vulnerable code in the surrealdb-core 3.2.3 crate and on main HEAD 9d9a5b0, and notes this as a sibling of GHSA-97vg-427p-8hx5, which hardened port-specific denies on the HTTP redirect path in 3.1.0 but did not cover the initial request. The upstream fix, commit 9d9a5b0693e499e0d030cac6b618062ec02cd2bc, updates the pinned revision crate from 0.29.0 to 0.30.0.
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:L/VA:N/SC:L/SI:L/SA:L
Authenticated (PR:L) network SSRF with no user interaction that crosses into internal services (S:C); limited read of and limited requests to reached services give C:L/I:L, no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
SurrealDB 3.1.0 before 3.3.0 contains a server-side request forgery vulnerability in network-capability matching because port-specific --deny-net rules (HOST:PORT or IP:PORT) match only a literal host string, while the resolved-IP check discards the port. Authenticated users can call http::* functions with a hostname resolving to a denied IP, or the IP of a denied hostname, to reach blocked internal services.
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-115953
GHSA-9jwv-m2gr-h32r
NVD
CVE.org
Vulnrichment
Exploit-DB