Django 发布安全更新:4.0.4、3.2.13 和 2.2.28
根据我们的安全发布政策,Django 团队发布了Django 4.0.4、Django 3.2.13 和Django 2.2.28。这些版本修复了以下详述的安全问题。我们鼓励所有 Django 用户尽快升级。
Django 2.2 已达到扩展支持的结束时间。最终的安全版本(2.2.28)于今天发布。我们鼓励所有 Django 2.2 用户升级到 Django 3.2 或更高版本。
CVE-2022-28346:潜在的 SQL 注入漏洞在QuerySet.annotate(), aggregate()以及extra()
QuerySet.annotate(), aggregate()以及extra()方法中,通过使用精心构造的字典以及字典扩展作为传递给这些方法的**kwargs参数,可以对列别名进行 SQL 注入攻击。
感谢 Splunk 团队:Preston Elder、Jacob Davis、Jacob Moore、Matt Hanson、David Briggs 和一位安全研究员:Danylo Dmytriiev (DDV_UA) 提供的报告。
根据 Django 安全策略,此问题的严重程度为“高”。
CVE-2022-28347:潜在的 SQL 注入漏洞通过QuerySet.explain(**options)在 PostgreSQL 上
QuerySet.explain()方法中,通过使用精心构造的字典以及字典扩展作为传递给方法的**options参数,可以对选项名称进行 SQL 注入攻击。
感谢 Mariusz Felisiak 提供的报告。
根据 Django 安全策略,此问题的严重程度为“高”。
受影响的支持版本
- Django 主分支
- Django 4.0
- Django 3.2
- Django 2.2
解决方案
已将修复此问题的补丁应用于 Django 的主分支以及 4.0、3.2 和 2.2 发布分支。补丁可以从以下更改集中获取。
CVE-2022-28346
CVE-2022-28347
已发布以下版本
- Django 4.0.4 (下载 Django 4.0.4 | 4.0.4 校验和)
- Django 3.2.13 (下载 Django 3.2.13 | 3.2.13 校验和)
- Django 2.2.28 (下载 Django 2.2.28 | 2.2.28 校验和)
此版本使用的 PGP 密钥 ID 为 Mariusz Felisiak:2EF56372BA48CD1B。
关于安全报告的一般说明
与往常一样,我们恳请您通过私人电子邮件将潜在的安全问题报告至security@djangoproject.com,而不是通过 Django 的 Trac 实例或 django-developers 邮件列表。请参阅我们的安全策略以获取更多信息。