openSUSE 15 セキュリティ更新: nodejs12 (openSUSE-SU-2021:1574-1)

high Nessus プラグイン ID 156130

Language:

概要

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

説明

リモートの SUSE Linux SUSE15ホストには、openSUSE-SU-2021:1574-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)

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

ソリューション

影響を受けるnodejs12、nodejs12-devel、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

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

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

プラグインの詳細

深刻度: High

ID: 156130

ファイル名: openSUSE-2021-1574.nasl

バージョン: 1.5

タイプ: local

エージェント: unix

公開日: 2021/12/17

更新日: 2023/11/22

サポートされているセンサー: Frictionless Assessment AWS, Frictionless Assessment Azure, Frictionless Assessment Agent, Nessus Agent, Nessus

リスク情報

VPR

リスクファクター: High

スコア: 7.3

CVSS v2

リスクファクター: Medium

基本値: 6.4

現状値: 5

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

CVSS スコアのソース: CVE-2021-22959

CVSS v3

リスクファクター: High

基本値: 8.6

現状値: 7.7

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

現状ベクトル: CVSS:3.0/E:P/RL:O/RC:C

CVSS スコアのソース: CVE-2021-37713

脆弱性情報

CPE: p-cpe:/a:novell:opensuse:nodejs12, p-cpe:/a:novell:opensuse:nodejs12-devel, p-cpe:/a:novell:opensuse:npm12, cpe:/o:novell:opensuse:15.2

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

エクスプロイトが利用可能: true

エクスプロイトの容易さ: Exploits are available

パッチ公開日: 2021/12/12

脆弱性公開日: 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

IAVB: 2021-B-0059-S