ASEC
  • マルウェアの情報
  • AhnLab 検知
  • 総計
  • 対応ガイド
  • AhnLab
Posted By ATCP , 2024년 09월 09일

Jenkins の脆弱性露出に関する韓国国内サーバーの状況 (CVE-2024-23897、CVE-2024-43044)

全世界的に広く使用されている開発ツールである Jenkins 製品に関する複数の脆弱性が公表され、そのうち一部の脆弱性が実際の攻撃に悪用されている。また、韓国国内の Jenkins サーバーの大多数が脆弱性にさらされていることが確認された。

今年の初めに公開された CVE-2024-23897 脆弱性は、認証されていないユーザーが Jenkins サーバーシステムの任意のファイルを読み込むことができる脆弱性であり、CVSS スコア9.8の非常に危険度が高い脆弱性である。最近、この脆弱性が実際の攻撃に悪用されているという報告[1]があり、海外メディアによると特定の企業がこの脆弱性を悪用した攻撃で被害を受けたという[2]。この脆弱性により、対象となるバージョンのすべての Jenkins サーバーに攻撃が可能なものと見られる。

最近公開された CVE-2024-43044 脆弱性も、標準ライブラリの特定機能を悪用して Agent アクセス権限を手に入れた攻撃者が、サーバーの任意のファイルを読み込むことができる脆弱性で、CVSS スコア8.8の危険度が高い脆弱性である。

どちらの脆弱性も PoC コードが GitHub、ブログなどに公開されており簡単に探すことができるため、いつでも攻撃に悪用されるおそれがあり注意が必要だ。

ASEC(AhnLab SEcurity intelligence Center)では、当社顧客の脅威露出状況を把握するため、ASM サービスを活用して韓国内で運用中の Jenkins サーバーの脆弱性有無を調査した。当時、外部からアクセスが可能な Jenkins サーバー 4245個が確認され、そのうち 3972個のサーバーのバージョン情報を確認できた。調査の結果、2824個(71%)の環境が深刻な脅威である CVE-2024-23897 脆弱性にさらされており、比較的新しい脆弱性である CVE-2024-43044 にさらされた環境は3969個(99.9%)であった。大多数のサーバーが脆弱性にさらされている状態で運用されていることが確認された。(*2024.08.20 基準)

IP Port Domain Jenkins Version
115.89.***.195 8080 *******.********.net 2.346.3
175.45.***.185 7979 ***********.***.or.kr 2.375.1
211.62.***.72 9000 *****.********.com 2.319.2
116.125.***.22 9090 *****.co.kr 2.387.3
119.205.***.48 8110 ********.or.kr 2.263.3

表1. 確認された脆弱な Jenkins サーバーの例

 

図1. 韓国国内の Jenkins サーバーの脆弱性露出状況 (左から、すべての Jenkins サーバー、バージョン情報確認サーバー、CVE-2024-43044 脆弱性対象サーバー、CVE-2024-23897 脆弱性対象サーバー)

 

CVE-2024-23897

Jenkins はリモートコマンドのインターフェースに対応トしている。Jenkins-CLI ツールによって遠隔地からコマンドや引数を渡して、各種機能を実行できる。この CLI コマンドの解析過程で発生する脆弱性である。

 

図2. Jenkins CLI の実行画面

 

コマンド解析に使用する Args4j ライブラリに「@」識別子以降の文字列パスのファイルを読み取り、引数として設定する機能(expandAtFiles)がある。コマンドに対する有効な引数ではない場合はエラーが発生するが、このエラーメッセージに引数として使用した文字列、すなわちファイルの内容が表示されてしまう脆弱性である。

解析の結果、脆弱性に利用可能なエラーメッセージを出力するコマンドは、一部のラインを読み取れるコマンドと、全体のラインを読み取れるコマンドに分けられる。引数を使用しない、または制限された個数の引数を使用するコマンドの場合はファイルの特定ラインを読み取れる一方で、引数の個数制限がないコマンドの場合、ファイルライン全体を読み取ることができる。また、権限によって使用可能なコマンドが制限されるが、すべてのラインを読み取れるコマンドは特定の設定環境でのみ動作が可能であった。

特に設定を行っていない環境の場合、デフォルト権限で以下のコマンドのみが使用できる。これらは、引数が必要でないか、個数が制限された引数を使用するコマンドである。

コマンド 読み取り可能ライン
who-am-i 1
shutdown 1
safe-shutdown 1
restart 1
keep-build 3
help 1, 2
enable-job 2
disable-job 2

表2. 権限なしで使用可能なコマンド

 

デフォルト権限の状態では脆弱性を利用して窃取できるファイルの内容が一部のラインのみに制限されるが、SSH Key、Jenkins 暗号化キーなどのライン区分がない主要ファイルは全体の内容を出力することができる。

 

図3. ファイルの一部を読み取ることができるコマンドの使用例

 

特定の設定状況では複数の引数を使用するコマンドを実行することができる。以下の設定のうち1つに該当する場合、脆弱性によってファイルの全ライン、すなわちファイル全体を読み取ることができる。

