Node.js 16.x < 16.20.1 / 18.x < 18.16.1 / 20.x < 20.3.1 多个漏洞(2023 年 6 月 20 日星期四安全版本)。

high Nessus 插件 ID 177518

简介

Node.js - JavaScript 运行环境受到多个漏洞的影响。

描述

远程主机上安装的 Node.js 版本低于 16.20.1、18.16.1、20.3.1。因此,它受到 2023 年 6 月 20 日星期四安全版本公告中提及的多个漏洞影响。

- 在 process.mainModule.proto.require() 中使用 proto 可绕过策略机制,并且需要 policy.json 定义之外的模块。此漏洞会影响在所有以下可用的稳定版本系列中使用实验性策略机制的所有用户:16.x、18.x 和 20.x。请注意,发布此 CVE 时,该策略是 Node.js 的一项实验性功能。感谢 Axel Chong 报告此漏洞,同时感谢 Rafael Gonzaga 修复此漏洞。(CVE-2023-30581)

- 已在 Node.js 版本 20 中发现一个漏洞,尤其是在实验性权限模型中。此缺陷与在验证文件权限时未正确处理路径遍历绕过有关。
此漏洞会影响使用 Node.js 20 中的实验性权限模型的所有用户。请注意,发布此 CVE 时,该权限模块是 Node.js 的一项实验性功能。感谢 Axel Chong 报告此漏洞,同时感谢 Rafael Gonzaga 修复此漏洞。
(CVE-2023-30584)

- Node.js 版本 20 中存在一个漏洞,允许使用内置检查器模块 (node:inspector) 绕过由 --experimental-permission 标记设置的限制。通过利用工作线程类创建具有 kIsInternal Symbol 的内部工作线程的功能,如果在工作线程构造函数中附加了检查器,攻击者便可在初始化新的 WorkerImpl 之前修改 isInternal 值。
此漏洞仅会影响在 Node.js 20 中使用权限模型机制的 Node.js 用户。请注意,发布此 CVE 时,该权限模块是 Node.js 的一项实验性功能。感谢 mattaustin 报告此漏洞,同时感谢 Rafael Gonzaga 修复此漏洞。(CVE-2023-30587)

- 已在 Node.js 版本 20 中发现一个漏洞,当 --allow-fs-read 标记与非 * 参数一起使用时,此漏洞会影响使用实验性权限模型的用户。出现此缺陷的原因是模型权限不充分,无法通过 fs.watchFile API 限制文件监视。如此一来,恶意执行者便可监控他们没有明确读取权限的文件。此漏洞会影响使用 Node.js 20 中的实验性权限模型的所有用户。请注意,发布此 CVE 时,该权限模块是 Node.js 的一项实验性功能。感谢 Colin Ihrig 报告此漏洞,同时感谢 Rafael Gonzaga 修复此漏洞。(CVE-2023-30582)

- 在 Node.js 20 中使用带 --allow-fs-read 标记的文件系统读取限制时,fs.openAsBlob() 可绕过实验性权限模型。出现此缺陷的原因是 fs.openAsBlob() API 中缺少检查。此漏洞会影响使用 Node.js 20 中的实验性权限模型的所有用户。感谢 Colin Ihrig 报告此漏洞,同时感谢 Rafael Gonzaga 修复此漏洞。请注意,发布此 CVE 时,该权限模块是 Node.js 的一项实验性功能。(CVE-2023-30583)

- 已发现 Node.js(.msi 版)安装进程中存在一个漏洞,此漏洞主要影响使用 .msi 安装程序安装 Node.js 的 Windows 用户。此漏洞会在执行修复操作期间出现,在此期间,在 NT AUTHORITY\SYSTEM 环境中运行的 msiexec.exe 进程会尝试从当前用户的注册表中读取 %USERPROFILE% 环境变量。当 %USERPROFILE% 环境变量引用的路径不存在时,此问题便会出现。在这种情况下,msiexec.exe 进程会尝试以不安全的方式创建指定路径,从而可能导致在任意位置创建任意文件夹。标准(或非特权)用户可以修改 Windows 注册表中的 %USERPROFILE% 环境变量,这会导致此漏洞更为严重。因此,包括恶意实体或特洛伊木马在内的非特权执行者可操纵环境变量密钥,以欺骗特权 msiexec.exe 进程。此操纵可导致在非预期位置和潜在恶意位置创建文件夹。请务必注意,只有使用 .msi 安装程序安装 Node.js 的 Windows 用户会遇到此漏洞。选择其他安装方法的用户不受此特定问题的影响。
这会影响所有可用的 Node.js 版本:v16、v18 和 v20。感谢 @sim0nsecurity 报告此漏洞,同时感谢 Tobias Nieen 修复此漏洞。(CVE-2023-30585)

