CVE-2025-64529SpiceDB是一款开源数据库系统,专门用于创建和管理安全关键应用程序的权限控制。该漏洞影响1.45.2之前的所有版本。当用户在授权架构中使用了exclusion操作符,并且将服务器配置参数`--write-relationships-max-updates-per-call`设置为大于6500的值时,如果调用WriteRelationships接口时更新数量足够大,导致请求payload超过数据存储允许的大小,系统会错误地返回成功响应,但实际上写入操作已经失败。这将导致涉及exclusion操作的权限检查返回错误结果,可能造成未授权访问或权限绕过问题。攻击者无需认证即可利用此漏洞,但需要构造特定的请求参数。该漏洞由GitHub安全团队发现并报告。
该漏洞属于逻辑错误导致的权限检查绕过问题。SpiceDB在处理WriteRelationships请求时,当请求payload大小超过数据存储限制时,未能正确处理错误情况。具体技术细节如下:1)当用户配置了`--write-relationships-max-updates-per-call`参数值大于6500时,系统允许单次调用写入大量关系更新;2)攻击者构造包含大量更新的WriteRelationships请求,使得最终payload大小超过数据存储的最大限制;3)由于exclusion操作符的特殊性,系统需要读取已存在的关系来解析权限;4)当写入操作实际失败但系统返回成功响应时,后续的权限检查会基于不完整或不一致的数据进行判断;5)这导致涉及exclusion操作的权限检查返回错误的允许/拒绝结果。漏洞的核心问题在于错误处理逻辑不完善,未能正确区分写入成功和失败的状态。