Django SQL注入漏洞风险通告
发布时间 2020-02-13漏洞编号和级别
CVE编号:CVE-2020-7471,危险级别:严重,CVSS分值:9.8
影响版本
Django 1.11.x < 1.11.28
Django 2.2.x < 2.2.10
Django 3.0.x < 3.0.3
Django 主开发分支
漏洞概述
Django是Django基金会的一套基于Python语言的开源Web应用框架。该框架包括面向对象的映射器、视图系统、模板系统等。
近日,Django官方发布安全通告公布了一个通过StringAgg(分隔符)实现利用的潜在SQL注入漏洞。攻击者可通过构造分隔符传递给聚合函数contrib.postgres.aggregates.StringAgg,从而绕过转义并注入恶意SQL语句。
相关用户可通过版本检测的方法判断当前应用是否存在风险。在命令行输入 python。然后在 Python 提示符下输入下列命令,可查看当前Django版本信息。若Django版本在受影响范围内,且使用的数据库为PostgreSQL,则存在此漏洞的安全风险。
>>> import django
>>> django.get_version()
或者,此漏洞是由于聚合函数StringAgg导致,若Django版本在受影响范围内,且使用了该聚合函数,则可能存在安全风险。开发人员可自行排查是否使用了下列函数。StringAgg函数,是PostgreSQL数据库中将表达式变成字符串的聚合函数,可实现多行拼接,应用广泛。
django.contrib.postgres.aggregates.StringAgg。
漏洞验证
暂无POC/EXP。
修复建议
Django 官方已经发布新版本修复了上述漏洞,请受影响的用户尽快升级进行防护。
Django 1.11.28下载地址:https://www.djangoproject.com/m/releases/1.11/Django-1.11.28.tar.gz
Django 2.2.10 下载地址:https://www.djangoproject.com/m/releases/2.2/Django-2.2.10.tar.gz
Django 3.0.3下载地址:https://www.djangoproject.com/m/releases/3.0/Django-3.0.3.tar.gz
若使用 pip 安装 Django,可通过 --upgrade 或 -U 来实现此操作:
$ pip install -U Django
版本更新操作可参考下列链接:
https://docs.djangoproject.com/zh-hans/2.2/howto/upgrade-version
参考链接
https://www.djangoproject.com/weblog/2020/feb/03/security-releases


京公网安备11010802024551号