SUSE SLES12セキュリティ更新プログラム: nodejs12 (SUSE-SU-2022:0101-1)

high Nessus プラグイン ID 156806

言語:

概要

リモートの SUSE ホストに 1 つ以上のセキュリティ更新がありません。

説明

リモートの SUSE Linux SLES12ホストには、SUSE-SU-2022:0101-1のアドバイザリに記載された複数の脆弱性の影響を受けるパッケージがインストールされています。

- このパーサーは、コロンの前のヘッダー名の直後にスペース (SP) があるリクエストを受け入れます。このため、llhttp < v2.1.4 および < v6.0.6 での HTTP リクエストスマグリング (HRS) が引き起こされる可能性があります。(CVE-2021-22959)

- llhttp < 2.1.4および < 6.0.6の解析関数は、チャンクされたリクエストの本文を解析するときに、チャンク拡張を無視します。このため、特定の状況で HTTP リクエストスマグリング (HRS) が発生します。(CVE-2021-22960)

- バージョン 4.4.16、5.0.8、および 6.1.7より前の npm パッケージ tar (別名 node-tar ) には、任意ファイル作成/上書きおよび任意コード実行の脆弱性があります。node-tar は、シンボリックリンクによって場所が変更されるファイルが抽出されないことを保証することを目的としています。これは、抽出されたディレクトリがシンボリックリンクではないことを確認することで、一部は達成されます。さらに、特定のパスがディレクトリであるかどうかを判断するための不要な stat 呼び出しを防ぐために、ディレクトリが作成されるときにパスがキャッシュされます。
ディレクトリとディレクトリと同じ名前のシンボリックリンクの両方を含む tar ファイルを抽出する際に、このロジックは不十分でした。アーカイブエントリのシンボリックリンクとディレクトリ名は、posix システムのパスセパレーターとしてバックスラッシュを使用していました。キャッシュチェックロジックは、パスセパレーターとして「\」と「/」の両方の文字を使用していましたが、「\」は posix システムで有効なファイル名文字です。最初にディレクトリを作成し、次にそのディレクトリをシンボリックリンクに置き換えることで、ディレクトリの node-tar シンボリックリンクチェックをバイパスし、信頼できない tar ファイルを任意の場所にシンボリックリンクさせ、その後そこに任意のファイルを抽出することが可能になりました。任意のファイルの作成および上書きを可能にします。さらに、大文字と小文字を区別しないファイルシステムでも同様の混乱が生じる可能性があります。tar アーカイブが「FOO」にディレクトリを含み、「foo」という名前のシンボリックリンクが続いている場合、大文字と小文字を区別しないファイルシステムでは、シンボリックリンクを作成するとディレクトリがファイルシステムから削除されますが、内部ディレクトリからは削除されません。キャッシュヒットとして扱われないためです。「FOO」ディレクトリ内の後続のファイルエントリは、ディレクトリがすでに作成されていると考えて、シンボリックリンクのターゲットに配置されます。これらの問題は、リリース 4.4.16、5.0.8 および 6.1.7で対処されています。node-tar の v3 ブランチは廃止され、これらの問題に対するパッチを受けませんでした。まだ v3 リリースを使用している場合は、より新しいバージョンの node-tar に更新することをお勧めします。
これが不可能な場合は、GHSA-9r2w-394v-53qc に記載されている回避策を利用できます。(CVE-2021-37701)

