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.debian.org/security/2020/dsa-4629
https://usn.ubuntu.com/4264-1/
https://security.gentoo.org/glsa/202004-17
https://github.com/django/django/commit/eb31d845323618d688ad429479c6dda973056136
https://github.com/DipanjanAtCodeRabbit/coderabbit-sbom-demo
https://github.com/yoryio/django-vuln-research
https://github.com/aeyesec/CVE-2022-34265
https://github.com/mrlihd/CVE-2020-7471
https://github.com/secoba/DjVul_StringAgg
https://github.com/advisories/GHSA-hmr4-m2h5-33qx
https://www.djangoproject.com/weblog/2020/feb/03/security-releases/
https://security.netapp.com/advisory/ntap-20200221-0006/
https://seclists.org/bugtraq/2020/Feb/30
https://groups.google.com/forum/#%21topic/django-announce/X45S86X5bZI
Published: 2020-02-03
Updated: 2026-06-17
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.1/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
EPSS: 0.65575