漏洞深度分析 | CVE-2023-36053-Django 表达式拒绝服务

news2024/11/15 19:32:40

项目介绍

Django 是一个高级 Python Web 框架,鼓励快速开发和简洁、务实的设计。它由经验丰富的开发人员构建,解决了 Web 开发的大部分麻烦,因此您可以专注于编写应用程序,而无需重新发明轮子。它是免费且开源的。

项目地址

https://github.com/django/django

https://github.com/django/django/releases/tag/4.2.2

漏洞概述

当处理电子邮件和URL的域名标签数量非常大时,可能会导致正则表达式拒绝服务攻击。这是因为正则表达式的处理时间与输入的长度呈指数关系,如果输入的长度非常大会导致处理时间过长,实现DoS。

影响版本

Django main branch

Django 4.2

Django 4.1

Django 3.2

漏洞分析

根据patch代码分析漏洞点及原理如下:

在URLValidator中,增加了一个max_length属性,其值为2048,用于限制URL的最大长度。如果URL的长度超过这个值,将会抛出一个验证错误。

class URLValidator(RegexValidator):
...
max_length = 2048
...
def __call__(self, value):
if not isinstance(value, str) or len(value) > self.max_length:
raise ValidationError(self.message, code=self.code, params={'value': value})

对于EmailValidator,同样增加了长度的限制。根据RFC 3696的第3节,电子邮件的最大长度为320个字符。如果电子邮件的长度超过这个值,也将抛出一个验证错误。

class EmailValidator:
...
def __call__(self, value):
if not value or '@' not in value or len(value) > 320:
raise ValidationError(self.message, code=self.code, params={'value': value})

在EmailField中,将max_length的默认值设置为320,以符合RFC 3696的规定。

class EmailField(CharField):
...
def __init__(self, **kwargs):
kwargs.setdefault("max_length", 320)
super().__init__(strip=True, **kwargs)

这些修改都是为了限制输入的长度,从而防止正则表达式处理时间过长,避免了ReDoS攻击。

攻击者可以通过提供一个超过长度限制的URL来触发这个漏洞。例如可以提供一个长度超过253个字符的URL。当这个输入被URLValidator处理时,由于正则表达式的处理时间与输入的长度呈指数关系,所以可能会导致处理时间过长实现导致服务拒绝。

修复方式

厂商已发布了漏洞修复程序,请用户尽快更新至安全版本。

版本链接:
https://www.djangoproject.com/weblog/2023/jul/03/security-releases/

修复方式

https://www.djangoproject.com/weblog/2023/jul/03/security-releases/

https://github.com/django/django/commit/b7c5feb35a31799de6e582ad6a5a91a9de74e0f9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CodeTop整理-树篇

目录 103. 二叉树的锯齿形层次遍历 236. 二叉树的最近公共祖先 124. 二叉树中的最大路径和 102. 二叉树的层序遍历 94. 二叉树的中序遍历 110. 平衡二叉树 572. 另一个树的子树 96. 不同的二叉搜索树 543. 二叉树的直径 297. 二叉树的序列化与反序列化 199. 二叉树的…

eNSP-VRRP虚拟路由器冗余技术

VRRP-虚拟路由器冗余技术 文章目录 VRRP-虚拟路由器冗余技术一、拓扑结构二、基本配置三、测试验证四、知识点详解1.VRRP路由器2.报文格式3.工作过程 一、拓扑结构 二、基本配置 R1: #配置ip <Huawei>sys [Huawei]sys r1 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip a…

快速排序算法!

快速排序 什么是快速排序&#xff08;quickSort&#xff09;&#xff1f; 主要分成两部分实现&#xff0c;分区、递归操作。 分区 从数组中任意选择一个 “基准”&#xff0c;所有比基准小的元素放在基准前面&#xff0c;比基准大的元素放在基本后面。 递归 递归地对基准…

Todo-List案例版本四

