Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:L/VA:L/SC:H/SI:H/SA:H/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-exploitable by authenticated user; scope changes because impact falls on internal systems beyond SurrealDB; confidentiality high due to potential credential retrieval from internal services like IMDSv1.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:L/VA:L/SC:H/SI:H/SA:H/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
Lifecycle Timeline
3DescriptionCVE.org
SurrealDB before 2.2.2 fails to validate HTTP redirects in http functions, allowing authenticated users to bypass deny-net restrictions by redirecting to blocked IP addresses. Attackers can host a public server that redirects to denied network targets, enabling server-side request forgery to access internal endpoints and retrieve sensitive information.
AnalysisAI
Server-side request forgery in SurrealDB before versions 2.0.5, 2.1.5, and 2.2.2 allows authenticated users to circumvent administrator-configured deny-net network restrictions by exploiting unchecked HTTP redirects in the native http::* query functions. An attacker operates a public HTTP server that issues 301 or 307 redirects to denied internal addresses; SurrealDB follows those redirects without re-validating the destination against the deny-net ACL, and returns the internal response directly to the attacker's query result. No public exploit code has been identified at time of analysis; this issue was discovered by cure53 during a commissioned security audit and penetration test of SurrealDB.
Technical ContextAI
SurrealDB is a multi-model database written in Rust that exposes built-in http::* functions (e.g., http::get, http::post) allowing SurrealQL queries to make outbound HTTP calls. Administrators restrict outbound access using the --allow-net and --deny-net capability flags - for example, 'surreal start --allow-net --deny-net 10.0.0.0/8' blocks access to RFC-1918 space while permitting all other destinations. The root cause is CWE-918 (Server-Side Request Forgery): the deny-net check is evaluated only against the initial request URL, not against redirect destinations. When an intermediate server returns HTTP 301 or 307 pointing to a denied IP range, SurrealDB's HTTP client follows the redirect without re-running the ACL check, fully bypassing the restriction. The affected package is identified by CPE cpe:2.3:a:surrealdb:surrealdb:*:*:*:*:*:*:*:* covering the Rust crate rust/surrealdb across all vulnerable version lines.
RemediationAI
Upgrade SurrealDB to one of the three patched releases - 2.0.5, 2.1.5, or 2.2.2 - which introduce an HTTP redirect limit and re-validate each redirect destination against the configured network capability list before following it. The upstream code fix is tracked in pull request https://github.com/surrealdb/surrealdb/pull/5597. If an immediate upgrade is not feasible, convert the network capability configuration from a deny-list to an explicit allowlist using 'surreal start --allow-net <trusted-cidr-only>' (or the SURREAL_CAPS_ALLOW_NET environment variable), permitting only the specific, fully trusted external endpoints the application actually calls - this eliminates the bypass vector entirely because no implicit broad access exists to redirect into. Be aware that switching to an allowlist will break any http::* calls to endpoints not explicitly listed, so auditing current usage before applying this workaround is necessary. The most conservative compensating control, if outbound HTTP calls are not required, is to start SurrealDB without any --allow-net flag, which disables the http::* capability entirely. Full advisory and workaround details are at https://github.com/surrealdb/surrealdb/security/advisories/GHSA-5q9x-554g-9jgg.
Privilege escalation via second-order SurrealQL injection in SurrealDB before 2.0.5, 2.1.5, and 2.2.2 lets an authentica
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
Denial of service in SurrealDB before 2.2.2 allows any authenticated user to crash the database by submitting a crafted
Denial of service in SurrealDB before 2.2.2 lets an authenticated user crash the database by calling the string::replace
Memory exhaustion in SurrealDB's scripting subsystem allows authenticated users to bypass the server's recursion depth l
DNS rebinding SSRF bypass in SurrealDB's http::* query functions allows authenticated low-privileged users to reach inte
SurrealDB versions 3.0.0 through 3.1.4 expose a query-planner authorization bypass that allows authenticated record user
Local file read via DEFINE ANALYZER in SurrealDB before versions 2.1.5 and 2.2.2 allows authenticated users holding root
Resource exhaustion in SurrealDB's embedded JavaScript scripting feature allows authenticated users to deny service by s
Same weakness CWE-918 – Server-Side Request Forgery (SSRF)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2025-210489
GHSA-xhwm-9486-8rgr