Django 5.0.7 版本发行说明

2024 年 7 月 9 日

Django 5.0.7 修复了 5.0.6 中两个严重程度为“中等”的安全问题、两个严重程度为“低”的安全问题以及一个错误。

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

urlizeurlizetrunc 可能会因某些包含大量括号的输入而遭受潜在的拒绝服务攻击。

CVE-2024-39329:通过不可用密码用户的计时差异进行用户名枚举

authenticate() 方法允许远程攻击者通过对不可用密码用户的登录请求进行计时攻击来枚举用户。

CVE-2024-39330:通过 Storage.save() 可能导致的目录遍历漏洞

继承自 Storage 基类的派生类,如果重写了 generate_filename() 但没有复制父类中存在的文件路径验证逻辑,可能会在调用 save() 时因某些输入导致潜在的目录遍历问题。

内置的 Storage 子类不受此漏洞影响。

CVE-2024-39614:get_supported_language_variant() 中潜在的拒绝服务漏洞

get_supported_language_variant() 在处理包含特定字符的非常长字符串时,可能会遭受潜在的拒绝服务攻击。

为了缓解此漏洞,现在提供给 get_supported_language_variant() 的语言代码最多解析 500 个字符。

当语言代码超过 500 个字符时,如果 strictTrue,或者没有通用变体且 strictFalse,现在会抛出 ValueError

漏洞修复

  • 修复了 Django 5.0 中的一个错误,该错误导致在具有 GeneratedField 和某些定义的 Meta.constraints 的未保存模型实例上,Model.full_clean() 崩溃(#35560)。