Breaking Down CVE-2024-23897: PoC Code Surfaces Just After Jenkins Advisory
2024/01/26 SecurityOnline — Jenkins の深刻な脆弱性である CVE-2024-23897 について、ベンダーがアドバイザリを公表した翌日に、技術的詳細と PoC エクスプロイト・コードが公開された。CI/CD (continuous integration and delivery) に欠かせない、オープンソースの自動化サーバーである Jenkins に、任意のファイル読み取りの脆弱性が存在することが判明したのだ。
この脆弱性 CVE-2024-23897 は、Jenkins のビルトイン CLI (Command Line Interface) に関連するものであり、引数のファイル・パスに続く”@” という文字を、ファイルの内容に置き換える機能の悪用を可能にするという。この機能は、一見すると無害だが、Jenkins コントローラ・ファイル・システム上の任意のファイルを読み取るコマンドを、攻撃者が作成できることが明らかになった。
この脆弱性は、Jenkins がコマンドの引数やオプションを解析するために使用している args4j ライブラリに起因する。このライブラリの expandAtFiles 機能は、デフォルトで有効になっていることが、根本的な原因となった。Overall/Read パーミッションを持つ攻撃者は、これを悪用してファイル全体を読み取ることができ、さらに、パーミッションを持たない攻撃者も、発行された CLI コマンドによっては、最初の3行を閲覧することが出来ることがわかった。さらに、この欠陥はバイナリ・ファイルにも及び、暗号キーや機密情報を暴露する可能性があることも明らかになった。
Sonar のセキュリティ研究者である Yaniv Nizry は、この脆弱性を悪用する攻撃者が、Jenkins インスタンス上の任意のファイルから得られる引数を、任意の数に拡張できることを実証することで、この欠陥を明らかにした。
Yaniv Nizry は、「この関数は、引数が “@” から始まっているかどうかをチェックして、”@” で始まっている場合は、”@” 以降のパスのファイルを読み込み、行ごとに新しい引数を展開する。つまり、攻撃者が引数をコントロールできれば、Jenkins インスタンス上の任意のファイルから、任意の数の引数を展開できるということだ」と詳述している。
この脆弱性の悪用に成功した攻撃者は、connect-to-node コマンドのように、任意の数の引数を受け取り、それらをユーザーに表示して返すコマンドを見つけることで、パーミッション・チェックの前に例外がスローされる。それにより、明示的な “CONNECT” パーミッションの必要性を回避して、機密ファイルの内容を漏らすことができる。
さらに、多くのセキュリティ研究者たちが、この脆弱性を再現している。
脆弱性 CVE-2024-23897 が公開された後に、この脆弱性の悪用を脅威アクターたちが実演しているのが観察され、さまざまな PoC エクスプロイトが公開された。そして、数多くの脅威アクターが、この脆弱性のエクスプロイトを攻撃チェーンに組み込んでいる。
Jenkins セキュリティ・チームは、この脆弱性を修正するために、Jenkins 2.442/LTS 2.426.3 でコマンド・パーサ機能 (expandAtFiles) を無効化するパッチをリリースした。このパッチは、CVE-2024-23897 がもたらすリスク軽減のための重要なステップであり、ソフトウェア・セキュリティにおける継続的な警戒とタイムリーなアップデートの必要性を強調している。
この Jenkins のCVE-2024-23897 ですが、第一報は 2024/01/25 の「Jenkins 深刻な脆弱性 CVE-2024-23897 などが FIX:ただちにパッチを!」であり、その翌日の 26日には PoC がでるという、素早い展開となっています。すでに、脅威アクターたちも注目し、悪用に取り掛かり始めているようなので、ご利用のチームは、お気をつけください。よろしければ、Jenkins で検索も、ご利用ください。




You must be logged in to post a comment.