Node.js 16.x < 16.20.1 / 18.x < 18.16.1 / 20.x < 20.3.1 多個弱點 (2023 年 6 月 20 日星期二安全性版本)。

high Nessus Plugin 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 旗標設定的限制。攻擊者可利用 Worker 類別建立包含 kIsInternal Symbol 的內部背景工作,進而在 Worker 建構函式內附加檢查器時,在初始化新的 WorkerImpl 之前修改 isInternal 的值。
此弱點只會影響使用 Node.js 20 版中權限模型機制的 Node.js 使用者。請注意,在此 CVE 發布時,此權限模型為 Node.js 的實驗性功能。感謝 mattaustin 報告此弱點,同時感謝 Rafael Gonzaga 修正此弱點。(CVE-2023-30587)

- 在 Node.js 20 版中發現一個弱點,當 --allow-fs-read 旗標與 non-* 引數一起使用時,此弱點會影響實驗權限模型的使用者。產生此弱點的原因是,權限模型不足,無法透過 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 Security 團隊) 報告此弱點,並感謝 Paolo Insogna 修正此弱點。 (CVE-2023-30589)

- 從 crypto.createDiffieHellman() 傳回的 generateKeys() API 函式只會產生缺失 (或過時) 的金鑰,也就是說,如果尚未設定任何金鑰,則只會產生私密金鑰。但是,說明文件指出此 API 呼叫:會產生私密和公開 Diffie-Hellman 金鑰值。記錄的行為與實際行為不同,因爲 DiffieHellman 可作為應用程式層級安全性的基礎,所以此差異很容易在使用這些 API 的應用程式中造成安全性問題。請注意,這是一項說明文件變更,此弱點已歸類為 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/

Plugin 詳細資訊

嚴重性: High

ID: 177518

檔案名稱: nodejs_2023_jun.nasl

版本: 1.9

類型: local

代理程式: windows, macosx, unix

系列: Misc.

已發布: 2023/6/22

已更新: 2024/1/9

組態: 啟用徹底檢查

支援的感應器: Nessus Agent, Nessus

風險資訊

VPR

風險因素: Medium

分數: 4.4

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