Description
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 serialization format and supply it in place of credentials. The subquery is then executed within the database owner's SIGNIN/SIGNUP query under a system user session with the editor role, allowing the attacker to select, create, update, and delete non-IAM resources (though not view the query results directly, and not affect IAM resources, which require the owner role).
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| surrealdb | surrealdb | < 1.5.5, 2.0.0-beta.1 – < 2.0.0-beta.3, < 1.5.2 | 1.5.5 |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| crates.io | surrealdb | < 1.5.5 | 1.5.5 | GHSA-64f8-pjgr-9wmr |
| crates.io | surrealdb | >= 2.0.0-beta.1, < 2.0.0-beta.3 | 2.0.0-beta.3 | GHSA-64f8-pjgr-9wmr |
| crates.io | surrealdb-core | < 1.5.2 | 1.5.2 | GHSA-64f8-pjgr-9wmr |
References
- GitHub Security Advisory (GHSA-64f8-pjgr-9wmr) vendor-advisory
- VulnCheck Advisory: SurrealDB before 1.5.5 Query Injection via RPC API third-party-advisory