FlawAtlas
Search the atlas
CVE-2025-49011 Low

SpiceDB checks involving relations with caveats can result in no permission when permission is expected in github.com/authzed/spicedb

SpiceDB checks involving relations with caveats can result in no permission when permission is expected in github.com/authzed/spicedb

Exploit probability 0.3%
Published June 10, 2025
Required by Not available
Last source change March 3, 2026

02 / AFFECTED SOFTWARE

Affected packages

Unknown Unknown

85 explicit affected versions

Go github.com/authzed/spicedb
Go github.com/authzed/spicedb

03 / CONNECTIONS

Connected vulnerabilities

04 / EVIDENCE

Source records

Open Source Vulnerabilities CVE-2025-49011

SpiceDB is an open source database for storing and querying fine-grained authorization data. Prior to version 1.44.2, on schemas involving arrows with caveats on the arrow’ed relation, when the path to resolve a CheckPermission request involves the evaluation of multiple caveated branches, requests may return a negative response when a positive response is expected. Version 1.44.2 fixes the issue. As a workaround, do not use caveats in the schema over an arrow’ed relation.

View original source
Open Source Vulnerabilities GO-2025-3744

SpiceDB checks involving relations with caveats can result in no permission when permission is expected in github.com/authzed/spicedb

View original source
Open Source Vulnerabilities GHSA-cwwm-hr97-qfxm

### Impact On schemas involving arrows with caveats on the arrow’ed relation, when the path to resolve a CheckPermission request involves the evaluation of multiple caveated branches, requests may return a negative response when a positive response is expected. For example, given this schema: ``` definition user {} definition office { relation parent: office relation manager: user permission read = manager + parent->read } definition group { relation parent: office permission read = parent->read } definition document { relation owner: group with equals permission read = owner->read } caveat equals(actual string, required string) { actual == required } ``` and these relationships: ``` office:headoffice#manager@user:maria office:branch1#parent@office:headoffice group:admins#parent@office:branch1 group:managers#parent@office:headoffice document:budget#owner@group:admins[equals:{"required":"admin"}] document:budget#owner@group:managers[equals:{"required":"manager"}] ``` Permission for `'document:budget#read@user:maria with {"actual" : "admin"}'` is returned as NO_PERMISSION when HAS_PERMISSION is the correct answer. ### Patches Upgrade to v1.44.2. ### Workarounds Do not use caveats in your schema over an arrow’ed relation.

View original source

05 / REFERENCES

Further evidence