Django 发布安全更新:2.2.4、2.1.11 和 1.11.23

作者:Carlton Gibson 发表于 2019年8月1日

根据我们的安全发布策略,Django 团队发布了Django 1.11.23Django 2.1.11Django 2.2.4。这些版本修复了以下详细说明的安全问题。我们鼓励所有 Django 用户尽快升级。

感谢 Guido Vranken 和 Sage M. Abdullah 报告这些问题。

CVE-2019-14232:中的拒绝服务漏洞django.utils.text.Truncator

如果django.utils.text.Truncatorchars()words()方法传递了html=True参数,由于正则表达式中存在灾难性回溯漏洞,它们评估某些输入的速度非常慢。该chars()words()方法用于实现truncatechars_htmltruncatewords_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 发布分支上

已发布以下版本

此版本使用的 PGP 密钥 ID 为 Carlton Gibson:E17DF5C82B4F9D00

关于安全报告的常规说明

与往常一样,我们要求通过私人电子邮件向security@djangoproject.com报告潜在的安全问题,而不是通过 Django 的 Trac 实例、Django 的 GitHub 代码库或 django-developers 列表报告。请参阅我们的安全策略,了解更多信息。

返回顶部