- バージョン 4.4.18、5.0.10、および 6.1.9より前の npm パッケージ tar (別名 node-tar ) には、任意ファイル作成/上書きおよび任意コード実行の脆弱性があります。node-tar は、シンボリックリンクによって場所が変更されるファイルが抽出されないことを保証することを目的としています。これは、抽出されたディレクトリがシンボリックリンクではないことを確認することで、一部は達成されます。さらに、特定のパスがディレクトリであるかどうかを判断するための不要な stat 呼び出しを防ぐために、ディレクトリが作成されるときにパスがキャッシュされます。
ディレクトリと同じ値に正規化されたユニコードを含む名前のシンボリックリンクの両方を含む tar ファイルを抽出する際に、このロジックは不十分でした。さらに、Windows システムでは、長いパスの部分が、8.3 の短いパスの部分と同じファイルシステムエンティティに分解されます。したがって、特別に細工された tar アーカイブには、パスの 1 つの形式のディレクトリが含まれ、その後に同じファイルシステムエンティティに分解される異なる文字列のシンボリックリンクが続き、その後に最初の形式を使用するファイルが含まれる可能性があります。最初にディレクトリを作成し、次にそのディレクトリをファイルシステムで同じエントリに分解された明らかに異なる名前を持つシンボリックリンクに置き換えることで、ディレクトリの node-tar シンボリックリンクチェックをバイパスし、信頼できない tar ファイルを任意の場所にシンボリックリンクさせ、その後そこに任意のファイルを抽出し、任意のファイルの作成および上書きが可能でした。これらの問題は、リリース 4.4.18、5.0.10 および 6.1.9で対処されています。
node-tar の v3 ブランチは廃止され、これらの問題に対するパッチを受けませんでした。まだ v3 リリースを使用している場合は、より新しいバージョンの node-tar に更新することをお勧めします。これが不可能な場合は、GHSA-qq89-hq3f-393p に記載されている回避策を利用できます。(CVE-2021-37712)

- バージョン 4.4.18、5.0.10、および 6.1.9より前の npm パッケージ tar (別名 node-tar ) には、任意ファイル作成/上書きおよび任意コード実行の脆弱性があります。node-tar は、シンボリックリンクによって抽出ターゲットディレクトリ外にあるファイルが抽出されないことを保証することを目的としています。これは、アーカイブ内のエントリの絶対パスをサニタイズし、「..」パス部分を含むアーカイブエントリをスキップし、抽出ターゲットディレクトリに対してサニタイズされたパスを解決することで、一部は達成されます。
このロジックは、絶対パスではないパスを含む tar ファイルを抽出する場合には、Windows システムでは不十分でしたが、抽出ターゲットとは異なるドライブ文字を指定しました (例: 「C: some\path」)。ドライブ文字が抽出ターゲットと一致しない場合 (例:「D: \extract\dir」)、「path.resolve (extractionDirectory、entryPath)」の結果は、抽出ターゲットディレクトリではなく「C: 」ドライブ上の現在の作業ディレクトリに対して解決されます。さらに、パスの「..」の部分は、「C: ../foo」などのドライブ文字の直後に発生する可能性があり、パスの正規化および分割された部分内の「..」をチェックするロジックによって適切にサニタイズされませんでした。これは、Windows システムの「node-tar」のユーザーにのみ影響します。これらの問題は、リリース 4.4.18、5.0.10 および 6.1.9で対処されています。node-tar の v3 ブランチは廃止され、これらの問題に対するパッチを受けませんでした。まだ v3 リリースを使用している場合は、より新しいバージョンの node-tar に更新することをお勧めします。現在、node-tar が行うのと同じパス正規化手順を実行せずにこの問題を回避する合理的な方法はありません。ユーザーには、パス自体をサニタイズしようとするのではなく、最新のパッチが適用されたバージョンの node-tar にアップグレードすることをお勧めします。(CVE-2021-37713)

