---
id: CVE-2026-63748
aliases:
  - GHSA-6g9v-7gq3-p2c6
title: >-
  SurrealDB: Authenticated callers can read fields hidden by field-level SELECT
  permissions via error messages
summary: >-
  SurrealDB: Authenticated callers can read fields hidden by field-level SELECT
  permissions via error messages
severity: medium
cvss: 4.3
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N'
vendor: surrealdb
product: surrealdb
ecosystem: rust
affected:
  - surrealdb < 3.1.0
patched:
  - surrealdb 3.1.0
published: '2026-07-01'
updated: '2026-09-04'
source: OSV
sourceUrl: 'https://osv.dev/vulnerability/GHSA-6g9v-7gq3-p2c6'
references:
  - url: >-
      https://github.com/surrealdb/surrealdb/security/advisories/GHSA-6g9v-7gq3-p2c6
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-63748'
  - url: >-
      https://github.com/surrealdb/surrealdb/commit/0aaa332c79195e4c40275eb5224aed3d52f5cf90
  - url: 'https://github.com/surrealdb/surrealdb'
  - url: >-
      https://www.vulncheck.com/advisories/surrealdb-before-information-disclosure-via-error-messages
tags:
  - osv
  - rust
epss: 0.00326
epssPercentile: 0.23067
ingestedAt: '2026-09-05T19:33:49.583Z'
---

## Overview

A record user with UPDATE access could read field values that field-level SELECT permissions hid from them. Arithmetic operators and `extend` embedded the raw operand into their error messages, and UPDATE permission checks evaluate against the unreduced document — so triggering such an error against a hidden field returned its value in the resulting error.

### Impact

A record user issues an UPDATE that performs an incompatible operation against a hidden field — e.g. `UPDATE person:me SET probe = email + 1` when `email` is a string — and reads the value from the returned error (`Tried to compute "alice@example.com" + 1 …`). One field per operation, but the attacker can repeat against any field on any record they can UPDATE.

### Patches

A patch has been introduced that replaces the raw operand in every `try_*` operator and in `extend` with the operand's type name (`"string"`, `"int"`, `"array"`, etc.).

- Versions 3.1.0 and later are not affected by this issue.

### Workarounds

Affected users who are unable to update should not grant UPDATE permission on records whose field-level SELECT permissions are expected to hide values from the same caller.

## Affected packages

- `surrealdb < 3.1.0`

## Remediation

Upgrade to a patched release:

- `surrealdb 3.1.0`
