【高危】- Node.js 远程代码执行漏洞(CVE-2021-22930)
■ 漏洞描述
2021年7月29日,Node.js发布了v16.x、v14.x 和 v12.x发行版的安全更新,修复了Node.js中的一个Use-After-Free漏洞(CVE-2021-22930),攻击者可以利用此漏洞破坏进程并导致意外行为,例如使应用程序崩溃(拒绝服务)或远程执行代码。
该漏洞与HTTP2 流的处理方式有关。在Node.js解析传入的RST_STREAM帧(用于终止连接)时,由于对接收到的 RST_STREAM 帧的处理中没有错误代码和取消错误代码(nghttp2_cancel),接收器将试图强制清除收到的任何数据,这会导致nghttp2关闭已经破坏的流,从而导致double-free错误。
 
■ 影响范围
16.x、14.x和12.x发行版的所有版本
 
■ 漏洞检测
匹配版本
 
■ 漏洞修复
目前此漏洞已经修复。建议及时更新到以下版本:
Node.js v12.22.4 (LTS)
Node.js v14.17.4 (LTS)
Node.js v16.6.0 (Current)
下载链接:
https://nodejs.org/en/blog/vulnerability/july-2021-security-releases-2/
 
■ 临时修复
加入WAF防护或者放入内网
 
■ 漏洞详情
2021年7月29日,Node.js发布了v16.x、v14.x 和 v12.x发行版的安全更新,修复了Node.js中的一个Use-After-Free漏洞(CVE-2021-22930),攻击者可以利用此漏洞破坏进程并导致意外行为,例如使应用程序崩溃(拒绝服务)或远程执行代码。
该漏洞与HTTP2 流的处理方式有关。在Node.js解析传入的RST_STREAM帧(用于终止连接)时,由于对接收到的 RST_STREAM 帧的处理中没有错误代码和取消错误代码(nghttp2_cancel),接收器将试图强制清除收到的任何数据,这会导致nghttp2关闭已经破坏的流,从而导致double-free错误。