Django 发布安全更新:2.2.4、2.1.11 和 1.11.23
根据我们的安全发布策略,Django 团队发布了Django 1.11.23、Django 2.1.11 和 Django 2.2.4。这些版本修复了以下详细说明的安全问题。我们鼓励所有 Django 用户尽快升级。
感谢 Guido Vranken 和 Sage M. Abdullah 报告这些问题。
CVE-2019-14232:中的拒绝服务漏洞django.utils.text.Truncator
如果django.utils.text.Truncator的chars()和words()方法传递了html=True参数,由于正则表达式中存在灾难性回溯漏洞,它们评估某些输入的速度非常慢。该chars()和words()方法用于实现truncatechars_html和truncatewords_html模板过滤器,因此也存在漏洞。
由Truncator使用的正则表达式已简化,以避免潜在的回溯问题。因此,尾随标点符号有时可能会包含在截断的输出中。
CVE-2019-14233:中的拒绝服务漏洞strip_tags()
由于底层HTMLParser, django.utils.html.strip_tags()的行为,评估包含大量嵌套不完整 HTML 实体的某些输入的速度会非常慢。该strip_tags()方法用于实现相应的striptags模板过滤器,因此也存在漏洞。
strip_tags()现在避免递归调用HTMLParser,但当删除标签的进度(不一定是HTML实体)停止时。
请记住,绝对不保证strip_tags()的结果是HTML安全的。因此,切勿在未先转义(例如使用strip_tags()django.utils.html.escape())的情况下标记调用的结果为安全。.
CVE-2019-14234:针对键和索引查找的SQL注入漏洞JSONField/HStoreField
针对django.contrib.postgres.fields.JSONField的键和索引查找以及针对django.contrib.postgres.fields.HStoreField的键查找容易受到 SQL 注入攻击,可以使用精心设计的字典(带有字典扩展)作为**kwargs传递给QuerySet.filter().
CVE-2019-14235:中的潜在内存耗尽django.utils.encoding.uri_to_iri()
如果传递某些输入,django.utils.encoding.uri_to_iri可能会由于在重新百分比编码无效 UTF-8 八位字节序列时过度递归而导致大量内存使用。
uri_to_iri()现在在重新百分比编码无效 UTF-8 八位字节序列时避免递归。
受影响的受支持版本
- Django 主开发分支
- 2.2.4 之前的 Django 2.2 版本
- 2.1.11 之前的 Django 2.1 版本
- 1.11.23 之前的 Django 1.11 版本
解决方案
已将解决此问题的补丁应用于 Django 的主分支和 2.2、2.1 和 1.11 发布分支。可以从以下变更集中获取补丁
在开发主分支上
在 Django 2.2 发布分支上
在 Django 2.1 发布分支上
在 Django 1.11 发布分支上
已发布以下版本
- Django 1.11.23 (下载 Django 1.11.23 | 1.11.23 校验和)
- Django 2.1.11 (下载 Django 2.1.11 | 2.1.11 校验和)
- Django 2.2.4 (下载 Django 2.2.4 | 2.2.4 校验和)
此版本使用的 PGP 密钥 ID 为 Carlton Gibson:E17DF5C82B4F9D00
关于安全报告的常规说明
与往常一样,我们要求通过私人电子邮件向security@djangoproject.com报告潜在的安全问题,而不是通过 Django 的 Trac 实例、Django 的 GitHub 代码库或 django-developers 列表报告。请参阅我们的安全策略,了解更多信息。