Django 1.11 before 1.11.28, 2.2 before 2.2.10, and 3.0 before 3.0.3 allows SQL Injection if untrusted data is used as a StringAgg delimiter (e.g., in Django applications that offer downloads of data as a series of rows with a user-specified column delimiter). By passing a suitably crafted delimiter to a contrib.postgres.aggregates.StringAgg instance, it was possible to break escaping and inject malicious SQL.
https://www.openwall.com/lists/oss-security/2020/02/03/1
https://www.djangoproject.com/weblog/2020/feb/03/security-releases/
https://www.debian.org/security/2020/dsa-4629
https://usn.ubuntu.com/4264-1/
https://security.netapp.com/advisory/ntap-20200221-0006/
https://security.gentoo.org/glsa/202004-17
https://seclists.org/bugtraq/2020/Feb/30
https://groups.google.com/forum/#%21topic/django-announce/X45S86X5bZI
https://github.com/django/django/commit/eb31d845323618d688ad429479c6dda973056136
Published: 2020-02-03
Updated: 2024-11-21
Base Score: 7.5
Vector: CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P
Severity: High
Base Score: 9.8
Vector: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Severity: Critical
Base Score: 9.3
Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Severity: Critical