CVE-2026-6907Django在6.0.5和5.2.14之前的版本中存在一处安全漏洞。由于`UpdateCacheMiddleware`中间件未能正确解析包含星号的`Vary`响应头,导致系统错误地缓存了本应隔离的私有请求数据。这些被错误缓存的数据随后可能被提供给其他用户,从而引发敏感信息泄露风险。早期不受支持的Django版本也可能受此问题影响。
该漏洞的核心在于Django的缓存中间件对HTTP头部处理逻辑存在缺陷。根据HTTP缓存规范,`Vary: *`头部通常意味着响应内容高度依赖于请求的上下文,且不应被公共缓存存储,或者应当被视为不可缓存。然而,在受影响的Django版本中,`UpdateCacheMiddleware`在检测到`Vary`头部包含星号(`*`)时,并未正确终止缓存流程。相反,中间件继续将响应内容存储在缓存后端(如Redis、Memcached或数据库缓存)中。由于缓存键的生成机制可能未完全区分不同用户的上下文,或者因为缓存被共享,当后续请求匹配到该缓存条目时,服务器会直接返回之前存储的、属于特定用户的私有数据。这破坏了应用的数据隔离原则,攻击者无需特殊权限,只需触发特定的请求流程,即可通过缓存响应获取其他用户的敏感信息。