- 依存関係ツリーを計算し、npm コマンドラインインターフェイスの「node_modules」フォルダー階層を管理するライブラリである「@npmcli/arborist」は、パッケージの依存関係の契約が満たされ、パッケージコンテンツの抽出が常に予期されたフォルダーに実行されることを保証することを目的としています。これは、特定の名前を持つ依存関係の「package.json」マニフェストで定義された依存関係指定子を解決し、競合する依存関係を解決するためにフォルダーをネストすることで、一部達成されます。複数の依存関係が名前の大文字と小文字のみが異なる場合、Arborist の内部データ構造は、それらを「node_modules」階層の同じレベル内で共存できる別のアイテムと見なしていました。ただし、大文字と小文字を区別しないファイルシステム (macOS や Windows など) では、この限りではありません。「file: /some/path」などのシンボリックリンクの依存関係と組み合わせて使用すると、攻撃者はファイルシステム上の任意の場所に任意のコンテンツを書き込むことができる状況を作り出すことができます。たとえば、パッケージ「pwn-a」は、「foo: file: /some/path」などの「package.json」ファイルにおける依存関係を定義できます。別のパッケージ「pwn-b」は、「FOO: file: foo.tgz`. 大文字と小文字を区別しないファイルシステムで、「pwn-a」をインストールし、その後「pwn-b」をインストールした場合、「foo.tgz」のコンテンツが「/some/path」に書き込まれ、「/some/path」の既存のコンテンツがすべて削除されます。大文字と小文字を区別しないファイルシステムで npm v7.20.6 以前を使用しているユーザーは、影響を受ける可能性があります。これは、npm v7.20.7 以降に含まれる @npmcli/arborist 2.8.2でパッチされています。(CVE-2021-39134)

- 依存関係ツリーを計算し、npm コマンドラインインターフェイスの node_modules フォルダー階層を管理するライブラリである「@npmcli/arborist」は、パッケージの依存関係の契約が満たされ、パッケージコンテンツの抽出が常に予期されたフォルダーに実行されることを保証することを目的としています。これは、パッケージコンテンツをプロジェクトの「node_modules」フォルダーに抽出することで達成されます。root プロジェクトの「node_modules」フォルダーまたはその依存関係が何らかの理由でシンボリックリンクで置き換えられた場合、Arborist がファイルシステムの任意の場所にパッケージの依存関係を書き込む可能性があります。パッケージのアーチファクトコンテンツに含まれるシンボリックリンクがフィルターで除外されるため、「node_modules」シンボリックリンクを作成する別の手段を使用する必要があることに、注意してください。1.「preinstall」スクリプトが「node_modules」をシンボリックリンクに置き換える可能性があります。(これは、「--ignore-scripts」を使用することで防ぐことができます。) 2. 攻撃者は、ターゲットに git リポジトリを提供し、ルートで「npm install --ignore-scripts」を実行するように指示する可能性があります。「npm install --ignore-scripts」は通常、プロジェクトディレクトリの外では変更できないため、安全であると見なされて成功する可能性があります。これは、npm v7.20.7 以降に含まれる @npmcli/arborist 2.8.2でパッチされています。回避策を含む詳細については、参照されている GHSA-gmw6-94gg-2rc2 を参照してください。(CVE-2021-39135)

- 任意の Subject Alternative Name (SAN) タイプを受け入れると、PKI が特定の SAN タイプを使用するように明確に定義されていない限り、名前に制約のある中間体がバイパスされる可能性があります。Node.js は、URI SAN タイプを受け入れていました。これは、多くの場合、PKI が使用するように定義されていません。さらに、プロトコルが URI SAN を許可する場合、Node.js は URI を正しく一致しませんでした。(CVE-2021-44531)

- Node.js は、SAN (Subject Alternative Names) を文字列形式に変換します。この文字列を使用して、接続を検証する際にホスト名に対してピア証明書をチェックします。証明書チェーン内で名前の制約が使用されると、文字列形式が注入の脆弱性の影響を受け、これらの名前の制約がバイパスされる可能性があります。(CVE-2021-44532)

- Node.js が複数の値を持つ相対識別名を適切に処理しませんでした。攻撃者は、たとえば、証明書サブジェクトの検証をバイパスできる Common Name を注入するために、複数値の Relative Distinguished Name として解釈される単一値の Relative Distinguished Name を含む証明書サブジェクトを作成する可能性があります。(CVE-2021-44533)

- console.table() 関数のフォーマットロジックのため、ユーザーが制御する入力をプロパティパラメーターに渡し、同時に少なくとも 1 つのプロパティを持つプレーンオブジェクトを第 1 パラメーター (__proto__ である可能性がある) として渡すことは安全ではありませんでした。プロトタイプ汚染は、コントロールが非常に制限されて ori オブジェクトプロトタイプの数値キーに割り当てられる空の文字列のみを許可するという点で、コントロールが非常に制限されています。
(CVE-2022-21824)

Nessus はこの問題をテストしておらず、代わりにアプリケーションの自己報告されたバージョン番号にのみ依存しています。

ソリューション

影響を受ける nodejs12、nodejs12-devel、nodejs12-docs、npm12 パッケージを更新してください。

関連情報

https://bugzilla.suse.com/1190053

https://bugzilla.suse.com/1190054

https://bugzilla.suse.com/1190055

https://bugzilla.suse.com/1190056

https://bugzilla.suse.com/1190057

https://bugzilla.suse.com/1191601

https://bugzilla.suse.com/1191602

https://bugzilla.suse.com/1194511

https://bugzilla.suse.com/1194512

https://bugzilla.suse.com/1194513

https://bugzilla.suse.com/1194514

http://www.nessus.org/u?eceab4dc

https://www.suse.com/security/cve/CVE-2021-22959

https://www.suse.com/security/cve/CVE-2021-22960

https://www.suse.com/security/cve/CVE-2021-37701

https://www.suse.com/security/cve/CVE-2021-37712

https://www.suse.com/security/cve/CVE-2021-37713

https://www.suse.com/security/cve/CVE-2021-39134

https://www.suse.com/security/cve/CVE-2021-39135

https://www.suse.com/security/cve/CVE-2021-44531

https://www.suse.com/security/cve/CVE-2021-44532

https://www.suse.com/security/cve/CVE-2021-44533

https://www.suse.com/security/cve/CVE-2022-21824

プラグインの詳細

深刻度: High

ID: 156806

ファイル名: suse_SU-2022-0101-1.nasl

バージョン: 1.4

タイプ: local

エージェント: unix

公開日: 2022/1/19

更新日: 2022/5/6

サポートされているセンサー: Nessus Agent

リスク情報

CVSS スコアのソース: CVE-2022-21824

VPR

リスクファクター: High

スコア: 7.3

CVSS v2

リスクファクター: Medium

Base Score: 6.4

Temporal Score: 4.7

ベクトル: AV:N/AC:L/Au:N/C:N/I:P/A:P

現状ベクトル: E:U/RL:OF/RC:C

CVSS v3

リスクファクター: High

Base Score: 8.6

Temporal Score: 7.5

ベクトル: CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H

現状ベクトル: E:U/RL:O/RC:C

脆弱性情報

CPE: p-cpe:/a:novell:suse_linux:nodejs12, p-cpe:/a:novell:suse_linux:nodejs12-devel, p-cpe:/a:novell:suse_linux:nodejs12-docs, p-cpe:/a:novell:suse_linux:npm12, cpe:/o:novell:suse_linux:12

必要な KB アイテム: Host/local_checks_enabled, Host/cpu, Host/SuSE/release, Host/SuSE/rpm-list

エクスプロイトの容易さ: No known exploits are available

パッチ公開日: 2022/1/18

脆弱性公開日: 2021/8/31

参照情報

CVE: CVE-2021-22959, CVE-2021-22960, CVE-2021-37701, CVE-2021-37712, CVE-2021-37713, CVE-2021-39134, CVE-2021-39135, CVE-2021-44531, CVE-2021-44532, CVE-2021-44533, CVE-2022-21824

SuSE: SUSE-SU-2022:0101-1

IAVB: 2021-B-0059