本文介绍: 当这个输入被URLValidator处理时,由于正则表达式处理时间输入长度呈指数关系,所以可能会导致处理时间过长实现导致服务拒绝。它由经验丰富的开发人员构建解决了 Web 开发的大部分麻烦,因此您可以专注于编写应用程序,而无需重新发明轮子。这是因为正则表达式处理时间输入长度呈指数关系,如果输入长度非常大会导致处理时间过长实现DoS。在URLValidator中,增加了一个max_length属性,其值为2048,用于限制URL的最大长度。如果URL的长度超过这个值,将会抛出一个验证错误

项目介绍

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/securityreleases/

修复方式

https://www.djangoproject.com/weblog/2023/jul/03/securityreleases/

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

原文地址:https://blog.csdn.net/LJQClqjc/article/details/131637860

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_32022.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注