Jenkins LTS < 2.375.4/ Jenkins weekly < 2.394の複数の脆弱性

critical Nessus プラグイン ID 172394

概要

リモートのウェブサーバーホストで実行されているアプリケーションは、複数の脆弱性の影響を受けます。

説明

自己報告されたバージョン番号によると、リモートの Web サーバーで実行されている Jenkins のバージョンは、2.375.4より前の Jenkins LTS または 2.394より前の Jenkins weekly です。そのため、以下の複数の脆弱性の影響を受けます。

- 1.5以前の Apache Commons FileUpload は、処理されるリクエスト部分の数を制限しません。その結果、攻撃者が悪意のあるアップロードまたは一連のアップロードで DoS を発生させる可能性があります。注意 : すべてのファイルアップロード制限と同様に、新しい設定オプション (FileUploadBase#setFileCountMax) はデフォルトでは有効ではなく、明示的に構成する必要があります。(CVE-2023-24998)

- High Jenkins 2.270から 2.393(両方を含む)、LTS 2.277.1から 2.375.3(両方を含む) は、プラグインマネージャーが現在のバージョンの Jenkins と互換性がないことを示すエラーメッセージをレンダリングする際に、プラグインが依存する Jenkins バージョンをエスケープしません。これにより、攻撃者が悪用可能な格納型クロスサイトスクリプティング (XSS) の脆弱性が発生し、設定された更新サイトにプラグインを提供し、このメッセージを Jenkins インスタンスに表示させる可能性があります。悪用には、操作されたプラグインをインストールする必要はありません。- High Jenkins 2.394、LTS 2.375.4、および LTS 2.387.1は、現在のバージョンの Jenkins と互換性がないことを示すエラーメッセージをレンダリングする際に、プラグインが依存する Jenkins バージョンをエスケープします。Jenkins コミュニティ更新サイトが、報告された Jenkins コアバージョンに基づいてプラグインメタデータを提供する方法により、適切で最新の Jenkins インスタンスがプラグインマネージャーで脆弱なエラーメッセージを表示することはほとんどありません。以下の条件のうち、少なくとも 1 つを満たす必要があります。使用されている Jenkins のバージョンは約 13 か月 (このアドバイザリの公開時点では LTS 2.319.2または 2.333より前) より古いものです。これは、Jenkins の最新リリースがすべて、互換性のあるバージョンのプラグインのみを含む更新サイトのメタデータを受信するためです。Jenkins は新しいバージョンからダウングレードされ、その後更新された更新サイトのメタデータがリクエストされていないため、Jenkins は以前の新しいバージョンの Jenkins と互換性のある利用可能なプラグインを表示します。カスタム更新サイト URL (つまり https://updates.jenkins.io/update-center.jsonではない) が設定され、これらの更新サイトが異なる動作をします。
これらのほとんどは、かなり少数の検証済みプラグインのセット (たとえば、組織の承認済みプラグインまたは内部プラグイン) をホストし、制限されたインクルードプロセスによる悪用を防止すると予想されます。
Jenkins コミュニティ更新サイトは、2023 年 2 月 15 日以降、無効な Jenkins コア依存関係のあるプラグインリリースを公開しなくなりました。これにより、13 か月以上前のバージョンの Jenkins であっても、これらの更新サイトを通じた悪用が防止されます。さらに、Jenkins セキュリティチームは、この脆弱性を悪用するためにコアの依存関係が操作されたプラグインリリースが Jenkins プロジェクトによって公開されたことはないことを確認しています。
(CVE-2023-27898)

- High Jenkins は、管理者のコンピューターからプラグインがアップロードされると、一時ファイルを作成します。Jenkins 2.393とそれより前、LTS 2.375.3とそれより前では、新しく作成されたファイルに対するデフォルトのアクセス許可で、この一時ファイルをシステム一時ディレクトリに作成します。これらのアクセス許可が過度に許容的である場合、Jenkins コントローラーファイルシステムへのアクセス権を持つ攻撃者が、Jenkins にインストールされる前にファイルを読み書きできるようになり、任意のコードが実行される可能性があります。この脆弱性の影響を受けるのは、全ユーザーが共有する一時ディレクトリを使用しているオペレーティングシステム (通常は Linux) のみです。さらに、新しく作成されたファイルのデフォルトのアクセス権では、通常、攻撃者は一時ファイルを読み取ることしかできません。
Jenkins 2.394、LTS 2.375.4、および LTS 2.387.1は、より制限の厳しいアクセス許可で一時ファイルを作成します。
この問題が心配であるものの、すぐに Jenkins を更新できない場合、回避策として Java システムプロパティ java.io.tmpdir を使用して、デフォルトの一時ディレクトリとして別のパスを設定できます。
(CVE-2023-27899)

- 重要度中 : Jenkins 2.393とそれ以前、LTS 2.375.3とそれ以前は、Apache Commons FileUpload ライブラリの脆弱性の影響を受けます CVE-2023-24998。このライブラリは、Stapler Web フレームワーク (通常は StaplerRequest#getFile を介して)、および Jenkins の MultipartFormDataParser を介して、アップロードされたファイルを処理するために使用されます。これにより、攻撃者は、ファイルのアップロードを処理する細工されたリクエストを HTTP エンドポイントに送信することで、サービス拒否 (DoS) を引き起こすことができます。Jenkins 2.394、LTS 2.375.4、および LTS 2.387.1は、処理されるリクエストパートの数を 1000 に制限します。シンプルなフォーム送信のみを受信する特定のエンドポイントには、下限値があります。Apache Commons FileUpload の依存関係は 2.392ウィークリーリリースで以前に更新されていますが、2.394 の Jenkins 固有の変更は、Jenkins を保護するために必要です。一部の Jenkins フォームは非常に複雑になる可能性があり、これらの制限は、アップロードされたファイルを表すフィールドだけでなく、すべてのフィールドに適用されます。その結果、ファイルのアップロードを含む (可能性のある) 複雑なフォームの正当な送信が、これらの制限の影響を受ける可能性があります。この場合、Java システムプロパティ hudson.util.MultipartFormDataParser.FILEUPLOAD_MAX_FILES、および org.kohsuke.stapler.RequestImpl.FILEUPLOAD_MAX_FILES に大きな値を設定するか、「-1」に設定して完全に無効にすることで、これらの制限を変更できます。Jenkins のこれらのリリースでは、リクエストサイズを制限するために設定できる追加の Java システムプロパティも導入されています。hudson.util.MultipartFormDataParser.FILEUPLOAD_MAX_FILE_SIZE、および org.kohsuke.stapler.RequestImpl.FILEUPLOAD_MAX_FILE_SIZE により、1 つの multipart/form-data リクエストで処理できる個々のフィールドのサイズ (バイト単位) を制限できます。
hudson.util.MultipartFormDataParser.FILEUPLOAD_MAX_SIZE、および org.kohsuke.stapler.RequestImpl.FILEUPLOAD_MAX_SIZE により、1 つの multipart/form-data リクエストで処理できる合計のリクエストサイズ (バイト単位) を制限できます。デフォルトでは、Jenkins はこれらのサイズ制限を設定しません。
これらのシステムプロパティを設定すると、追加の保護を提供できますが、正当な使用に影響を与えるリスクが高くなります (例 : 巨大なファイルパラメーターをアップロードするとき)。(CVE-2023-27900、CVE-2023-27901)

- 重要度中 : Jenkins は、ワークスペースディレクトリに隣接する一時ディレクトリを使用し、通常はビルドに関連する一時ファイルを保存します。パイプラインでは、自動的に割り当てられたワークスペースのサブディレクトリで動作しているとき、これらの一時ディレクトリは既存の作業ディレクトリに隣接しています。SCM などの Jenkins が制御するプロセスは、これらのディレクトリに認証情報を保存する可能性があります。Jenkins 2.393とそれ以前、LTS 2.375.3とそれ以前では、ジョブワークスペースを表示する際にこれらの一時ディレクトリが表示されるため、Item/Workspace のアクセス許可を持つ攻撃者がコンテンツにアクセスする可能性があります。Jenkins 2.394、LTS 2.375.4、および LTS 2.387.1は、これらの一時ディレクトリをジョブワークスペースにリストしません。この問題が心配であるものの Jenkins をすぐに更新できない場合は、回避策として Item/Workspace のアクセス許可を、Item/Configure アクセス許可のないユーザーに付与しないでください。Java システムプロパティ hudson.model.DirectoryBrowserSupport.allowTmpEscape を true に設定すると、以前の動作を復元できます。
(CVE-2023-27902)

- 重要度低 : Jenkins CLI からビルドをトリガーするとき、CLI の標準入力を通じてファイルパラメーターが提供されると、Jenkins がコントローラーに一時ファイルを作成します。Jenkins 2.393とそれより前、LTS 2.375.3とそれより前では、新しく作成されたファイルに対するデフォルトのアクセス許可で、この一時ファイルをデフォルト一時ディレクトリに作成します。これらのアクセス許可が過度に許容的である場合、Jenkins コントローラーファイルシステムへのアクセス許可を持つ攻撃者が、ビルドで使用される前にファイルを読み書きできるようになる可能性があります。この脆弱性の影響を受けるのは、全ユーザーが共有する一時ディレクトリを使用しているオペレーティングシステム (通常は Linux) のみです。さらに、新しく作成されたファイルのデフォルトのアクセス権では、通常、攻撃者は一時ファイルを読み取ることしかできません。Jenkins 2.394、LTS 2.375.4、および LTS 2.387.1は、より制限の厳しいアクセス許可で一時ファイルを作成します。この問題が心配であるものの、すぐに Jenkins を更新できない場合、回避策として Java システムプロパティ java.io.tmpdir を使用して、デフォルトの一時ディレクトリとして別のパスを設定できます。(CVE-2023-27903)

- Low Jenkins 2.393とそれ以前、LTS 2.375.3とそれ以前では、エージェント接続が切断されたときに、エージェント関連ページにエラースタックトレースが出力されます。このスタックトレースには、攻撃者がアクセスできない Jenkins 設定に関する情報が含まれている可能性があります。Jenkins 2.394、LTS 2.375.4、および LTS 2.387.1は、エージェント接続が切断されている場合、エラースタックトレースを表示しません。(CVE-2023-27904)

-重要度中 : update-center2 は、updates.jenkins.io でホストされている Jenkins 更新サイトを生成するために使用されるツールです。
これは Jenkins プロジェクトがこの目的で使用するために設計されていますが、他のユーザーがこれを使用して独自の自己ホスト型更新サイトを操作している可能性があります。update-center2 3.13および 3.14は、必要な Jenkins コアバージョンをプラグインダウンロードインデックスページ (このようなページ) にレンダリングします。このバージョンは、サニタイズされずにプラグインメタデータから取得されます。これにより、攻撃者がホスティング用のプラグインを提供でき、悪用可能な蓄積型クロスサイトスクリプティング (XSS) の脆弱性が発生します。自己ホスト型 update-center2 でこれを悪用するには、次の前提条件が両方とも満たされる必要があります。ダウンロードページの生成を有効にする必要があります (つまり、--download-links-directory 引数を設定する必要がある)。カスタムダウンロードページテンプレートを使用する必要があり (--index-template-url 引数)、使用するテンプレートが Content-Security-Policy による JavaScript の実行を妨げてはなりません。デフォルトのテンプレートは、制限的な Content-Security-Policy を宣言することで悪用を防ぎます。update-center2 3.15は、無効な Jenkins コア依存関係があるプラグインリリースを除外します。
update-center2、またはそのフォークを使用して独自の更新サイトをホストしている管理者は、それを更新するか、コミット 091ef999 を統合することをお勧めします。この変更は、2023 年 2 月 15 日の Jenkins コミュニティ更新サイトにデプロイされました。Jenkins プロジェクトは、この問題を実証するため、この脆弱性を無害な方法で悪用する 1 つのプラグインリリースを 2023 年 1 月 16 日の 2 時間に渡り配布しました。この脆弱性を悪用する他のプラグインリリースは公開されていません。(CVE-2023-27905)

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

ソリューション

Jenkins weekly をバージョン 2.394以降に、Jenkins LTS をバージョン 2.375.4、2.387.1、またはそれ以降にアップグレードしてください。

参考資料

https://jenkins.io/security/advisory/2023-03-08

プラグインの詳細

深刻度: Critical

ID: 172394

ファイル名: jenkins_2_394.nasl

バージョン: 1.6

タイプ: combined

エージェント: windows, macosx, unix

ファミリー: CGI abuses

公開日: 2023/3/9

更新日: 2024/1/26

設定: 徹底したチェックを有効にする

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

リスク情報

VPR

リスクファクター: Medium

スコア: 6.5

CVSS v2

リスクファクター: Critical

Base Score: 10

Temporal Score: 7.4

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

CVSS スコアのソース: CVE-2023-27905

CVSS v3

リスクファクター: Critical

Base Score: 9.6

Temporal Score: 8.3

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

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

脆弱性情報

CPE: cpe:/a:cloudbees:jenkins, cpe:/a:jenkins:jenkins

必要な KB アイテム: installed_sw/Jenkins

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

パッチ公開日: 2023/3/8

脆弱性公開日: 2023/2/20

参照情報

CVE: CVE-2023-24998, CVE-2023-27898, CVE-2023-27899, CVE-2023-27900, CVE-2023-27901, CVE-2023-27902, CVE-2023-27903, CVE-2023-27904, CVE-2023-27905

IAVA: 2023-A-0127-S, 2023-A-0593-S