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