{"affected":[{"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-q8qp-67f9-wr3f/GHSA-q8qp-67f9-wr3f.json"},"package":{"ecosystem":"crates.io","name":"surrealdb","purl":"pkg:cargo/surrealdb"},"ranges":[{"events":[{"introduced":"0"},{"fixed":"3.1.0"}],"type":"SEMVER"}]}],"aliases":["CVE-2026-63759"],"database_specific":{"cwe_ids":["CWE-674"],"github_reviewed":true,"github_reviewed_at":"2026-07-01T20:05:14Z","nvd_published_at":null,"severity":"MODERATE"},"details":"The SurrealDB type/kind parser did not enforce the configured recursion depth limit when parsing nested type annotations. The expression parser already enforced the limit for analogous constructs; the kind parser omitted it. An authenticated attacker could send a query with deeply nested type annotations (e.g., `array<option<array<option<...>>>>`) and exhaust server memory, crashing the process.\n\nThis is an incomplete fix for [GHSA-6r8p-hpg7-825g](https://github.com/surrealdb/surrealdb/security/advisories/GHSA-6r8p-hpg7-825g), which addressed the same class of bug in the expression parser but did not cover the kind/type annotation parser code path.\n\n### Impact\n\nAn authenticated user with query execution privileges can crash a SurrealDB server with a single WebSocket message containing deeply nested type annotations.\n\n### Patches\n\nA patch has been introduced that wraps `parse_concrete_kind` and the `OPTION<...>` arm of `parse_inner_kind` with `enter_object_recursion!`, bounding the recursive cycle `parse_concrete_kind → parse_inner_kind → parse_inner_single_kind → parse_concrete_kind` at the configured `object_recursion_limit` (default 100). Regression tests cover both cast and `DEFINE FIELD` paths.\n\n- Versions 3.1.0 and later are not affected by this issue.\n\n### Workarounds\n\nRestrict the ability of untrusted users to execute arbitrary queries via the `--deny-arbitrary-query` capability flag for the affected user classes (guest, record, or system). Disabling untrusted access to the WebSocket `/rpc` endpoint also prevents exploitation; the HTTP `/sql` endpoint's 1 MiB body limit constrains nesting to a depth where OOM is not feasible.","id":"GHSA-q8qp-67f9-wr3f","modified":"2026-11-04T02:56:08.372827705Z","published":"2026-07-01T20:05:14Z","references":[{"type":"WEB","url":"https://github.com/surrealdb/surrealdb/security/advisories/GHSA-q8qp-67f9-wr3f"},{"type":"WEB","url":"https://github.com/surrealdb/surrealdb/commit/61d509b766afdf67cc26d8203fd7dc583c8d77aa"},{"type":"PACKAGE","url":"https://github.com/surrealdb/surrealdb"}],"schema_version":"1.9.0","severity":[{"score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","type":"CVSS_V3"}],"summary":"SurrealDB vulnerable to Denial of Service due to nested types annotations"}