GHSA-q3gg-m8hr-h4x4: Externally Controlled Format String in Scripting Functions
The rquickjs
crate used by SurrealDB implements Rust bindings to the QuickJS C library and is used to execute SurrealDB scripting functions. The rquickjs
function Exception::throw_type
takes a string and returns an error object. Prior to version 0.4.2
of the crate, this string would be fed directly into printf
, which will receive the error string as a format string with no additional arguments, leading to undefined behavior. This issue triggers when a SurrealDB scripting function returns an error and its input contains a format string such as %s
or %d
.
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
.
References
Detect and mitigate GHSA-q3gg-m8hr-h4x4 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →