发布安全更新:1.8.2
根据我们的安全发布政策,Django 团队发布了 Django 1.8.2。此版本现已在 PyPI 和我们的下载页面上提供。此版本解决了下面详细说明的安全问题。我们鼓励所有 Django 用户尽快升级。Django 主分支也已更新。
CVE-2015-3982 - 修复了cached_db后端中的会话刷新问题
对session.flush()的更改cached_db在 Django 1.8 中,会话后端中的错误地将会话密钥设置为空字符串而不是None。空字符串被视为有效的会话密钥,并相应地设置会话 Cookie。任何会话 Cookie 中包含空字符串的用户都将使用同一个会话存储。session.flush()由django.contrib.auth.logout()调用,更严重的是,由django.contrib.auth.login()在用户切换帐户时调用。如果用户已登录并再次登录到另一个帐户(未注销),则会刷新会话以避免重用。会话刷新后(其会话密钥变为''),帐户详细信息将设置在会话上并保存会话。现在,任何会话 Cookie 中包含空字符串的用户都将登录到该帐户。
感谢 Sam Cooke 报告了此问题。
受影响的版本
- Django 主开发分支
- Django 1.8
Django 1.7 及更早版本不受影响。
解决方案
已将补丁应用于 Django 的主开发分支和 1.8 发布分支。补丁可从以下变更集中直接获取
已发布以下新版本
- Django 1.8.2 (下载 Django 1.8.2 | 1.8.2 校验和)
此版本使用的 PGP 密钥 ID 为 Tim Graham:1E8ABDC773EDE252。
有关安全报告的一般说明
与往常一样,我们要求您通过私人电子邮件向security@djangoproject.com报告潜在的安全问题,而不是通过 Django 的 Trac 实例或 django-developers 列表报告。请参阅我们的安全政策以获取更多信息。