–         匿名接続機能を使用した場合

–         すべてのユーザーに読み取り権限を付与した場合

–         ユーザー加入を許可した場合

–         Legacy モードを使用する場合

 

図4. 脆弱性に関する Jenkins の設定

 

上記のような特定の設定環境でファイルの内容全体を読み取ることができるコマンドは、以下の通りである。

 

コマンド
connect-node
delete-job
delete-node
delete-view
disconnect-node
offline-node
online-node
reload-job

表3. ファイル全体を読み取ることができるコマンド

 

図5. ファイル全体を読み取ることができるコマンドの使用例

 

公開されているサイトに多数の PoC コードが存在し、PoC コードでなくとも Jenkins パッケージにデフォルトで含まれている CLI 接続ツールで脆弱性の再現が可能なため、誰でもすぐに攻撃することができる。この脆弱性の対象となるバージョンのユーザーは、確認後直ちに緩和バージョンのパッチを適用することを推奨する。

 

CVE-2024-43044

Jenkins インストール時にデフォルトでインストールされる Remoting ライブラリに対する脆弱性である。ライブラリ自体はデフォルトでインストールされるが、Jenkins に Agent が登録されており、攻撃者が Agent アクセス権限を有する場合、脆弱性を利用することができる。

このライブラリは Jenkins サーバーと Agent の通信機能を実現し、Agent がサーバーにリクエストした JAVA クラスを実行できる機能を含んでいる。サーバー URL の JAR ファイルを実行する目的で実現されたものと思われるが、ファイルパスおよびタイプをスキャンしないため、サーバーシステムの任意のファイルを読み取り、Agent に転送することができる。この脆弱性によってディレクトリリストや任意のファイルの読み取りが可能である。

解析の結果、RemoteClassLoader クラスの特定メソッドにコードを追加することで脆弱性の再現が可能である。ファイルパスがディレクトリの場合はディレクトリリストを返し、ファイルの場合はファイル内容全体を返す。

 

図6. オリジナルの Remoting.jar RemoteClassLoader コード

 

リクエスト URL には「file://」パスが許可されるため、当該パスがディレクトリの場合はディレクトリ内部のファイルリストが、ファイルの場合はファイル内容全体が Agent に伝達される。

 

図7. 脆弱性によるディレクトリリストやファイル読み取りの例

 

この脆弱性も危険度の高い脆弱性として説明されており、メーカーでは直ちにアップデートを行うのが難しい場合に備え、問題となる fetchJar メソッド自体を使用できないようにパッチを当てるプログラムを提供している[3]。

 

本文の脆弱性は再現難易度が低く、サーバーの重要なファイル内容が流出するおそれがあるため、悪用されると多大な被害が予想される。脆弱なバージョンで運用を続けていると、攻撃対象としてさらされるおそれがあるため、被害予防のため直ちに最新のパッチを適用する必要がある。

当該事例以外にも、攻撃者は複数の有名製品の既知の脆弱性を悪用して攻撃を試みる。使用しているサービスは常に最新バージョンを維持する必要があり、各種セキュリティ設定によって攻撃者の脆弱性スキャンや攻撃を防御するべきである。また、国内外のセキュリティ勧告を常にチェックし、対象サービスを運用中の場合は迅速な措置を講じるとともに、被害の有無をチェックする必要がある。

ASEC では、ブログを通じて主要な脆弱性に関するセキュリティ勧告文書を掲示しており、AhnLab TIP サービスに加入している顧客のうち脆弱性の対象となるサービスを運用している企業が確認された場合、別途カスタマイズ型レポートを提供している。当社顧客の脆弱情報が外部に漏えいしないようにし、安全にサービスを運用できるよう、非公開で該当する顧客にのみ提供するサービスである。

 

関連リンク

[1] https://www.cisa.gov/known-exploited-vulnerabilities-catalog(外部サイト、英語にて提供)

[2] https://www.cybersecuritydive.com/news/jenkins-critical-cve-exploits-cisa/724729/(外部サイト、英語にて提供)

[3] https://github.com/jenkinsci-cert/SECURITY-3430(外部サイト、英語にて提供)

 

セキュリティ勧告文書

[セキュリティ勧告文書] Jenkins 製品のセキュリティアップデート勧告(CVE-2024-43044)
https://asec.ahnlab.com/ko/82339/(韓国語にて提供)

[セキュリティ勧告文書] JenKins 製品群の2024年1月セキュリティアップデート勧告(CVE-2024-23897)
https://asec.ahnlab.com/ko/79332/(韓国語にて提供)

関連 IOC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム 「AhnLab TIP」 サブスクリプションサービスを通して確認できる。

Categories: 脆弱性, Public

Tagged as: ArbitraryFileRead, exploit, Jenkins, ServerVulnerabilities, Vulnerabilities, Vulnerability

Netflix を騙るフィッシングメールの拡散に注意
XMRig コインマイナーを配布する BMOF(Binary Managed Object File) (MDS 製品による検知)

Archives

  • Facebook
  • RSS Feed
follow us in feedly