- Top reward
- $1,500
- Top severity paid
- Critical
- Assets in scope
- 13
- Public CVEs
- 59
- Last change
- No changes yet
At a glance
What to know before you start testing.
- Pays from $1,500
- for critical bugs.
- Report on Sorona
- Submit through the program page.
- Partial safe harbor
- Some legal protection; read the terms.
- Replies within 3 days
- As the policy promises.
- Publish after a fix
- Coordinate the timing with the company.
Rewards
What Sorona lists as the payout for each severity.
| Severity | Relative size | Reward |
|---|---|---|
| Critical | $1,500+ | |
| High | $700+ | |
| Medium | $300+ | |
| Low |
|
$100 $100 / 1 month Claude Max |
- Response
-
Within 3 days
The policy commits to acknowledging a report within three business days, keeping you updated, holding it in confidence, offering safe harbour and crediting you in the resulting advisory
- Safe harbor
-
Partial
Sorona will not pursue legal action against you for good-faith research submitted to us in line with this policy. We cannot speak for the upstream project, its vendor, or any third party, and we do not grant authorization on their behalf.
Summarised with AI from the program policy on Sorona, read 12 Nov 2026, and checked word for word against it. Read the original
Scope
13 assets you may test, 6 excluded.
Web 1
- https://surrealdb.com
Products and areas 12
- Authentication in full, covering root, namespace, database and record users, the signin and signup flows, and session lifetime
- Custom API routes and the machinery that lets a definition specify the namespace and database a request runs against
- Embedded scripting functions and the boundary between them and the host process
- Graph traversal and record links, where a query reaches a record through a relationship rather than by selecting it directly
- Import, export and backup handling, plus the CLI and the embedded library builds that share the same core
- Live queries and change feeds, and whether a subscriber keeps receiving rows it has lost the right to see
- SurrealQL parsing and execution, including parameter binding, subqueries and the places a value can become syntax
- The HTTP REST surface, the RPC and WebSocket protocol, and any difference in how the two enforce the same check
- The permission model end to end: table, field and record-level PERMISSIONS clauses, and every place a clause is evaluated for a read, a write or a delete
- The published policy asks for any security issue privately by email or GitHub advisory and promises acknowledgement, confidentiality, safe harbour and credit in return. It names no assets and carves nothing out, so the SurrealDB tree itself is the boundary
- The storage engine layer as SurrealDB drives it, covering the in-memory, RocksDB, SurrealKV and TiKV backends
- Token handling: JWT verification, the algorithms accepted, JWKS fetching and caching, and the claims a token is trusted to assert
Out of scope (6)
- A deployment where an operator handed out root credentials or ran without authentication, which is a configuration decision
- Client SDKs maintained in their own repositories, where the defect is in the binding rather than the server
- Parser crashes already surfaced by the project's OSS-Fuzz integration, which will close as duplicates
- Resource exhaustion from an expensive query, absent an amplification factor that makes it a genuine denial of service
- surrealdb/surrealml and other satellite repositories. The model format library is a separate project from the core database
- Upstream storage engine defects in RocksDB or TiKV, unless SurrealDB's own use of them is what makes the issue reachable
Rules
What the policy asks of you, and the bug types it won't reward, quoted from Sorona's policy.
While testing
-
Submit through sorona.xyz.
-
Report privately to the address on the policy page or through the GitHub Security Advisory form on surrealdb/surrealdb .
-
Include the SurrealQL that reproduces it along with the DEFINE statements it runs against.
-
State the authentication level you held: root, namespace, database or record.
-
The SurrealQL parser and executor are fuzzed continuously through OSS-Fuzz, so a plain parser crash is likely known already.
Not accepted
-
Parser crashes already surfaced by the project's OSS-Fuzz integration, which will close as duplicates
-
Upstream storage engine defects in RocksDB or TiKV
-
A deployment where an operator handed out root credentials or ran without authentication
-
Resource exhaustion from an expensive query, absent an amplification factor
-
Client SDKs maintained in their own repositories, where the defect is in the binding rather than the server
Summarised with AI from the program policy on Sorona, read 12 Nov 2026, and checked word for word against it. Read the original
Changes
Tracked since 11 Nov 2026. Last checked 1 hour ago.
No changes yet. When the rewards or scope move, you will see it here and in the RSS feed.
Public CVEs
Published vulnerabilities in this vendor's products, from the NVD.
| CVE | Summary | Severity | Published |
|---|---|---|---|
| CVE-2026-63763 | SurrealDB before 2.5.0 and before 3.0.0-beta.3 contains a confused deputy privilege escalation vulnerability. Unprivileged users (e.g., those with the database editor role) can create or modify fields containing futures, functions, or closures. Because these are executed in the context of the invoking/querying user rather than their creator, an attacker can plant malicious logic that executes with | High 7.5 | 20 Jul 2026 |
| CVE-2026-63756 | SurrealDB versions before 3.1.0 contain a time-of-check/time-of-use race condition in the HTTP /rpc endpoint that allows unauthenticated requests to inherit authenticated session state. Unauthenticated attackers can send concurrent requests to the /rpc endpoint while legitimate authenticated traffic is active to execute operations with hijacked user privileges. | Critical 9.2 | 20 Jul 2026 |
| CVE-2026-63757 | SurrealDB versions before 3.1.0 contain a session hijacking vulnerability where the HTTP /rpc sessions method returns attached session UUIDs without authentication and accepts arbitrary session fields with no ownership verification. Unauthenticated attackers can enumerate session UUIDs and impersonate authenticated sessions to read, write, delete data and escalate privileges. | High 8.7 | 20 Jul 2026 |
| CVE-2026-63758 | SurrealDB versions before 3.1.0 contain an authorization bypass vulnerability in the KILL statement that allows authenticated database users to terminate other users' LIVE SELECT subscriptions. Attackers can issue KILL statements with target live query UUIDs to disrupt real-time data subscriptions of other users without ownership verification. | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63759 | SurrealDB before 3.1.0 fails to enforce recursion depth limits in the type/kind parser when processing nested type annotations. Authenticated attackers can send queries with deeply nested type annotations to exhaust server memory and crash the process. | High 7.1 | 20 Jul 2026 |
| CVE-2026-63760 | SurrealDB before 3.1.0 fails to enforce the configured recursion depth limit in the value and JSON parser when processing nested braces, brackets, or parentheses. Unauthenticated attackers can send deeply nested JSON payloads to the WebSocket /rpc endpoint to exhaust server memory and crash the process. | High 8.7 | 20 Jul 2026 |
| CVE-2026-63761 | SurrealDB before 3.1.0 silently substitutes the ES384 algorithm when a JWT access method is configured with ALGORITHM ES512 (DEFINE ACCESS ... TYPE JWT ALGORITHM ES512), because the underlying jsonwebtoken crate (v10.x) has no ES512 variant and the mapping defaults to ES384 without any error, warning, or log message. Users who supply the correct P-521 key for ES512 experience authentication handsh | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63762 | SurrealDB before v2.6.1 (and before v3.0.0-beta.3) contains a denial of service vulnerability in its embedded JavaScript scripting engine, which is enabled via the --allow-scripting capability (disabled by default). Any user able to execute arbitrary queries — including unauthenticated guests when --allow-guests is enabled — can use built-in string functions to construct a large string and pass it | Medium 6.0 | 20 Jul 2026 |
| CVE-2026-63753 | SurrealDB before 3.1.0 fails to refresh authentication state in LIVE SELECT subscriptions when session state changes. Attackers can continue receiving real-time notifications under revoked or expired session credentials until the connection closes. | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63749 | SurrealDB versions before 3.1.0 contain an authentication bypass vulnerability in LIVE SELECT subscriptions where permission expressions referencing $value, $before, $after, or $event are evaluated against attacker-controlled bindings instead of actual documents. Authenticated subscribers can bind chosen values to these parameter names and register LIVE SELECT queries to receive notifications for | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63750 | SurrealDB versions before 3.1.0 fail to apply the SURREAL_WEBSOCKET_MAX_MESSAGE_SIZE limit to anonymous /sql WebSocket connections, allowing attackers to buffer unbounded frames in the per-connection read buffer. Attackers can stream WebSocket frames larger than the configured limit across multiple concurrent connections to consume excessive memory and degrade /sql availability. | Medium 6.9 | 20 Jul 2026 |
| CVE-2026-63751 | SurrealDB versions before 3.1.0 contain a field-level permission bypass vulnerability in JSON Patch operations that allows authenticated users to read protected fields. Attackers can use UPDATE PATCH with an empty from pointer in copy or move operations to duplicate all record fields, including those restricted by field-level SELECT permissions, into attacker-chosen destination fields. | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63752 | SurrealDB before 3.1.0 contains an authorization bypass vulnerability in the RELATE statement that allows authenticated users with CREATE permission to overwrite existing edge records without UPDATE permission. Attackers can issue a RELATE statement with a SET id clause pointing to an existing edge id, causing the storage layer to silently overwrite the target record instead of rejecting the opera | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63754 | SurrealDB versions before 3.1.0 contain a denial of service vulnerability where malicious LIVE queries with WHERE clauses that evaluate to errors cause all CREATE, UPDATE, and DELETE operations on the watched table to fail. An authenticated user with only select permission can prevent write operations on a table for any user, including root, by registering a LIVE query that triggers evaluation err | High 7.1 | 20 Jul 2026 |
| CVE-2026-63755 | SurrealDB before 3.1.0 evaluates user-supplied WHERE clauses in SELECT statements (and SET/MERGE/CONTENT/PATCH clauses in UPDATE, UPSERT, INSERT ON DUPLICATE KEY UPDATE, and RELATE update-variant statements) against full record data before enforcing PERMISSIONS FOR SELECT WHERE restrictions. An authenticated user — including Record and Scope users — can exploit this ordering flaw to read the full | High 7.1 | 20 Jul 2026 |
| CVE-2026-63742 | SurrealDB versions before 3.1.0 contain a field-level SELECT permission bypass vulnerability in indexed COUNT fast paths. Attackers can execute COUNT queries on indexed fields with field-level SELECT restrictions to confirm or recover restricted field values through repeated guesses. | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63743 | SurrealDB before 3.1.0 contains a capability bypass vulnerability in HTTP redirect handling that allows authenticated users to circumvent port-scoped --deny-net rules. Attackers can chain an HTTP redirect from an allowed hostname to a denied host:port combination, and the redirect is followed because the port information is dropped during redirect policy evaluation. | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63744 | 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. | Medium 5.1 | 20 Jul 2026 |
| CVE-2026-63745 | SurrealDB versions before 3.1.0 contain an authorization bypass vulnerability where authenticated users can spoof composite record-id field values by writing to editable body fields. Attackers can bypass permission rules that gate access on id components like tenant isolation by setting same-named body fields to spoofed values that permission checks incorrectly read instead of the immutable id key | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63746 | SurrealDB versions before 3.1.0 fail to enforce table SELECT permissions when traversing graph edges or back-references. Authenticated users can read records from any table reachable through graph edges regardless of the target table's PERMISSIONS FOR select clause. | High 7.1 | 20 Jul 2026 |
| CVE-2026-63747 | SurrealDB versions before 3.1.0 contain a denial of service vulnerability in the RPC use handler that panics when db is set without a namespace. Unauthenticated attackers can send a malformed WebSocket message to the /rpc endpoint to crash the server process. | High 8.7 | 20 Jul 2026 |
| CVE-2026-63748 | SurrealDB versions before 3.1.0 contain an information disclosure vulnerability where authenticated users with UPDATE access can read field values hidden by field-level SELECT permissions through error messages. Attackers can trigger arithmetic or extend operations on hidden fields to embed raw operand values in error responses, bypassing field-level access controls. | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63735 | SurrealDB versions before 3.2.0 fail to validate namespace and database scope in custom API routes, allowing authenticated users to invoke endpoints in different namespaces/databases. Attackers with valid credentials for any namespace/database can access custom API endpoints in other tenants by specifying the target scope in the URL path, reading sensitive data or triggering unintended operations. | High 8.6 | 20 Jul 2026 |
| CVE-2026-63736 | SurrealDB before 3.2.0 contains a server-side request forgery vulnerability in the JWKS fetcher that validates only the URL hostname string against allow-lists without checking resolved IP addresses. An Owner role attacker can point an access method at an allow-listed hostname resolving to private or loopback addresses, causing the server to issue GET requests to internal addresses that would be b | Medium 5.1 | 20 Jul 2026 |
| CVE-2026-63737 | SurrealDB versions before 3.1.5 contain a denial of service vulnerability where authenticated users can crash the server with queries containing long chains of operators. Attackers can submit queries with tens of thousands of chained operators that create unbounded expression trees, causing stack overflow during query processing and aborting the entire process. | High 7.1 | 20 Jul 2026 |
| CVE-2026-63738 | SurrealDB versions 3.1.0 before 3.1.5 fail to enforce field-level SELECT permissions when records are accessed through graph-edge or back-reference traversals. Attackers with table-level SELECT access can read field values hidden by field-level permissions by materializing records through graph traversals instead of direct table scans. | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63739 | SurrealDB before 3.1.5 contains an arbitrary file read vulnerability in the DEFINE ANALYZER mapper filter that allows database users with EDITOR or OWNER roles to read files accessible to the SurrealDB process. Attackers can specify arbitrary file paths in the mapper filter and retrieve file contents through query error messages when the SURREAL_FILE_ALLOWLIST is empty or not configured. | High 8.3 | 20 Jul 2026 |
| CVE-2026-63740 | SurrealDB versions before 3.1.4 fail to properly enforce SELECT permissions on array elements (field.*) for record users, leaking denied array elements instead of hiding them. Attackers with record scope access can read array elements that element-level permissions should deny by exploiting incorrect index handling during permission filtering. | High 7.1 | 20 Jul 2026 |
| CVE-2026-63741 | SurrealDB versions before 3.1.0 fail to validate DEFINE NAMESPACE or DEFINE DATABASE permissions when processing USE NS and USE DB statements. Unauthenticated attackers can create arbitrary namespaces and databases by issuing USE commands, bypassing authorization checks in the RPC use method and SurrealQL executor. | Medium 6.9 | 20 Jul 2026 |
| CVE-2026-63733 | SurrealDB versions before 3.2.0 contain a permissions bypass vulnerability where data-modifying statements within PERMISSIONS clauses execute with enforcement disabled. Attackers with permission to perform a guarded operation can write to tables they lack permission for by embedding CREATE, UPDATE, DELETE, or UPSERT statements in the PERMISSIONS clause, causing unintended writes and data corruptio | Medium 5.3 | 20 Jul 2026 |
| CVE-2026-63734 | SurrealDB versions before 3.2.0 contain a denial of service vulnerability in the SurrealML header parser that allows authenticated Owner-role users to crash the server by uploading a malformed .surml file to the /ml/import endpoint. Attackers can supply non-numeric input-dimensions or other malformed header fields that trigger unchecked unwrap calls, causing a panic that aborts the entire server p | Medium 6.9 | 20 Jul 2026 |
| CVE-2025-71392 | SurrealDB before 2.0.5, 2.1.x before 2.1.5, and 2.2.x before 2.2.2 fails to properly escape table and field names in the command-line export command. An authenticated System User with OWNER or EDITOR roles can create tables or fields with malicious names containing SurrealQL. When a higher-privileged user subsequently imports the exported backup, the injected SurrealQL executes, enabling privilege | Critical 9.4 | 18 Jul 2026 |
| CVE-2025-71393 | SurrealDB before 2.2.2 with scripting enabled fails to properly enforce recursion limits when native functions contain embedded JavaScript that issues new queries. Authenticated attackers can bypass the recursion limit by chaining native and JavaScript function calls to trigger infinite recursion and exhaust server memory. | Medium 6.0 | 18 Jul 2026 |
| CVE-2025-71394 | SurrealDB versions before 2.2.2 contain a local file read vulnerability in the DEFINE ANALYZER statement that allows authenticated users to read arbitrary files on the file system. Attackers with root, namespace, or database level privileges can point analyzers to arbitrary file paths and exfiltrate content from two-column tab-separated files. | Low 2.3 | 18 Jul 2026 |
| CVE-2025-71395 | SurrealDB versions before 2.2.2 contain a memory exhaustion vulnerability in the string::replace function that fails to restrict resulting string length when using regex patterns. An authenticated attacker can craft a malicious query to exhaust server memory through unbounded string allocations, causing denial of service. | High 7.1 | 18 Jul 2026 |
| CVE-2025-71396 | SurrealDB before 2.0.5, 2.1.x before 2.1.5, and 2.2.x before 2.2.2 does not enforce a default execution-time limit on embedded JavaScript scripting functions when the scripting capability is explicitly enabled (via --allow-scripting or --allow-all). An authenticated attacker can submit long-running JavaScript functions to exhaust server resources and cause a denial of service. Scripting is disable | Low 2.3 | 18 Jul 2026 |
| CVE-2025-71397 | SurrealDB before 2.0.5, 2.1.x before 2.1.5, and 2.2.x before 2.2.2 allows authenticated users with OWNER or EDITOR permissions (at the root, namespace, or database level) to define custom database functions via DEFINE FUNCTION using nested FOR loops. Although a single loop's iteration count is constrained, nesting multiple loops (e.g., each with 1,000,000 iterations) is not, so an attacker can exe | High 7.1 | 18 Jul 2026 |
| CVE-2025-71398 | 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. | Medium 5.8 | 18 Jul 2026 |
| CVE-2024-58366 | SurrealDB before 1.1.1 contains a format string vulnerability in the rquickjs Exception::throw_type function when scripting is enabled. Attackers with scripting privileges can supply format string sequences in error inputs to read arbitrary memory or execute code with SurrealDB process privileges. | Critical 9.0 | 18 Jul 2026 |
| CVE-2024-58367 | SurrealDB versions before 2.0.4 fail to properly enforce field permissions during SELECT, UPDATE, and DELETE operations, allowing authorized users to access unauthorized field values through various query techniques. Attackers can exploit SELECT VALUE operations, field aliasing, function arguments, WHERE clause filtering, RETURN BEFORE clauses, and SET clause references to leak protected field con | High 7.1 | 18 Jul 2026 |
| CVE-2024-58368 | SurrealDB versions before 1.1.0 fail to properly parse the ID, DB, and NS headers in HTTP REST API requests containing special characters. Unauthenticated attackers can send crafted HTTP requests with malformed header values to trigger an uncaught exception that crashes the server. | High 8.7 | 18 Jul 2026 |
| CVE-2024-58369 | SurrealDB versions before 1.1.1 fail to properly validate invocation of custom parameters and functions at root or namespace levels, causing server panic. Authorized clients can invoke these entities at unsupported levels to crash the SurrealDB server, resulting in denial of service. | High 7.1 | 18 Jul 2026 |
| CVE-2024-58370 | SurrealDB versions before 1.1.0 fail to enforce recursion depth limits when parsing nested SurrealQL statements including IF, RELATE, and attribute access idioms. Authorized attackers can submit queries with excessive nesting depth to cause stack overflow and crash the server. | High 7.1 | 18 Jul 2026 |
| CVE-2025-71390 | SurrealDB before 2.2.6, 2.3.6, and 2.1.8 (and 3.0.0-alpha.7 and earlier) fails to validate DNS-resolved hostnames against --deny-net network access restrictions in its http::* functions. An authenticated user can invoke http::<fn>(<url>) with a hostname that resolves to a denied IP address, causing the server to issue the request anyway and return the response. This bypasses network access control | Medium 5.8 | 18 Jul 2026 |
| CVE-2025-71391 | SurrealDB versions before 2.2.2 contain an uncaught exception vulnerability in the net module that allows authenticated users to crash the database. Attackers can send crafted HTTP queries containing null bytes to the /sql endpoint, causing an unhandled exception that crashes the SurrealDB instance and any dependent applications. | High 7.1 | 18 Jul 2026 |
| CVE-2024-58364 | SurrealDB versions before 1.2.1 contain an uncaught exception handling vulnerability in span rendering when parsing queries with errors on line terminator characters. Authorized clients can submit malformed queries that trigger a panic in the span rendering code, crashing the server and causing denial of service. | High 7.1 | 18 Jul 2026 |
| CVE-2024-58365 | SurrealDB versions before 1.2.0 contain an uncaught exception vulnerability in the query executor when processing calls to nonexistent built-in functions. Authorized clients can craft pre-parsed queries invoking nonexistent functions to trigger a panic that crashes the server. | High 7.1 | 18 Jul 2026 |
| CVE-2024-58357 | SurrealDB versions before 2.1.0 contain an uncaught exception vulnerability in the rand::time() function that panics when unwrap is called on a None result from timestamp_opt. Authorized clients can repeatedly invoke rand::time() to reliably trigger server panics and cause denial of service. | High 7.1 | 18 Jul 2026 |
| CVE-2024-58358 | SurrealDB versions before 2.1.0 contain a denial of service vulnerability in role conversion that allows privileged owner users to define users with nonexistent roles. Attackers can trigger an uncaught panic by signing in with a user assigned an invalid role, crashing the server. | Medium 6.9 | 18 Jul 2026 |
| CVE-2024-58359 | SurrealDB versions before 2.1.0 contain a denial of service vulnerability in the sorting mechanism when using ORDER BY rand() clause. Authorized clients can execute queries with ORDER BY rand() to trigger a panic in the sorting function, crashing the server. | High 7.1 | 18 Jul 2026 |
| CVE-2024-58361 | SurrealDB versions before 2.0.4 contain an uncaught exception handling vulnerability in the parser error rendering code when processing empty strings. Authorized clients can execute malformed queries with empty string conversions to record, duration, or datetime types that cause a panic in error rendering, crashing the server. | High 7.1 | 18 Jul 2026 |
| CVE-2024-58362 | SurrealDB before 1.5.5 (and 2.0.0-beta before 2.0.0-beta.3) accepts an arbitrary object in the signin and signup operations of the RPC API without recursively validating it for non-computed values. When a record access method defines a SIGNIN or SIGNUP query and the RPC API is exposed to untrusted users, an unauthenticated attacker can encode a binary object containing a subquery using the bincode | High 8.7 | 18 Jul 2026 |
| CVE-2024-58363 | SurrealDB before 1.5.4 and 2.0.0-alpha.1 before 2.0.0-alpha.6 fails to properly validate authentication when a scope user switches databases using the USE clause or use method. Attackers with an authenticated session can impersonate an unrelated user in a different database if a user record with an identical identifier exists, allowing unauthorized actions if permissions rely solely on the $auth p | Medium 5.3 | 18 Jul 2026 |
| CVE-2023-54366 | SurrealDB before 1.0.1 sets default table permissions to FULL instead of NONE, allowing SELECT, CREATE, UPDATE, and DELETE operations on tables without explicit permissions. Attackers with database access or unauthenticated users on publicly exposed instances can perform unrestricted operations on unprotected tables within their authorization scope. | High 8.7 | 18 Jul 2026 |
| CVE-2024-58356 | SurrealDB before 2.1.4 silently fails to overwrite table definitions when the DEFINE TABLE ... OVERWRITE clause is used on tables defined with TYPE RELATION. Because table definitions include the PERMISSIONS clause, an attempt to tighten a table's permissions via OVERWRITE does not take effect, and the administrator may incorrectly believe the change was applied. As a result, a client authorized t | Low 2.3 | 18 Jul 2026 |
Original policy
Copied from sorona.xyz on 12 Nov 2026. The summaries on this page are made from it; the live page may have changed since.
Skip to content What this pays This project runs no bounty of its own. sorona.xyz pays you directly on qualified, reproduced findings. Severity │ sorona.xyz pays Critical │ $1,500+ High │ $700+ Medium │ $300+ Low │ $100 / 1 month Claude Max Submit a vulnerability CVE history 34 Last 12 months 59 Lifetime Permission bypass 45 % Auth and scope confusion 25 % SSRF and outbound fetch 15 % Query parsing and execution 15 % Latest advisories Loading the feed Overview SurrealDB is a Rust database that puts document, graph and key-value models behind one query language, and its selling point is that clients talk to it directly instead of going through an API tier. The permission system is therefore the only thing between a browser and the data. GHSA-848m-r628-vrxw is the reference point: a custom API route let an authenticated caller override the namespace and database its query ran against, crossing the tenant boundary outright. Thirty-four advisories came out of this project in twelve months, the highest researcher throughput of any database in this study, and none of those reporters were paid. sorona.xyz pays you directly on qualified, reproduced findings. In scope The published policy asks for any security issue privately by email or GitHub advisory and promises acknowledgement, confidentiality, safe harbour and credit in return. It names no assets and carves nothing out, so the SurrealDB tree itself is the boundary The permission model end to end: table, field and record-level PERMISSIONS clauses, and every place a clause is evaluated for a read, a write or a delete Authentication in full, covering root, namespace, database and record users, the signin and signup flows, and session lifetime Token handling: JWT verification, the algorithms accepted, JWKS fetching and caching, and the claims a token is trusted to assert The HTTP REST surface, the RPC and WebSocket protocol, and any difference in how the two enforce the same check Custom API routes and the machinery that lets a definition specify the namespace and database a request runs against SurrealQL parsing and execution, including parameter binding, subqueries and the places a value can become syntax Graph traversal and record links, where a query reaches a record through a relationship rather than by selecting it directly Live queries and change feeds, and whether a subscriber keeps receiving rows it has lost the right to see Embedded scripting functions and the boundary between them and the host process The storage engine layer as SurrealDB drives it, covering the in-memory, RocksDB, SurrealKV and TiKV backends Import, export and backup handling, plus the CLI and the embedded library builds that share the same core Out of scope surrealdb/surrealml and other satellite repositories. The model format library is a separate project from the core database Upstream storage engine defects in RocksDB or TiKV, unless SurrealDB's own use of them is what makes the issue reachable Parser crashes already surfaced by the project's OSS-Fuzz integration, which will close as duplicates A deployment where an operator handed out root credentials or ran without authentication, which is a configuration decision Resource exhaustion from an expensive query, absent an amplification factor that makes it a genuine denial of service Client SDKs maintained in their own repositories, where the defect is in the binding rather than the server Most-valued findings Permission clause bypass in any direction. The densest part of the record: writes performed inside a PERMISSIONS clause escaped table permissions in GHSA-66r2-5gwj-gxm2, and field-level SELECT permissions were defeated through graph and reference traversal in GHSA-hv6h-hc26-q48p Namespace or database scope override, the GHSA-848m-r628-vrxw shape, where a caller runs against a tenant it was never authenticated into. On a database this multi-tenant, that is the ceiling Anything that reaches a record through a relationship, a reference or a nested query when a direct select on it would have been refused Token and JWKS handling: a JWKS URL resolving to a private address gave server-side request forgery in GHSA-5x4x-2946-qr67, and the same code path decides which keys sign a trusted token Authentication defects in record-level users, where the signup and signin logic is written by the application author but enforced by the engine Injection into SurrealQL through a parameter, a field name or a definition, particularly anywhere a caller-supplied value is concatenated rather than bound Memory safety and panics in the Rust core that a remote caller can reach, given how many deployments expose the database directly to untrusted clients Program rules Submit through sorona.xyz. This project runs no bounty of its own; we validate, coordinate disclosure with the maintainers, and pay you directly. Report privately to [email protected] or through the GitHub Security Advisory form on surrealdb/surrealdb . The policy publishes both, and the security.txt confirms them with a policy URL and preferred languages The policy commits to acknowledging a report within three business days, keeping you updated, holding it in confidence, offering safe harbour and crediting you in the resulting advisory Include the SurrealQL that reproduces it along with the DEFINE statements it runs against. Most of this project's record turns on the interaction between a schema definition and a query, so a bare query is not reproducible State the authentication level you held: root, namespace, database or record. Almost the whole 2026 record is about a caller acting above the level it was granted The SurrealQL parser and executor are fuzzed continuously through OSS-Fuzz, so a plain parser crash is likely known already. The permission and authentication surface is where the unclaimed ground is There is no reward language anywhere in the policy. Acknowledgement, safe harbour and credit are the whole of what the project offers Disclosure Coordinated privately by email or through the GitHub advisory form, with acknowledgement promised inside three business days, then published as a GHSA against a fixed release with the reporter credited. Volume is the thing to plan around. Thirty-four advisories in twelve months means your report joins a queue that clears in release batches, so expect the embargo to run to the next security release rather than to a fixed day count. Safe harbor Sorona will not pursue legal action against you for good-faith research submitted to us in line with this policy. We cannot speak for the upstream project, its vendor, or any third party, and we do not grant authorization on their behalf. You are responsible for understanding and following the laws that apply to you, wherever you are, and for staying within any scope the project has defined. Submit a vulnerability