{"id":"CVE-2026-121416","kind":"vulnerability","aliases":["CVE-2026-121416"],"related":[],"title":"SurrealDB: method-style calls bypass denied functions for authenticated users","description":"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.","summary":"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.","severity":"high","cvss":7.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["database","package","self-hosted","surrealdb"],"not_affected_if":["auth-required","default-config"],"how_to_check":"- Run `surreal version` and compare with the fixed release in the sources.\n- 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).","status":"open","published_at":"2026-11-03T15:17:31+00:00","first_seen_at":"2026-11-03T15:21:58+00:00","triaged_at":"2026-11-03T15:22:57+00:00","updated_at":"2026-11-03T15:22:57+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-03T15:22:57Z","model":"claude-haiku-5-5","output":{"fix":"- SurrealDB: move to `3.3.1` or later (sources state the fix is in versions from 3.3.1).","reach":"network","title":"SurrealDB: method-style calls bypass denied functions for authenticated users","impact":"medium","summary":"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.","audience":"businesses","category":"package","nicknames":[],"who_cares":["surrealdb","self-hosted","database"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"authenticated user runs denied file functions, reading and writing bucket data","analyst_note":"","how_to_check":"- Run `surreal version` and compare with the fixed release in the sources.\n- Check whether the server is started with `--deny-funcs` (for example `file::*`) in the startup command or config.\n- unknown for anything else; the sources do not list other checks.","plain_action":"","needs_analyst":false,"not_affected_if":["auth-required","default-config"],"who_is_affected":"Teams running a SurrealDB server that relies on --deny-funcs to restrict functions for query users. The flaw needs a user who can submit queries; servers without denied functions or with only trusted users are less exposed. unknown for the full version range beyond 2.0.0 before 3.3.1.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.0007,"input_tokens":4214,"output_tokens":557,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-121416':14A,17A '-2026':13A,16A '1':116C '2':117C '2.0.0':25B,72C '3.3.1':27B,74C 'appli':30B 'authent':10A,51B,102C 'bucket':69B,127C 'bypass':6A 'call':5A,40B,87C 'capabl':48B,100C 'check':49B,101C 'cve':12A,15A 'data':70B,128C 'databas':18B 'deni':7A,32B,62B,79C,110C 'denial':131C 'deny-func':31B,78C 'despit':129C 'e.g':115C 'enforc':77C 'engin':91C 'evalu':44B,94C 'f.get':121C 'f.put':120C 'file':68B,126C,130C 'func':33B,80C 'function':8A,39B,59B,86C,97C,111C 'host':22B 'invok':95C 'map':118C 'method':3A,37B,43B,84C,113C 'method-styl':2A,36B,83C 'methodpart':93C 'oper':61B 'packag':19B 'path':45B 'queri':56B,107C 'read':67B,125C 'resolv':96C 'restrict':34B,81C 'run':58B,109C 'self':21B 'self-host':20B 'skip':46B 'stream':90C 'style':4A,38B,85C 'submit':55B,106C 'surrealdb':1A,23B,24B,71C 'syntax':114C 'user':11A,52B,103C 'via':112C 'without':98C 'write':65B,123C","nicknames":[],"mitigations":[],"who_affected":"Teams running a SurrealDB server that relies on --deny-funcs to restrict functions for query users. The flaw needs a user who can submit queries; servers without denied functions or with only trusted users are less exposed. unknown for the full version range beyond 2.0.0 before 3.3.1.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["database","high","package","selfhosted","surrealdb"],"first_public_at":"2026-10-19T08:52:08+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-121416","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-121416","severity":null,"published_at":"2026-11-03T15:17:31+00:00","modified_at":"2026-11-03T15:17:31+00:00","first_seen_at":"2026-11-03T15:21:58+00:00","fetched_at":"2026-11-03T15:21:58+00:00","note":null}],"documents":[{"id":58355,"url":"https://github.com/surrealdb/surrealdb/security/advisories/GHSA-p296-7pr4-87rr","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-19T08:52:08+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":58356,"url":"https://www.vulncheck.com/advisories/surrealdb-2.0.0-before-3.3.1-deny-funcs-capability-bypass-via-method-style-invocations","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}