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 Runtime Environment は複数の脆弱性の影響を受けます。

説明

リモートホストにインストールされている 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 の--experimental-permission脆弱性により、組み込みインスペクターモジュールを使用して、フラグで設定された制限をバイパスできます (node: インスペクター)。Worker クラスが kIsInternal Symbol で内部ワーカーを作成する機能を悪用することで、攻撃者は新しい WorkerImpl を初期化する前に、Worker コンストラクター内でインスペクターがアタッチされている場合、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 エンジンを読み込むことができます。これにより、アクセス許可モデルがバイパスまたは無効化される可能性があります。crypto.setEngine() API は、互換性のある OpenSSL エンジンで呼び出されたときに、アクセス許可モデルをバイパスするために使用できます。たとえば、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 パーサーは、HTTP リクエストの区切りに CRLF シーケンスを厳密には使用しません。これにより、HTTP リクエストスマグリングが引き起こされる可能性があります (HRS)。CR 文字 (LF なし) は、llhttp パーサーの HTTP ヘッダーフィールドを区切るのに十分です。RFC7230 セクション 3 によると、CRLF シーケンスだけが各ヘッダーフィールドを区切る必要があります。この脆弱性は、次のすべての Node.js アクティブバージョンに影響します。v16、v18、v20。この脆弱性を報告してくれた Yadhu Krishna M 氏 (チーム bi0s & CRED セキュリティチーム) に、およびこの問題を修正してくれた 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/

プラグインの詳細

深刻度: 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