Skip to main content

SurrealDB EUVDEUVD-2026-115954

| CVE-2026-121422 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-11-03 VulnCheck GHSA-7wm7-v445-mpw3
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as database Owner
  2. Delivery
    Define JWT/record access with portless JWKS URL
  3. Exploit
    Trigger server-side JWKS preflight fetch
  4. Execution
    Bypass port-specific deny-net rule
  5. Impact
    Blind GET reaches explicitly denied internal service

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 an authenticated attacker with database Owner privileges (CVSS PR:H) on SurrealDB 3.1.0 through before 3.3.0. The attacker must be able to configure a JWT or record access method and set its JWKS URL to a target that uses an implicit HTTP/HTTPS default port (port 80 or 443 omitted from the URL). Exploitation is only meaningful where the process operator has defined port-specific deny-net rules such as deny-net 127.0.0.1:80 or deny-net internal.example:443 - the bug is that these specific-port rules fail to match when the port is implicit. Limiting factors: the response is blind (parsed only as JWKS, no body returned to the attacker), only reachability/timing/parse-success inference is possible, no confidentiality disclosure beyond that, no integrity or availability impact, and rules that use non-default explicit ports (e.g. :8080) are unaffected and still enforced.

Impact

This is a genuine but bounded issue, best characterized as a medium-severity, authenticated SSRF rather than an urgent emergency. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N, base 5.1) shows the key gating factor is PR:H: exploitation requires an attacker who already holds database Owner privileges, so this is a privilege-boundary / network-policy-bypass flaw, not a pre-auth internet-facing one. The vuln.today decision label is 'this_month' (not act_now/emergency), consistent with the moderate score. No EPSS score, no CISA KEV listing, and no SSVC automatable/technical-impact fields were provided in the input, so exploitation-probability and automation signals are UNKNOWN rather than low - they are simply absent and should not be read as reassurance. Impact is deliberately constrained: the vendor states the response is blind and parsed only as JWKS, yielding internal host/service reachability, timing, and JWKS-parse-success inference (hence VC:L and the scope/subsequent-system signal SC:L), not data theft or code execution. There is no conflict between the vector and the description; both agree on authenticated, network-triggered, blind, low-impact SSRF. Net: a legitimate defense-in-depth bypass worth patching on a normal cycle, elevated mainly where the Owner role is shared, delegated, or multi-tenant.

Exploit ScenarioDerived

A user holding database Owner rights in a shared or multi-tenant SurrealDB instance (3.1.0 up to before 3.3.0) defines a JWT or record access method whose JWKS URL points at an internal service using an implicit default port - e.g. http://127.0.0.1/jwks.json - that the operator explicitly blocked with a rule like deny-net 127.0.0.1:80. Because the port check drops the implicit default port, SurrealDB issues a server-side GET to the denied endpoint, letting the Owner probe internal reachability, timing, and JWKS-parse success across the network-policy boundary. The GHSA advisory includes a reproduction/canary test demonstrating the bypass; it is a proof-of-concept reference, not verified as weaponized exploit code.

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 versions before 3.3.0 lets a database Owner bypass operator-defined port-specific deny-net rules and reach explicitly denied internal services, because the JWKS fetch path resolves URL ports with Url::port(), which returns None when an HTTP or HTTPS URL relies on the implicit default port. An attacker who can configure a JWT or record access method simply supplies a JWKS URL such as http://127.0.0.1/jwks.json (no :80) so that a rule like deny-net 127.0.0.1:80 receives a host-only target and no longer matches, producing a blind server-side GET against the denied endpoint. Exploitation requires authenticated Owner privileges (CVSS PR:H) and is only meaningful where port-specific deny rules are in place; the response is blind and parsed only as JWKS, so impact is limited to reachability, timing and parse-success inference with no integrity or availability effect. Scoring is medium (CVSS 4.0 base 5.1; internally assessed CVSS 3.1 AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:N/A:N), no public exploit code was identified at time of analysis although the vendor advisory includes a full reproduction test, and the issue is prioritised as this-month rather than emergency.

RemediationAI

Vendor-released patch: upgrade to SurrealDB 3.3.0, which resolves the vulnerable range >= 3.1.0, < 3.3.0; the upstream fix replaces Url::port() with port_or_known_default() in both the initial JWKS URL check in check_capabilities_url() and the JWKS redirect policy, a two-line change that makes the vendor's end-to-end canary report result_ok=false and canary_hit=false, and the advisory notes regression tests for implicit port 80 and 443 under matching port-specific deny rules should accompany it (see https://github.com/surrealdb/surrealdb/security/advisories/GHSA-h3mp-7wcg-p6vj). If upgrading immediately is not possible, the actionable compensating control is to remove reliance on port-specific deny-net entries for JWKS-reachable hosts and instead deny the host across all ports (a host-only deny-net rule for the same internal address), accepting the trade-off that this blocks legitimate access to every port on that host rather than only the intended service; note that rules using explicit non-default ports such as :8080 are unaffected and continue to be enforced, so they need no change. Operators should also restrict who holds Owner privileges and audit existing JWT and record access methods for JWKS URLs pointing at internal addresses on ports 80 or 443, since those are the exact configurations that exercise the bypass. Because no public exploit code was identified, remediation can proceed on a this-month cadence rather than as an emergency, but the patch should still be scheduled promptly for any instance where untrusted parties can obtain Owner access.

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 is a Rust-implemented multi-model database whose IAM layer supports JWKS-backed JWT and record access methods, fetching key material server-side with the reqwest HTTP client. This is a CWE-918 server-side request forgery rooted in Rust url crate semantics: Url::port() returns None for URLs that use a scheme's implicit default port, while port_or_known_default() returns 80 or 443. The JWKS preflight in check_capabilities_url() (surrealdb/core/src/iam/jwks.rs) builds the capability-matching target as host[:port] from url_parsed.port(), and the JWKS redirect policy repeats the identical operation with attempt.url().port(); for implicit default ports the resulting NetTarget therefore carries no port and cannot equal a NetTarget::Host(host, Some(port)) deny rule, so deny-net entries such as 127.0.0.1:80 or internal.example:443 silently fail to match. The shared DNS resolver cannot recover the decision because reqwest hands it only a DNS name and it then checks host-only and IP-only targets, and the general protected HTTP client in the same codebase already avoids the flaw by using url.port_or_known_default(). The issue survived the earlier v3.2.0 JWKS DNS and redirect hardening and is described by the vendor as a JWKS-path sibling of a prior port-specific redirect policy flaw; explicit non-default ports such as :8080 remain present in the URL and are still correctly enforced as a positive control. The trigger confirmed by the advisory is configuration of a JWKS URL on a default port matching a port-specific deny rule, with the response remaining blind, parsed only as JWKS.

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

Network-triggered but requires database Owner (PR:H); low AC; the fetch crosses a network-policy boundary to another system (S:C) yielding only blind inference (C:L), with no integrity or availability impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

Lifecycle Timeline

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

DescriptionCVE.org

SurrealDB from 3.1.0 before 3.3.0 contains a server-side request forgery vulnerability that allows database Owners to bypass port-specific deny-net rules by using JWKS URLs with implicit default ports. Attackers can configure a JWT or record access method whose JWKS URL omits port 80 or 443, causing blind GET requests to explicitly denied internal services.

Threat Intelligence Overview

Prevalence
Low
emerging multi-model database, limited production footprint versus mainstream datastores
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 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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

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