Skip to main content

SurrealDB EUVDEUVD-2026-115953

| CVE-2026-121421 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-11-03 VulnCheck GHSA-9jwv-m2gr-h32r
5.3
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
    Invoke http::get with aliased host/IP for a denied target
  3. Exploit
    Port-specific --deny-net rule fails to match resolved IP
  4. Execution
    Reach blocked internal service
  5. Impact
    Receive 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.

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

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

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

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

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
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
vuln.today AI 6.4 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/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
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
Low

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

Prevalence
Medium
emerging multi-model open-source database, growing but limited production footprint
Social Media
1
Sightings
Data Quality
4 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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
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