Django-DOS漏洞分析&复现(CVE-2024-41989)

2024-10-11 50 0

漏洞信息

漏洞来源:https://hackerone.com/reports/2644244

官方安全公告:https://www.djangoproject.com/weblog/2024/aug/06/security-releases/

漏洞影响:Django版本小于5.0.8或小于4.2.15

简介:Hackerone上给出的漏洞简介为django.utils.numberformat.floatformat() 中的内存耗尽,当给出具有大指数的科学计数法数字的字符串表示形式时,floatformat 模板过滤器会消耗大量内存。

漏洞复现

一、正常调用,传入正常数字1,查看耗时为:0.0072176456451416016 秒

Django-DOS漏洞分析&复现(CVE-2024-41989)插图

二、传入大指数9e99999,查看耗时为:0.46574854850769043 秒

Django-DOS漏洞分析&复现(CVE-2024-41989)插图1

三、增大传入指数9e999999,查看耗时为:45.13413095474243 秒

Django-DOS漏洞分析&复现(CVE-2024-41989)插图2

四、根据耗时结果来看,确实可以达到DOS效果,升级5.0.10版本后,重试(前面没有输出结果是因为输出的数字过于长,这里看到修复之后是把指数直接原样输出出来了,没有做转换)

Django-DOS漏洞分析&复现(CVE-2024-41989)插图3

漏洞分析

一、下断点调试,查看是哪里耗时,第一步进入floatformat函数,就找到了耗时的地方(两个断点)

Django-DOS漏洞分析&复现(CVE-2024-41989)插图4

二、很明显就是int转换的时候产生了耗时,并且int转换的内容是Decimal转换过的对象,那么先看Decimal是什么类型

Django-DOS漏洞分析&复现(CVE-2024-41989)插图5

看上去就是让浮点数更精准,尝试用起来貌似正常使用和普通浮点数也没什么区别

Django-DOS漏洞分析&复现(CVE-2024-41989)插图6

三、再来看int方法是可以处理指数的

Django-DOS漏洞分析&复现(CVE-2024-41989)插图7

但是在处理较大指数时就会报错,如下图

Django-DOS漏洞分析&复现(CVE-2024-41989)插图8

如果这个指数先使用Decimal来处理过呢?

Django-DOS漏洞分析&复现(CVE-2024-41989)插图9

这个奇怪的现象,问下GPT,如下图ChatGPT4o不太行

Django-DOS漏洞分析&复现(CVE-2024-41989)插图10

还得是ChatGPT o1-preview

Django-DOS漏洞分析&复现(CVE-2024-41989)插图11

四、总结一下:浮点数超过无穷大是处理不了的,但是可以用Decimal先把大数转换为一个精确的十进制数,就避免了报错,然后把这个大数传给int去处理转换,从而消耗资源。

官方修复方法分析

一、在代码中加入了一个判断逻辑如下

Django-DOS漏洞分析&复现(CVE-2024-41989)插图12

二、交给GPT分析

Django-DOS漏洞分析&复现(CVE-2024-41989)插图13

简单来说就是计算实际大小,经过一系列测试,包括各种科学技术法的变形,以及使用无穷等,也没找到绕过方法,有绕过思路的大佬可以讨论下。

扩展延伸

搜了一下Django代码中还有哪里符合这种漏洞的,找到了一处比较符合,但是利用不了的,在from django.utils.translation.__init__.py的round_away_from_one方法,方法如下:

Django-DOS漏洞分析&复现(CVE-2024-41989)插图14

但经过测试,该方法传入的value是str类型时,由于类型不匹配,在Decimal方法中-1时会报错:Django-DOS漏洞分析&复现(CVE-2024-41989)插图15

但Decimal方法处理大数解析为精确浮点型时,只接受字符串类型的大数,而数字类型的大数会解析为正无穷

Django-DOS漏洞分析&复现(CVE-2024-41989)插图16

Django-DOS漏洞分析&复现(CVE-2024-41989)插图17

int处理正无穷会报错

Django-DOS漏洞分析&复现(CVE-2024-41989)插图18

所以这里也没办法传入一个大数给int处理,也就无法造成DOS漏洞了。


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

办事处网络安全监控与事件响应;国外员工终端安全性怎么保障 | FB甲方群话题讨论
拿不下总统之位,那就用热加载拿下验证码识别与爆破好了!
Sooty:一款SoC分析一体化与自动化CLI工具
shiro CVE-2016-6802 路径绕过(越权)
Apache Solr 身份验证绕过漏洞(CVE-2024-45216)详解
llama_index的CVE-2024-4181漏洞根因分析

发布评论