Django 4.0.1 版本发行说明

2022 年 1 月 4 日

Django 4.0.1 修复了一个”中等”严重性的安全问题,两个”低”严重性的安全问题,以及 4.0 版本中的几个错误。

CVE-2021-45115: UserAttributeSimilarityValidator 中存在拒绝服务的可能性

UserAttributeSimilarityValidator 在评估相对于比较值人工过大的提交密码时产生了显着的开销。在假设用户注册的访问是不受限制的情况下,这为拒绝服务攻击提供了潜在的攻击矢量。

为了缓解这个问题,UserAttributeSimilarityValidator 现在会忽略相对较长的值。

根据 Django 安全政策,这个问题的严重性为“中等”。

CVE-2021-45116: dictsort 模板过滤器中存在潜在的信息泄露漏洞

由于利用了 Django 模板语言的变量解析逻辑,如果传递了一个经过适当精心制作的键,dictsort 模板过滤器有潜在的信息泄露或意外的方法调用漏洞。

为了避免这种可能性,dictsort 现在使用了受限的解析逻辑,不会调用方法,也不允许在字典上进行索引。

提醒一下,所有不受信任的用户输入在使用前都应进行验证。

根据 Django 安全政策,这个问题的严重性为“低”。

CVE-2021-45452: 通过 Storage.save() 可能存在目录遍历漏洞

如果直接传递经过适当精心制作的文件名,Storage.save() 允许目录遍历。

根据 Django 安全政策,这个问题的严重性为“低”。

漏洞修复

  • 修复了 Django 4.0 中的一个回归问题,该问题导致在名为 form 的表单集上调用 assertFormsetError() 时崩溃(#33346)。
  • 修复了 Django 4.0 中的一个错误,该错误导致在使用 RedisCache 后端时布尔值引发崩溃(#33361)。
  • 在 Django 4.0 中放宽了对于在 django.views.decorators.cache.cache_control()never_cache() 装饰器中使用鸭子类型的 HttpRequest 的检查,以重新允许这种用法(#33350)。
  • 修复了 Django 4.0 中的一个回归问题,该问题导致创建引用可交换模型(如 auth.User )的模型的虚假迁移(#33366)。
  • 修复了 几何集合Polygon 中的一个长期存在的 bug,该 bug 导致在某些平台上崩溃(在 macOS 上基于 ARM64 架构的报告)(#32600)。