このウェブページのスクリーンショットから、脆弱性に関する以下の重要な情報を取得できます。 1. 脆弱性IDおよびCVE番号: - SECURITY-3430 - CVE-2024-43044 2. 脆弱性説明: - Jenkinsは、コントローラーとエージェント間の通信にRemotingライブラリ(通常は agent.jar または remoting.jar)を使用します。このライブラリにより、エージェントはコントローラーからのクラスおよびクラスローダーリソースをロードできます。 - Remotingは、Jenkinsプラグインが Channel#preloadJar API を介してエージェント全体にjarファイルを送信することを可能にします。Jenkins 2.470 およびそれより古いバージョン、および LTS 2.452.3 およびそれより古いバージョンでは、この機能が bouncycastle API、Groovy、Ivy、TeamConcert などのプラグインによって使用されていました。 - Remoting 3256.v88a_f6e922152 およびそれより古いバージョン(3206.3208.v409508a_675ff および 3248.3250.v3277a_8e88c9b_ を除く)では、Jenkins 2.470 およびそれより古いバージョン、および LTS 2.452.3 およびそれより古いバージョンにおいて、Channel#preloadJar の呼び出しは Controller からエージェントへのファイル取得に ClassLoaderProxy#fetchJar を使用します。さらに、コントローラーにおける ClassLoaderProxy#fetchJar の実装は、エージェントからコントローラーのファイルシステム上のパスの読み取りを要求することを阻止していません。 3. 脆弱性の影響: - この脆弱性により、エージェントプロセス、エージェント上で実行されるコード、および Agent/Connect 権限を持つ攻撃者は、Jenkinsコントローラーのファイルシステム内の任意のファイルを読み取ることが可能です。 4. 修正対策: - Jenkins 2.471、LTS 2.452.4、LTS 2.462.1 では、Remotingライブラリは Jar ファイルの内容を Channel#preloadJar を介して送信し、エージェント側では ClassLoaderProxy#fetchJar のみを現在使用しているため、エージェントはコントローラーに対してjarファイルの内容を要求する必要がなくなりました。 - 管理者は、Javaシステムプロパティ hudson.remoting.Channel.DISABLE_JAR_URL_VALIDATOR を設定することでこの保護を無効にできますが、これはコードがエージェント上で実行されている場合(SCMから取得されたビルドスクリプトおよびテストコードを含む)にのみ推奨されます。 5. 影響を受けるバージョン: - Jenkins ウィークリー版 2.470 およびそれより古いバージョン、LTS版 2.452.3 およびそれより古いバージョン。 6. クレジット(謝辞): - 本脆弱性の発見者には、Daniel Beck(CloudBees, Inc.)、jiangchenwei(Nebulalab)、および yangyue(Nebulalab)が含まれます。 これらの情報は、脆弱性の性質、影響範囲、および修正対策を詳細に説明しており、脆弱性の重大性を理解し、それを解決する方法を知る上で非常に重要です。