Django团队在最新安全更新中修复高危SQL注入漏洞(CVE-2025-64459)和DoS漏洞(CVE-2025-64458)
Django软件基金会(DSF)已为Django Web框架的多个分支发布了新的安全更新,解决了两个漏洞——包括一个高危SQL注入漏洞,可能允许攻击者操纵数据库查询。
这些补丁适用于Django 5.2.8、5.1.14和4.2.26版本,以及主分支和6.0测试版。开发团队敦促所有用户立即升级以减轻潜在风险。
CVE-2025-64459:通过_connector关键字的高危SQL注入
本次更新中解决的最严重问题是CVE-2025-64459,这是一个高危SQL注入漏洞,影响多个常见的Django数据库方法——包括QuerySet.filter()、QuerySet.exclude()、QuerySet.get()和Q()类。
当这些方法通过_connector关键字参数使用字典扩展时,如果参数内容未经过适当清理,攻击者可以注入恶意SQL表达式。
Django团队解释说:“当使用适当构造的字典(通过字典扩展)作为_connector参数时,QuerySet.filter()、QuerySet.exclude()和QuerySet.get()方法以及Q()类容易受到SQL注入攻击。”
如果成功利用,此漏洞可能允许远程攻击者根据应用程序权限和部署配置修改、泄露或破坏数据库内容。鉴于Django在企业Web应用、电子商务平台和API中的广泛使用,此漏洞对运行未修补版本的生产环境构成严重威胁。
该问题由研究员cyberstan负责任地披露,并获得了公开致谢。Django根据其内部安全政策将此漏洞分类为“高危”。
CVE-2025-64458:通过Unicode重定向在Windows上导致的中等拒绝服务(DoS)
第二个漏洞CVE-2025-64458影响Django在Windows系统上的HTTP重定向处理。它被分类为中等严重性,但在某些条件下仍构成潜在的拒绝服务风险。
根据公告,“Python中的NFKC规范化在Windows上运行缓慢。因此,HttpResponseRedirect、HttpResponsePermanentRedirect和redirect函数容易受到通过具有大量Unicode字符的特定输入导致的潜在拒绝服务攻击。”
实际上,这意味着恶意行为者可以提供具有过多Unicode规范化要求的特制URL,导致Django的重定向函数在Windows主机上消耗大量CPU时间。这可能导致受影响服务器的性能下降或服务中断。
该问题由Seokchan Yoon发现,展示了平台特定的实现特性——在这种情况下是Python中的Unicode规范化性能——即使在成熟框架中也可能引入意外的安全影响。
受影响版本和补丁
以下受支持的Django版本受到一个或两个漏洞的影响:
- Django主分支
- Django 6.0(测试版)
- Django 5.2
- Django 5.1
- Django 4.2
更新版本——5.2.8、5.1.14和4.2.26——现已在官方Django网站和软件包仓库中提供,同时附有相应的发布说明:
- Django 5.2.8发布说明
- Django 5.1.14发布说明
- Django 4.2.26发布说明