- Node.js 20 允许在启用实验性权限模型时加载任意 OpenSSL 引擎,这样可以绕过和/或禁用权限模型。当通过兼容的 OpenSSL 引擎调用时,crypto.setEngine() API 可用于绕过权限模型。例如,OpenSSL 引擎可通过操纵该进程的堆栈内存来在主机进程的堆内存中定位 Permission: : enabled_,以此禁用主机进程中的权限模型。此漏洞会影响使用 Node.js 20 中的实验性权限模型的所有用户。请注意,发布此 CVE 时,该权限模块是 Node.js 的一项实验性功能。感谢 Tobias Nieen 报告并修复此漏洞。(CVE-2023-30586)

- 当使用无效的公钥借助 crypto.X509Certificate() API 创建 x509 证书时,会发生非预期终止,从而使其在攻击者可强制中断应用程序处理时容易受到 DoS 攻击,这是因为该进程会在访问通过用户代码所提供证书的公钥信息时终止。用户的当前环境将不复存在,这将导致 DoS 情况。此漏洞会影响所有可用的 Node.js 版本 v16、v18 和 v20。感谢 Marc Schnefeld 报告此漏洞,同时感谢 Tobias Nieen 修复此漏洞。
(CVE-2023-30588)

- Node.js 的 http 模块中的 llhttp 解析器未严格使用 CRLF 序列来分隔 HTTP 请求。这可导致 HTTP 请求走私 (HRS) 攻击。CR 字符(无 LF)完全可以在 llhttp 解析器中分隔 HTTP 标头字段。根据 RFC7230 第 3 部分,只应使用 CRLF 序列分隔每个标头字段。此漏洞会影响所有可用的 Node.js 版本:v16、v18 和 v20。感谢 Yadhu Krishna M(Team bi0s & CRED 安全团队)报告此漏洞,同时感谢 Paolo Insogna 修复此漏洞。(CVE-2023-30589)

- crypto.createDiffieHellman() 返回的 generateKeys() API 函数仅生成缺失(或过时)的密钥,即此函数只会在尚未设置任何密钥时生成私钥。但是,文档中对此 API 调用的解释是:生成私有和公共 Diffie-Hellman 密钥值。记录的行为与实际行为不同,这种差异很容易导致使用这些 API 的应用程序中出现安全问题,这是因为 DiffieHellman 可能会被用作应用程序级安全措施的基础。请注意,这是文档变更,已将此漏洞归类为 CWE-1068 - 实现与文档化设计不符。此变更适用于所有可用的 Node.js 版本:v16、v18 和 v20。感谢 Ben Smyth 报告此漏洞,同时感谢 Tobias Nieen 修复此漏洞。(CVE-2023-30590)

请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。

解决方案

升级到 Node.js 16.20.1 / 18.16.1 / 20.3.1 或更高版本。

另见

https://nodejs.org/en/blog/vulnerability/june-2023-security-releases/

插件详情

严重性: High

ID: 177518

文件名: nodejs_2023_jun.nasl

版本: 1.9

类型: local

代理: windows, macosx, unix

系列: Misc.

发布时间: 2023/6/22

最近更新时间: 2024/1/9

配置: 启用全面检查 (optional)

支持的传感器: Nessus Agent, Nessus

风险信息

VPR

风险因素: Medium

分数: 5.2

CVSS v2

风险因素: High

基本分数: 7.8

时间分数: 6.1

矢量: CVSS2#AV:N/AC:L/Au:N/C:N/I:C/A:N

CVSS 分数来源: CVE-2023-30590

CVSS v3

风险因素: High

基本分数: 7.5

时间分数: 6.7

矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

时间矢量: CVSS:3.0/E:P/RL:O/RC:C

漏洞信息

CPE: cpe:/a:nodejs:node.js

必需的 KB 项: installed_sw/Node.js

可利用: true

易利用性: Exploits are available

补丁发布日期: 2023/6/20

漏洞发布日期: 2023/6/20

参考资料信息

CVE: CVE-2023-30581, CVE-2023-30582, CVE-2023-30583, CVE-2023-30584, CVE-2023-30585, CVE-2023-30586, CVE-2023-30587, CVE-2023-30588, CVE-2023-30589, CVE-2023-30590

IAVB: 2023-B-0042-S