Django Oracle中的SQL注入漏洞CVE-2024-53908
Django是一个高级的Python Web框架,作为一个免费和开源框架,拥有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。
Django可以快速开发安全和可维护的网站,Django负责处理网站开发中复杂部分,开发者可专注于编写应用程序,而无需重新单独开发。
一、基本情况
Django是高水准的Python编程语言驱动的开源模型,视图、控制器风格的Web应用程序框架,包含许多三方插件使其具有较强可扩展性。
Django成为WEB开发者首选框架,遵循MVC设计模式和MTV设计模式,但因控制器接受用户输入部分由框架自行处理而更遵循MTV模式。
栋科技漏洞库关注到Django近期发布安全公告,修复了Django中存在的CVE-2024-53907漏洞和另外一个SQL注入漏洞CVE-2024-53908。
二、漏洞分析
CVE-2024-53907
CVE-2024-53907漏洞是在Django 5.1.4之前的5.1、5.0.10之前的5.0以及4.2.17之前的4.2中发现了一个漏洞,该漏洞的CVSS评分为9.8。
漏洞源于django.utils.html.strip_tags() 方法和 striptags模板过滤器未充分处理包含大量嵌套不完整HTML实体输入,可导致拒绝服务攻击。
该漏洞可能导致过度的内存消耗或栈溢出,从而使应用程序挂起或崩溃,攻击可通过某些包含大量嵌套的不完整HTML实体的输入来实现。
攻击者可以通过提供恶意构造的输入,来触发CVE-2024-53907漏洞,从而可能因为过度的内存消耗或栈溢出而导致拒绝服务攻击的发生。
CVE-2024-53908
CVE-2024-53908是在Django 5.1.4之前的5.1、5.0.10之前的5.0以及4.2.17之前的4.2中发现的一个SQL注入漏洞,漏洞的CVSS评分9.8。
当Django应用使用Oracle数据库作为后端时,当Django应用中的django.db.models.fields.json.HasKey查找功能被直接用于Oracle数据库,
并且其左侧参数(lhs)包含不受信任的数据时可能会导致SQL注入攻击,恶意攻击者可以通过注入恶意SQL代码利用该漏洞攻击数据库。
使用Oracle数据库时,若将不受信任数据用作lhs值,则直接使用django . db . models . fields . JSON . has key查找会受到SQL注入限制。
而通过使用jsonfield.has_key查找的应用程序不受影响,成功利用该漏洞,可能会导致敏感数据的泄露、数据篡改或者数据库被恶意控制。
当然,恶意攻击者也可以利用该漏洞获取到更高特权,一旦成功获得高等级权限,攻击者就可以完全控制网站,漏洞危害性自然不言而喻。
三、影响范围
Django 5.1 < 5.1.4
Django 5.0 < 5.0.10
Django 4.2 < 4.2.17
四、安全措施
目前这些漏洞已经修复,受影响用户可升级到以下版本:
Django 5.1 >= 5.1.4
Django 5.0 >= 5.0.10
Django 4.2 >= 4.2.17
五、参考链接
https://www.djangoproject.com/download/