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