Node.js 修复了可能让攻击者使应用程序崩溃的严重 HTTP 错误
admin
2023-08-01 11:33:20
0
  • 点击进入:ChatGPT工具插件导航大全

Node.js 发布了一个高危漏洞的更新,攻击者可能利用该漏洞破坏进程并导致意外行为,例如应用程序崩溃和潜在的远程代码执行 (RCE)。

被称为 CVE-2021-22930 的释放后使用漏洞与该语言中 HTTP2 流的处理方式有关。

Node.js 推出了针对该缺陷的即时修复程序

本周,Node.js 推出了针对高严重性、释放后使用漏洞的修复程序,跟踪为 CVE-2021-22930。

当程序尝试访问先前已释放且不再持有该资源的内存地址处的资源时,会出现释放后使用漏洞。

在某些情况下,这可能会导致数据损坏或意外行为,例如应用程序崩溃,甚至远程代码执行 (RCE)。

修复程序出现在最新的 Node.js 版本 16.6.0 中,并且还向后移植到版本 12.22.4 (LTS) 和 14.17.4 (LTS)。

下面显示的修复程序已应用于多个 Node.js 分支以压缩释放后使用漏洞:

nodejs-vuln-fixnodejs-vuln-fix
简单的修复解决了漏洞(GitHub)

Eran Levin 因报告此漏洞而受到赞誉。

高严重性漏洞的突然更新发布的解释是围绕该漏洞的讨论已经公开:

“我们通常喜欢提前通知并提供唯一更改是安全修复的版本,但由于此漏洞已经公开,我们认为在已经计划的版本中快速修复此修复程序更为重要,” 红帽宣布首席软件工程师和 NodeJS 技术指导委员会 (TSC) 成员 Daniel Bevenius。

中止 HTTP 连接时触发的错误

该漏洞是在 Node.js 解析传入的 RST_STREAM 帧的情况下触发的,没有错误代码或取消代码。

在基于HTTP/2 协议的应用程序中 ,RST_STREAM 帧由打算终止连接的任一主机发送。

例如,在客户端-服务器架构中,如果客户端应用程序想要结束连接,它会向服务器发送一个 RST_STREAM 帧。

收到帧后,服务器将停止响应客户端,最终中止连接。服务器即将发送给客户端的任何“数据”帧都可以被丢弃。

但是在存在漏洞的 Node.js 版本的情况下,当服务器收到带有“取消”代码 ( nghttp2_cancel )的 RST_STREAM 帧时,接收方会尝试“强制清除”收到的任何数据。

并且,一旦完成,自动回调将另外运行“关闭”函数,尝试第二次释放在上一步中已经释放的内存。

而且,这将导致应用程序崩溃,或由于双重释放错误而导致的不稳定行为。

马修·道格拉斯 (Matthew Douglass) 于 2021 年 6 月 8 日在公共线程上报告了这个错误——以前被认为是“错误”而不是可利用的漏洞。

Douglass 能够在他的系统上 100% 的时间重现该错误,从而导致应用程序崩溃。

Douglass 和 Node.js 贡献者之间的讨论持续了一个多月:

“这个问题似乎是因为处理收到的 RST_STREAM 帧没有错误代码和取消错误代码。”

“节点试图强制处理它并清除流的任何现有数据。这会导致nghttp2关闭已经破坏的流,从而导致双重释放错误,”GitHub 用户kumarak回应道。

推出的修复将 RST_STREAM 帧的传入流添加到队列中,并在安全时处理队列。这将防止任何双重释放或释放后使用错误。

Node.js 用户应升级到最新版本 16.6.0,或修补的向后移植版本。

相关内容

热门资讯

Windows 11 和 10... Windows 11/10 文件夹属性中缺少共享选项卡 – 已修复 1.检查共享选项卡是否可用 右键...
Radmin VPN Wind... Radmin VPN 是一款免费且用户友好的软件,旨在牢固地连接计算机以创建一个有凝聚力的虚拟专用网...
事件 ID 7034:如何通过... 点击进入:ChatGPT工具插件导航大全 服务控制管理器 (SCM) 负责管理系统上运行的服务的活动...
如何修复 Steam 内容文件... Steam 内容文件锁定是当您的 Steam 文件无法自行更新时出现的错误。解决此问题的最有效方法之...
Hive OS LOLMine... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
如何在电报Telegram中隐... 点击进入:ChatGPT工具插件导航大全 在Android上的电报中隐藏您的电话号码 您可以通过切换...
在 iCloud 上关闭“查找... 如果您是 Apple 的长期用户,您肯定会遇到过 Find My 应用程序,它本机安装在 iPhon...
在 Windows 11 中打... 什么是链路状态电源管理? 您可以在系统控制面板的电源选项中看到链接状态电源管理。它是 PCI Exp...
Hive OS 部署 PXE ... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
farols1.1.501.0... faro ls 1.1.501.0(64bit)可以卸载,是一款无需连接外部PC机或笔记本计算机即可...