{"id":"GHSA-3633-g6mg-p6qq","revision":"c845b5cec1ce4ee49aed2aa296ef1dc8","records":[{"revision":"c845b5cec1ce4ee49aed2aa296ef1dc8","observedAt":"2026-10-24T13:19:54.901+00:00","statement":{"source":"osv","id":"GHSA-3633-g6mg-p6qq","aliases":["CVE-2025-71395"],"title":"SurrealDB memory exhaustion via string::replace using regex ","description":"An authenticated user can craft a query using the `string::replace` function that uses a Regex to perform a string replacement. As there is a failure to restrict the resulting string length, this enables an attacker to send a `string::replace` function to the SurrealDB server exhausting all the memory of the server due to string allocations. This eventually results in a Denial-of-Service situation for the SurrealDB server.\n\nThis issue was discovered and patched during an code audit and penetration test of SurrealDB by cure53. Using CVSSv4 definitions, the severity is High. \n\n### Impact\nAn authenticated user can crash the SurrealDB instance through memory exhaustion\n\n### Patches\nA patch has been created that enforces a limit on string length  `SURREAL_GENERATION_ALLOCATION_LIMIT`\n\n- Versions 2.0.5, 2.1.5, 2.2.2, and later are not affected by this issue\n\n### Workarounds\nAffected users who are unable to update may want to limit the ability of untrusted clients to run the `string::replace` function in the affected versions of SurrealDB using the `--deny-functions` flag described within [Capabilities](https://surrealdb.com/docs/surrealdb/security/capabilities#functions) or the equivalent `SURREAL_CAPS_DENY_FUNC` environment variable.\n\n### References\n\n[SurrealQL Documentation - DB Functions (string::replace)](https://surrealdb.com/docs/surrealql/functions/database/string#stringreplace)\n[SurrealDB Documentation - Capabilities](https://surrealdb.com/docs/surrealdb/security/capabilities#functions)\n[SurrealDB Documentation - Environment Variables](https://surrealdb.com/docs/surrealdb/cli/env)\n[#5619 ](https://github.com/surrealdb/surrealdb/pull/5619)\n[#5638 ](https://github.com/surrealdb/surrealdb/pull/5638)","state":0,"publishedAt":"2025-04-11T14:08:03+00:00","modifiedAt":"2026-07-19T03:56:48.0286698+00:00","affected":[{"ecosystem":"crates.io","name":"surrealdb","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"2.2.0"},{"kind":"fixed","version":"2.2.2"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"crates.io","name":"surrealdb","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"2.1.0"},{"kind":"fixed","version":"2.1.5"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"crates.io","name":"surrealdb","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"2.0.5"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V4","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"HIGH"}],"references":["https://github.com/surrealdb/surrealdb/security/advisories/GHSA-3633-g6mg-p6qq","https://github.com/surrealdb/surrealdb/pull/5619","https://github.com/surrealdb/surrealdb/pull/5638","https://github.com/surrealdb/surrealdb"],"sourceUrl":"https://github.com/advisories/GHSA-3633-g6mg-p6qq","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-3633-g6mg-p6qq","identifiers":["GHSA-3633-g6mg-p6qq","CVE-2025-71395"]},"retained":false,"historicalAffected":[]}],"coverage":[]}