SurrealDB no JavaScript script function default timeout could facilitate DoS
Key facts
- Attack vector
- —
- Privileges required
- —
- User interaction
- —
- Attack complexity
- —
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- —
- Fix status
- Fixed
No CVSS vector from any source. Fix status from GitHub. Impact type from CWE-770.
Summary
Through enabling the scripting capability. SurrealDB allows for advanced functions with complicated logic, by allowing embedded functions to be written in JavaScript. These functions are bounded for memory and stack size, but not in time. An attacker could launch a number of long running functions that could potentially facilitate a Denial Of Service attack. This vulnerability can only affect SurrealDB servers explicitly enabling the scripting capability with `--allow-scripting` or `--allow-all` and equivalent environment variables `SURREAL_CAPS_ALLOW_SCRIPT=true` and `SURREAL_CAPS_ALLOW_ALL=true`. This issue was discovered and patched during an code audit and penetration test of SurrealDB by cure53, the severity defined within cure53's preliminary finding is Low, matched by our CVSS v4 assessment. ### Impact An attacker can use the scripting capabilities of SurrealDB to run a series of long running functions to facilitate a Denial Of Service attack. ### Patches A default timeout for the scripting functions has been implemented with a configurable `SURREAL_SCRIPTING_MAX_TIME_LIMIT` environment variable - Versions 2.0.5, 2.1.5, 2.2.2 and later are not affected by this issue. ### Workarounds For users that cannot upgrade. Deny execution of embedded scripting functions through the configuration of [capabilities](https://surrealdb.com/docs/surrealdb/security/capabilities#capabilities) by starting SurrealDB with the `--deny-scripting` flag or the equivalent environment variable `SURREAL_CAPS_DENY_SCRIPT=true`. This has a usability implication, although scripting functions are disabled by default. ### References [5597](https://github.com/surrealdb/surrealdb/pull/5597) [SurrealDB Documentation - Capabilities](https://surrealdb.com/docs/surrealdb/security/capabilities) [SurrealQL Documentation - Scripting Functions](https://surrealdb.com/docs/surrealql/functions/script)
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| — | surrealdb (crates.io) | 2.2.0 to before 2.2.2 | 2.2.2 | Patch available | GHSA-3824-qmfq-2qv7 |
| — | surrealdb (crates.io) | before 2.0.5 | 2.0.5 | Patch available | GHSA-3824-qmfq-2qv7 |
| — | surrealdb (crates.io) | 2.1.0 to before 2.1.5 | 2.1.5 | Patch available | GHSA-3824-qmfq-2qv7 |
- surrealdb (crates.io) Vendor— Affected 2.2.0 to before 2.2.2 Fixed in 2.2.2 Patch available GHSA-3824-qmfq-2qv7
- surrealdb (crates.io) Vendor— Affected before 2.0.5 Fixed in 2.0.5 Patch available GHSA-3824-qmfq-2qv7
- surrealdb (crates.io) Vendor— Affected 2.1.0 to before 2.1.5 Fixed in 2.1.5 Patch available GHSA-3824-qmfq-2qv7
Remediation
- Fix · GHSA-3824-qmfq-2qv7 surrealdb (crates.io) Fixed in 2.2.2 Advisory →
- Fix · GHSA-3824-qmfq-2qv7 surrealdb (crates.io) Fixed in 2.0.5 Advisory →
- Fix · GHSA-3824-qmfq-2qv7 surrealdb (crates.io) Fixed in 2.1.5 Advisory →
Timeline
- 2026-10-03 Threatist record created from GHSA-3824-qmfq-2qv7
References
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences