# CVE-2026-121416: SurrealDB deny-funcs capability bypass via method-style invocations

Source: https://junglewise.ai/threats/cve-2026-121416-surrealdb-2-0-0-before-3-3-1-does-not-enforce-deny-funcs  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-11-03. Updated: 2026-11-03  
License: CC BY 4.0 with a link back

CVE-2026-121416 · Severity: high · CVSS 7.1 · Published 2026-11-03

SurrealDB is a real-time database with function-level security controls that allow operators to deny access to specific function families. In versions 2.0.0 through 3.3.0, authenticated users can bypass these restrictions by invoking functions using method syntax (e.g., [1,2].map() or $f.put()), allowing them to execute denied functions including file read and write operations. This completely voids the deny-funcs security policy for deployments that rely on it to restrict access to sensitive operations.

Technologies: [Surrealdb](https://junglewise.ai/threats/technologies/surrealdb-surrealdb). Vendors: [SurrealDB](https://junglewise.ai/threats/vendors/surrealdb).

## Quick answers

**Is CVE-2026-121416 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-121416 being exploited in the wild.

**How severe is CVE-2026-121416?** High severity, with a CVSS score of 7.1, published 3 November 2026.

**Which products and versions are affected?** Surrealdb 2.0.0 before 3.3.1.

**Is there a fix for CVE-2026-121416?** Yes: fixed in 3.3.1. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-121416 attacked?** It is attacked over the network.

**Am I affected by CVE-2026-121416?** Check whether you run Surrealdb at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- Fixed in 3.3.1

## Technical details

The vulnerability is an improper access control flaw where MethodPart::evaluate in the streaming engine invokes resolved functions without calling check_allowed_function, bypassing the --deny-funcs capability check that is enforced at other call sites. An authenticated user submitting queries can invoke denied function families (array::map, file::get/put, math::abs, etc.) via method syntax to gain unauthorized access; the legacy engine also has partial bypass due to dead branches and canonicalization mismatches. The fix requires adding capability checks in MethodPart::evaluate and the planner resolution point.

## Affected products

- SurrealDB SurrealDB 2.0.0 before 3.3.1

## Timeline

- 2026-10-19: disclosed: GitHub Security Advisory published
- 2026-11-03: advisory: CVE-2026-121416 published

## References

- [https://github.com/surrealdb/surrealdb/security/advisories/GHSA-p296-7pr4-87rr](https://github.com/surrealdb/surrealdb/security/advisories/GHSA-p296-7pr4-87rr)
- [https://www.vulncheck.com/advisories/surrealdb-2.0.0-before-3.3.1-deny-funcs-capability-bypass-via-method-style-invocations](https://www.vulncheck.com/advisories/surrealdb-2.0.0-before-3.3.1-deny-funcs-capability-bypass-via-method-style-invocations)

## Related threats

- [SurrealDB unbounded recursion in value serialization](https://junglewise.ai/threats/cve-2026-121423-surrealdb-before-3-3-0-contains-an-unbounded-recursion)
- [SurrealDB server-side request forgery in JWKS URL validation](https://junglewise.ai/threats/cve-2026-121422-surrealdb-from-3-1-0-before-3-3-0-contains-a-server-side-request)
- [SurrealDB server-side request forgery in network deny rules](https://junglewise.ai/threats/cve-2026-121421-surrealdb-3-1-0-before-3-3-0-contains-a-server-side-request)
- [SurrealDB MCP session hijack via BoundSubject fingerprint collision](https://junglewise.ai/threats/cve-2026-121419-surrealdb-from-3-1-0-before-3-3-0-contains-an-improper)
- [SurrealDB authorization bypass via streaming index planner](https://junglewise.ai/threats/cve-2026-121418-surrealdb-from-3-1-0-before-3-3-0-contains-an-incorrect)
