CVE-2026-102876 SurrealDB 权限绕过漏洞
影响攻击者可跨租户越权读写和修改数据库记录
SurrealDB 3.3.0 之前版本在 HTTP 会话构建过程中存在授权绕过。check_auth() 使用 Surreal-Auth-NS 和 Surreal-Auth-DB 头验证凭据,但实际构建会话时却使用 Surreal-NS 和 Surreal-DB 头,且未校验访问权限。攻击者可借此跨租户边界读取、创建和修改记录。
影响范围
SurrealDB 3.3.0 之前的版本受影响,具体受影响版本范围暂无更详细的公开信息。
漏洞详情
该漏洞属于授权绕过(越权访问)。成因是认证校验所用的命名空间/数据库头与会话实际使用的头不一致,导致校验通过后会话可指向另一个租户的命名空间和数据库。攻击者只需以某一租户用户身份通过认证,再通过替换 Surreal-NS 和 Surreal-DB 头选择其他租户的命名空间与数据库,即可跨租户读写和修改记录。
利用条件与风险
利用前提是攻击者拥有一个租户的有效凭据并能发送 HTTP 请求;实战中可导致多租户环境下的数据越权访问与篡改,风险较高。
修复建议
建议升级至 SurrealDB 3.3.0 或更高版本;若无法立即升级,应限制 HTTP 接口访问来源并加强租户隔离,具体临时缓解措施以官方公告为准。
SurrealDB before 3.3.0 contains an authorization bypass in HTTP session construction where check_auth() verifies credentials against Surreal-Auth-NS and Surreal-Auth-DB headers but constructs sessions using Surreal-NS and Surreal-DB headers without validating access permissions. Attackers can authenticate as a user from one tenant while selecting another tenant’s namespace and database to read, create, and modify records across tenant boundaries.