已发布安全更新:1.8.4、1.7.10、1.4.22
根据我们的安全发布策略,Django团队正在发布多个版本——Django 1.4.22、1.7.10和1.8.4。这些版本现已在PyPI和我们的下载页面上提供。这些版本解决了下面详述的安全问题。我们鼓励所有Django用户尽快升级。Django主分支也已更新。
拒绝服务可能性在logout()视图中,通过填充会话存储
以前,在匿名访问django.contrib.auth.views.logout视图时(前提是没有使用django.contrib.auth.decorators.login_required装饰器进行装饰,就像在管理界面中那样),可以创建会话。这可能允许攻击者通过发送重复请求轻松创建许多新的会话记录,从而可能填满会话存储或导致其他用户的会话记录被逐出。
该django.contrib.sessions.middleware.SessionMiddleware已修改为不再创建空的会话记录。
此修复部分已分配 CVE-2015-5963。
此外,仅在 1.4 和 1.7 系列中,contrib.sessions.backends.base.SessionBase.flush()和cache_db.SessionStore.flush()方法已修改为避免创建新的空会话。第三方会话后端的维护人员应检查其后端是否存在相同漏洞,如果存在则进行修正。
此修复部分已分配 CVE-2015-5964。任何报告第三方会话后端中类似漏洞的人员都不应使用此 CVE ID。
感谢林华诚报告此问题。
受影响的支持版本
- Django 主开发分支
- Django 1.8
- Django 1.7
- Django 1.4
提醒:Django 1.4 的安全支持将于 2015 年 10 月 1 日结束。
根据我们的支持版本策略,Django 1.5 和 1.6 将不再接收安全更新。
解决方案
已将补丁应用于 Django 的主开发分支和 1.4、1.7 和 1.8 发布分支,这些补丁解决了上述问题。补丁可以直接从以下变更集中获取
已发布以下新版本
- Django 1.8.4 (下载 Django 1.8.4 | 1.8.4 校验和)
- Django 1.7.10 (下载 Django 1.7.10 | 1.7.10 校验和)
- Django 1.4.22 (下载 Django 1.4.22 | 1.4.22 校验和)
这些版本使用的 PGP 密钥 ID 为 Tim Graham:1E8ABDC773EDE252。
关于安全报告的常规说明
与以往一样,我们要求通过私人电子邮件向security@djangoproject.com报告潜在的安全问题,而不是通过 Django 的 Trac 实例或 django-developers 列表报告。请参阅我们的安全策略以获取更多信息。