Django 安全版本发布:4.2.6、4.1.12 和 3.2.22
根据我们的安全版本发布策略,Django 团队正在发布Django 4.2.6、Django 4.1.12 和 Django 3.2.22。这些版本解决了下面详细说明的安全问题。我们鼓励所有 Django 用户尽快升级。
CVE-2023-43665:django.utils.text.Truncator 中可能存在的拒绝服务漏洞
在修复 CVE-2019-14232 之后,在django.utils.text.Truncator的chars()和words()方法(使用html=True) 中使用的正则表达式进行了修改和改进。但是,这些正则表达式仍然表现出线性回溯复杂度,因此在给定非常长且可能格式错误的 HTML 输入时,评估仍然会很慢,从而导致潜在的拒绝服务漏洞。
这些chars()和words()方法用于实现truncatechars_html和truncatewords_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 发布分支。补丁可从以下更改集中获取
已发布以下版本
- Django 4.2.6(下载 Django 4.2.6 | 4.2.6 校验和)
- Django 4.1.12(下载 Django 4.1.12 | 4.1.12 校验和)
- Django 3.2.22(下载 Django 3.2.22 | 3.2.22 校验和)
此版本使用的 PGP 密钥 ID 为 Natalia Bidart:2EE82A8D9470983E
关于安全报告的常规说明
与往常一样,我们恳请您通过私人电子邮件将潜在的安全问题报告给security@djangoproject.com,而不是通过 Django 的 Trac 实例或 django-developers 列表。请参阅我们的安全策略以获取更多信息。