Django 安全版本发布:4.2.6、4.1.12 和 3.2.22

作者:Natalia Bidart 发布日期:2023年10月4日

根据我们的安全版本发布策略,Django 团队正在发布Django 4.2.6Django 4.1.12Django 3.2.22。这些版本解决了下面详细说明的安全问题。我们鼓励所有 Django 用户尽快升级。

CVE-2023-43665:django.utils.text.Truncator 中可能存在的拒绝服务漏洞

在修复 CVE-2019-14232 之后,在django.utils.text.Truncatorchars()words()方法(使用html=True) 中使用的正则表达式进行了修改和改进。但是,这些正则表达式仍然表现出线性回溯复杂度,因此在给定非常长且可能格式错误的 HTML 输入时,评估仍然会很慢,从而导致潜在的拒绝服务漏洞。

这些chars()words()方法用于实现truncatechars_htmltruncatewords_html模板过滤器,因此这些过滤器也容易受到攻击。

当在 HTML 模式下操作时,Truncator处理的输入已限制为前 500 万个字符,以避免潜在的性能和内存问题。

感谢阿里巴巴集团的李文超提交报告。

根据 Django 安全策略,此问题的严重程度为“中等”。

受影响的支持版本

  • Django 主分支
  • Django 5.0(目前处于预发布 alpha 状态)
  • Django 4.2
  • Django 4.1
  • Django 3.2

解决方案

已将解决此问题的补丁应用于 Django 的主分支和 5.0、4.2、4.1 和 3.2 发布分支。补丁可从以下更改集中获取

已发布以下版本

此版本使用的 PGP 密钥 ID 为 Natalia Bidart:2EE82A8D9470983E

关于安全报告的常规说明

与往常一样,我们恳请您通过私人电子邮件将潜在的安全问题报告给security@djangoproject.com,而不是通过 Django 的 Trac 实例或 django-developers 列表。请参阅我们的安全策略以获取更多信息。

返回顶部