Featured image of post Django SQL注入漏洞分析:QuerySet与Q对象_connector参数风险

Django SQL注入漏洞分析:QuerySet与Q对象_connector参数风险

本文详细分析了Django框架中存在的SQL注入漏洞(CVE-2025-64459),该漏洞影响QuerySet.filter()、QuerySet.exclude()、QuerySet.get()方法和Q类,攻击者可通过精心构造的_connector参数字典实施SQL注入攻击。

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报告此问题。

参考链接

严重程度

严重等级: 严重
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命令的特殊元素。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计