全局事件总线 使用步骤 1.定义全局事件总线 new Vue({...beforeCreated(){Vue.prototype.$busthis //安装全局事件总线&#xff0c;$bus就是当前应用的vm}... }) 2.使用事件总线 a.接收数据&#xff1a;A组件想接收数据&#xff0c;则在A组件中给$bus绑定自定义事件&…

Outlook---撤回(或替换)已发出的邮件

0 Preface/Foreword 发送邮件时&#xff0c;发现邮件发错了&#xff0c;或者忘了添加附件&#xff0c;那么就需要用到撤回或者替换功能。 1 撤回/替换邮件方法 步骤如下&#xff1a; 第一步&#xff1a;双击打开邮件&#xff1b; 第二步&#xff1a;找到撤回按键

自锁电路分析与应用

原理图分享 今天工作中遇到一个设计很妙的电路&#xff0c;请教了一下硬件的工程师。 大家自己直接看图可以分享出这个电路的作用吗&#xff0c;可以在评论区告诉我哦&#xff01; 自锁电路 如上图就是一个自锁电路&#xff0c;和下面的电路一样&#xff1a; 电路现象描述&a…

23.RTC实时时钟

1.STM32 RTC介绍&#xff1a; &#xff08;1&#xff09;RTC简介&#xff1a; STM32的实时时钟(RTC)是一个独立的定时器。STM32的RTC模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和…

虚幻5-could not find root physics body 布料系统问题解决方法

不做不知道自己身体好&#xff0c;又碰到问题了&#xff1a; could not find root physics body 1.据说是Skeleton 和SkeletaMesh傻傻分不清楚 &#xff08;但就是排查后&#xff0c;就不是这个问题&#xff09; 2.重新创造一个Physic Asset吧 Creating a New Physics Asse…

【C语言初阶(13)】三子棋游戏(优化:多子棋实现)

文章目录 一、游戏的实现思路二、游戏的实现步骤1. 菜单函数2. 设置棋盘3. 初始化棋盘4. 打印棋盘5. 玩家下棋6. 电脑下棋7. 多子棋判断输赢8. 判断棋盘是否已满 三、模块化代码实现1. test.c2. game.h3. game.c 四、结果演示 由于模块化编程的需要&#xff0c;我们需要把整个游…

解决Bridge材质导入到Blender为白色的问题

文章目录 前言一、复现问题二、解决方案总结 前言 一、复现问题 在Bridge上看到一块不错的草皮, 导入成功后是白色材质: 二、解决方案 以前用这个方法导入过模型, 那时候还没启用汉化, 也没什么材质问题. 这次操作之前刚启用了汉化, 我猜是汉化导致: 取消勾选’新建数据’, 重…

【Java】-初识java

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; 文章目录 前言…

Linux 基础之 TOP 命令详解

文章目录 一、前言二、Top说明 一、前言 TOP 命令是 Linux 常用的性能分析工具&#xff0c;能够实时显示系统中各个进程资源占用状况&#xff0c;类似于 Windows 的任务管理器。 二、Top说明 当使用一个工具时&#xff0c;对此最快的了解方式就是查看说明&#xff0c;那就是…

6.任务调度:保存和还原现场,时间片轮转

实现任务调度&#xff0c;模拟时间片 1.任务调度 在进行上下文切换时&#xff0c;需要保存和切换以下内容&#xff1a; 寄存器&#xff1a;包括通用寄存器&#xff08;如 EAX、EBX、ECX等&#xff09;和特殊寄存器&#xff08;如程序计数器 PC、堆栈指针 SP、基址指针 BP等&a…

LeetCode | C++ 动态规划——完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

目录 完全背包518. 零钱兑换 II377. 组合总和 Ⅳ参考 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包…

【数据挖掘】时间序列教程【九】

第5章 状态空间模型和卡尔曼滤波 状态空间模型通常试图描述具有两个特征的现象 有一个底层系统具有时变的动态关系,因此系统在时间上的“状态”t 与系统在时间的状态t−1有关 .如果我们知道系统在时间上的状态t−1 ,那么我们就有了我们需要知道的一切,以便对当时的状态进行推…

12-ATF架构下的启动流程

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:Secureboot从入门到精通-[目录] 👈👈👈目录 1、Boot模型2、Boot示例3、Runtime模型4、异常跳转模型5、启动跳转模型

四川佳洲智谷:在AI潮水里加速快跑!

2023年6月28日夏季新品发布会上&#xff0c;摩卡掌舵人李国兴发布了国内首个AI原生HRSaaS整体解决方案——摩卡Eva。该产品的发布&#xff0c;标志着Moka正式成为业内第一家真正交付AI原生HRSaaS产品的公司。 随着AIGC浪潮的到来&#xff0c;越来越多的企业开始意识到人工智能的…

对抗性人工智能如何威胁您的机器学习模型

人工智能&#xff08;AI&#xff09;的出现给社会的几乎每个领域带来了革命性的变化。然而&#xff0c;人工智能的前景光明的能力也伴随着重大挑战&#xff0c;特别是在网络安全方面。 保护机器学习工作流程对于保护这些组织免受新兴威胁至关重要&#xff0c;而对抗性人工智能…

DeRPnStiNK靶机复盘

DeRPnStiNK靶机复盘 拿到靶机后我们第一步先扫描靶机地址。 nmap -sP 192.168.197.0/24扫描出我们的靶机地址。 扫描出来后我们再单独对这个ip进行扫描&#xff0c;发现开了三个端口 然后扫描一下目录&#xff0c;发现一个wordpress登陆网址和一个phpmyadmin登陆地址。 我们…

SOLARIS系统下ORACLE数据恢复案例

服务器数据恢复环境&#xff1a; 两台SPARC SOLARIS操作系统服务器通过光纤交换机共享一台存储作为集群使用。平时是一台服务器&#xff08;以下称为主服务器&#xff09;在运行&#xff0c;如果该服务器发生故障宕机&#xff0c;只需要将这台服务器关机后开启另外一台服务器&a…