---
id: "CVE-2026-121416"
kind: "vulnerability"
aliases: ["CVE-2026-121416"]
title: "SurrealDB: method-style calls bypass denied functions for authenticated users"
severity: "high"
cvss: 7.1
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["database", "package", "self-hosted", "surrealdb"]
not_affected_if: ["auth-required", "default-config"]
published_at: "2026-11-03T15:17:31+00:00"
first_seen_at: "2026-11-03T15:21:58+00:00"
updated_at: "2026-11-03T15:22:57+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-121416", "first_seen_at": "2026-11-03T15:21:58+00:00"}]
---

# SurrealDB: method-style calls bypass denied functions for authenticated users

SurrealDB 2.0.0 before 3.3.1 does not apply --deny-funcs restrictions to method-style function calls, because the method evaluation path skips the capability check. An authenticated user who can submit queries can run functions the operator denied, such as writing and reading file bucket data.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Run `surreal version` and compare with the fixed release in the sources.
- Check whether the server is started with `--deny-funcs` (for example `file::*`) in the startup command or config.

## Fix

- SurrealDB: move to `3.3.1` or later (sources state the fix is in versions from 3.3.1).

## Timeline

- 2026-11-03T15:21:58+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-121416

## Documents

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

## From the sources

SurrealDB 2.0.0 before 3.3.1 does not enforce --deny-funcs restrictions on method-style function calls in the streaming engine, because MethodPart::evaluate invokes resolved functions without a capability check. Authenticated users who can submit queries can run denied functions via method syntax, e.g. [1,2].map() or $f.put()/$f.get() to write and read file bucket data despite file::* denials.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
