返回 Bug 清单
BUG-0241project-02高已修复security-cors
租户隔离 fail-closed 改造:X-Tenant-ID 头盲信不校验成员关系,可跨租户注入 RLS 上下文
发现:2026-10-01验证:2026-10-09置信度:70%
症状
接口按传入的 X-Tenant-ID 返回其他租户数据;tenant 缺失请求只产生 warning 日志但正常返回
根因
require_auth 装饰器对 X-Tenant-ID 请求头盲信:不校验该租户是否属于当前用户(user_tenants 成员关系),且 tenant_id 缺失时仅 logger.warning 后放行(warn 模式)。攻击者可携带任意租户 ID 调用,使 set_config 把 RLS 上下文注入到他人租户,形成跨租户越权读写。
修复方案
三段加固:① X-Tenant-ID 必须命中 user_tenants 成员关系否则 403;② BK_TENANT_ENFORCEMENT=enforce 模式下 tenant 缺失(非 allowlist 路径)→403、set_config/DB 异常 →503 fail-closed(绝不在无 RLS 上下文继续);③ allowlist 用段边界匹配('/api/system' 匹配 '/api/system/settings' 但不匹配 '/api/systemx'),生产 compose 默认 enforce。
错误签名
X-Tenant-ID 盲信 tenant_id 缺失仅 warning 放行 set_config RLS 上下文注入 跨租户技术信息
来源项目
project-02
涉及文件
bk_backend/bk_core.py, docker-compose.prod.yml
标签
多租户, 越权, RLS, project-02, mcp-reported