Django vulnerable to SQL injection via _connector keyword argument in QuerySet and Q objects
漏洞详情
包管理器: pip
受影响包: django (pip)
受影响版本
-
= 5.2a1, < 5.2.8
-
= 5.0a1, < 5.1.14
- < 4.2.26
已修复版本
- 5.2.8
- 5.1.14
- 4.2.26
漏洞描述
在Django 5.1系列5.1.14之前版本、4.2系列4.2.26之前版本和5.2系列5.2.8之前版本中发现了一个安全问题。
当使用经过精心构造的字典(通过字典展开)作为_connector参数时,以下方法和类容易受到SQL注入攻击:
QuerySet.filter()QuerySet.exclude()QuerySet.get()Q()类
较早的不受支持的Django系列(如5.0.x、4.1.x和3.2.x)未经过评估,也可能受到影响。
Django感谢cyberstan报告此问题。
参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2025-64459
- https://docs.djangoproject.com/en/dev/releases/security
- https://groups.google.com/g/django-announce
- https://www.djangoproject.com/weblog/2025/nov/05/security-releases
- django/django@06dd383
- django/django@59ae82e
- django/django@6703f36
- django/django@72d2c87
严重程度
严重等级: 严重
CVSS评分: 9.1/10
CVSS v3基础指标
- 攻击向量: 网络
- 攻击复杂度: 低
- 所需权限: 无
- 用户交互: 无
- 范围: 未改变
- 机密性: 高
- 完整性: 高
- 可用性: 无
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
弱点分类
弱点类型: CWE-89
不当中和SQL命令中使用的特殊元素(SQL注入) 产品使用来自上游组件的外部影响输入构建全部或部分SQL命令,但在将SQL命令发送到下游组件时,未能中和或错误地中和可能修改预期SQL命令的特殊元素。