Node.js HTTP/2 CONTINUATION 拒绝服务漏洞(CVE-2024-27983)

2024-04-07 12:28

本文主要是介绍Node.js HTTP/2 CONTINUATION 拒绝服务漏洞(CVE-2024-27983),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Node.js 是开源、跨平台的 JavaScript 运行时环境。CONTINUATION泛洪攻击被发现存在于多个HTTP/2协议实现中。

在受影响版本中,由于Node.js针对HTTP/2协议的实现不当,未正确处理多个CONTINUATION帧的情况,在node::http2::Http2Session::~Http2Session()中存在条件竞争可触发断言。

攻击者可以通过向发送HEADERS帧后连续发送大量CONTINUATION帧,造成服务端内存耗尽拒绝服务。

HTTP/2和HTTP/1.x(如HTTP/1.1)是互联网上用于传输网页和其他数据的两个主要版本的HTTP协议。它们之间存在一些关键区别,主要包括以下几点:

  1. 多路复用(Multiplexing):HTTP/2支持多路复用,这意味着在单个TCP连接上可以同时处理多个请求和响应。这有助于减少网络延迟,提高页面加载速度。相比之下,HTTP/1.x每个请求和响应需要一个单独的TCP连接,这可能导致连接开销和潜在的性能问题。

  2. 二进制协议:HTTP/2是一个二进制协议,而HTTP/1.x是基于文本的协议。二进制协议更易于解析,可以提高传输效率。

  3. 压缩HTTP头部(Header Compression):HTTP/2使用HPACK压缩算法来压缩HTTP头部,从而减少传输数据量。这有助于提高传输速度和性能。而HTTP/1.x的头部信息没有压缩,可能导致额外的传输开销。

  4. 服务器推送(Server Push):HTTP/2支持服务器推送,这意味着服务器可以在客户端请求之前主动发送资源,从而减少往返时间和提高性能。HTTP/1.x不支持服务器推送。

  5. 请求优先级(Request Prioritization):HTTP/2允许客户端为请求设置优先级,这有助于更有效地利用网络资源。HTTP/1.x没有这个功能。

  6. 流控制(Flow Control):HTTP/2提供了基于流的控制机制,可以防止发送方向接收方发送过多的数据,从而避免网络拥塞。HTTP/1.x没有类似的流控制机制。

总之,HTTP/2相较于HTTP/1.x在性能、传输效率和功能方面都有显著的改进。许多现代浏览器和服务器已经支持HTTP/2,使得网页加载更快,网络传输更高效。

HTTP/2的标头(Header)和HTTP/1.x的请求头(Request Header)在概念上是类似的,它们都包含了在HTTP请求和响应中传输的元数据。然而,HTTP/2在传输和处理这些头部信息时采用了不同的方法。

在HTTP/1.x中,请求头和响应头是以纯文本形式传输的,每个头部字段由一个名称和一个值组成,名称和值之间用冒号分隔。头部字段之间用回车换行符(CRLF)分隔,最后一个头部字段后再跟一个回车换行符表示头部结束。

在HTTP/2中,头部信息采用了二进制格式进行传输,这使得解析和处理更加高效。此外,HTTP/2还引入了HPACK压缩算法对头部信息进行压缩,以减少传输的数据量。这意味着HTTP/2的头部信息在传输过程中会比HTTP/1.x的请求头更加紧凑和高效。

虽然HTTP/2在传输和处理头部信息方面有所改进,但它仍然支持HTTP/1.x中的大多数头部字段。这意味着,从功能和用途的角度来看,HTTP/2的头部和HTTP/1.x的请求头是相似的。例如,它们都可以包含诸如User-AgentAccept-EncodingCookie等头部字段。

在HTTP/2协议中,HEADERS帧用于传输HTTP请求或响应的头部信息。这包括一系列的头部字段,每个字段都包含一个名称和一个值。这些字段提供了关于请求或响应的元数据,例如目标URL、请求方法、响应状态码、内容类型等。

以下是一些可能包含在HEADERS帧中的头部字段:

  1. :method:HTTP请求方法,如GET、POST等。
  2. :scheme:URL的协议方案,通常是http或https。
  3. :authority:请求的目标服务器的主机名和可能的端口号。
  4. :path:请求的目标URL的路径和查询字符串。
  5. :status:HTTP响应的状态码,如200表示成功,404表示未找到等。
  6. content-type:响应体的媒体类型。
  7. content-length:响应体的长度,以字节为单位。
  8. cookie:包含HTTP cookie的头部字段,用于维护客户端和服务器之间的状态。

除了这些预定义的头部字段外,HEADERS帧还可以包含其他自定义的头部字段。例如,一些Web应用可能会使用自定义的头部字段来传输特定的应用数据或配置信息。

需要注意的是,HTTP/2协议使用HPACK算法对头部信息进行压缩,以减少传输的数据量。这意味着在网络上传输的HEADERS帧实际上包含的是压缩后的头部字段,接收方需要对其进行解压缩以恢复原始的头部信息。

参考:
https://nowotarski.info/http2-continuation-flood-technical-details/

这篇关于Node.js HTTP/2 CONTINUATION 拒绝服务漏洞(CVE-2024-27983)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882591

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

2024/9/8 c++ smart

1.通过自己编写的class来实现unique_ptr指针的功能 #include <iostream> using namespace std; template<class T> class unique_ptr { public:         //无参构造函数         unique_ptr();         //有参构造函数         unique_ptr(

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快