Severity by source
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable but requires Owner role (PR:H); blind SSRF with scope change to internal systems (S:C) yields C:L; no integrity or availability impact.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
3DescriptionCVE.org
SurrealDB before 3.1.5 contains a server-side request forgery vulnerability in the JWKS fetcher that follows HTTP redirects without re-validating redirect targets against network capabilities. Attackers with Owner role can configure a JWKS URL pointing to an allowlisted host that redirects to blocked internal addresses, bypassing network access controls.
AnalysisAI
Blind SSRF in SurrealDB's JWKS fetcher before 3.1.5 allows Owner-role database principals to bypass network capability controls by chaining an allowlisted host redirect to blocked internal addresses. The JWKS client in core/src/iam/jwks.rs applies check_capabilities_url only to the originally configured URL, not to 3xx redirect targets, while the hardened HttpClient used by http::* functions already re-validates each hop since 3.1.0. Exploitation requires Owner-level credentials and yields only blind timing-based probing of internal hosts - no response body is returned - with no public exploit identified at time of analysis.
Technical ContextAI
SurrealDB is a multi-model database written in Rust that supports JWT-based authentication via remotely fetched JSON Web Key Sets (JWKS). The fetcher in core/src/iam/jwks.rs uses a bare reqwest HTTP client, which follows HTTP redirects by default. The capability enforcement function check_capabilities_url validates --allow-net and --deny-net rules against the user-supplied JWKS URL at configuration time but is not re-applied to subsequent redirect hops. CWE-918 (Server-Side Request Forgery) captures this root cause: the server issues outbound HTTP requests to attacker-influenced destinations because redirect targets are not validated against the same network access control policy as the original URL. The protected HttpClient used by http::* built-in functions was hardened in SurrealDB 3.1.0 to re-validate every redirect hop, but the JWKS fetcher used a separate, unprotected client instance and was not included in that hardening, creating a gap between two code paths with differing security postures.
RemediationAI
Upgrade SurrealDB to version 3.1.5 or later; this is the only confirmed fix. In 3.1.5, the JWKS fetcher now applies a redirect policy that re-validates every redirect target against the configured network capabilities, mirroring the protection already in place for http::* functions since 3.1.0, and caps redirect depth at max_http_redirects. Vendor advisory: https://github.com/surrealdb/surrealdb/security/advisories/GHSA-h5rg-8p7f-47g2. If immediate upgrade is not feasible, apply network-layer egress filtering at the host or container boundary to block link-local ranges (169.254.0.0/16) and internal RFC-1918 addresses, ensuring redirect targets are unreachable regardless of in-process checks - note this requires tuning to avoid disrupting legitimate outbound traffic to cloud services. Additionally, restrict Owner-role grants strictly to trusted operators to reduce the set of principals who can define JWKS access methods; and configure all access methods to use only non-redirecting JWKS hosts or, preferably, locally defined keys rather than remote JWKS URLs, which eliminates the vulnerable fetch path entirely.
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
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
Cross-tenant authorization bypass in SurrealDB before 3.2.0 lets any authenticated user reach custom API endpoints belon
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.
Denial of service in SurrealDB before 3.1.5 lets an authenticated user with query-execution privileges crash the entire
Denial of service in SurrealDB before 2.0.5, 2.1.x before 2.1.5, and 2.2.x before 2.2.2 lets an authenticated user with
Information disclosure in SurrealDB before 3.1.0 allows authenticated record or scope users to bypass table-level SELECT
Denial of service in SurrealDB before 2.2.2 allows any authenticated user to crash the database by submitting a crafted
Same weakness CWE-918 – Server-Side Request Forgery (SSRF)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-45915
GHSA-2jqm-x3hr-jjmq