Django 5.0.8 版本发行说明

2024 年 8 月 6 日

Django 5.0.8 修复了 5.0.7 中三个严重程度为“中等”的安全问题、一个严重程度为“高”的安全问题以及多个错误。

CVE-2024-41989:django.utils.numberformat.floatformat() 中的内存耗尽问题

如果 floatformat 接收到科学计数法表示的数字字符串且指数较大,可能会导致显著的内存消耗。

为了避免这种情况,现在超过 200 位的十进制数会原样返回。

CVE-2024-41990:django.utils.html.urlize() 中潜在的拒绝服务漏洞

urlizeurlizetrunc 可能会因包含特定字符序列的非常大的输入而遭受潜在的拒绝服务攻击。

CVE-2024-41991: django.utils.html.urlize()AdminURLFieldWidget 中潜在的拒绝服务漏洞

urlize, urlizetrunc, 和 AdminURLFieldWidget 可能会因某些包含大量 Unicode 字符的输入而受到潜在的拒绝服务攻击。

CVE-2024-42005: QuerySet.values()values_list() 中潜在的 SQL 注入漏洞

QuerySet.values()values_list() 方法在使用 JSONField 的模型上,可能会通过传递的 *arg 中精心构造的 JSON 对象键,在列别名中受到 SQL 注入攻击。

漏洞修复

  • 在使用 *expressions 时,添加了对 UniqueConstraint(nulls_distinct=False) 缺失的验证(#35594)。

  • 修复了 Django 5.0 中的一个回归问题,该问题导致在渲染具有 __html__ 方法的模型实例时,ModelAdmin.action_checkbox 可能会破坏管理界面的变更列表 HTML 页面(#35606)。

  • 修复了在创建具有 Field.db_default 和由 __endswith__startswith__contains 查找组成的 Meta.constraints 约束的模型时崩溃的问题(#35625)。

  • 修复了 Django 5.0.7 中的一个回归问题,该问题导致在处理超过 500 个字符的语言代码时,LocaleMiddleware 崩溃(#35627)。

  • 修复了 Django 5.0 中的一个错误,该错误导致当 ModelAdmin.date_hierarchy 是一个具有 DateFieldDateTimeFieldoutput_fieldGeneratedField 时,系统检查崩溃(#35628)。

  • 修复了 Django 5.0 中的一个错误,该错误导致在验证引用使用 Field.db_default 的字段的约束时,要么崩溃,要么错误地引发验证错误(#35638)。

  • 修复了 Django 5.0 中的一个崩溃问题,该问题发生在保存包含设置了 db_defaultFileField 的模型时(#35657)。