Critical Jenkins Vulnerability Exposes Servers to RCE Attacks – Patch ASAP!
2024/01/25 TheHackerNews — オープンソースの CI/CD (continuous integration/continuous delivery and deployment) 自動化ソフトウェア Jenkins のメンテナたちが9件のセキュリティ欠陥 (High 3件) を修正した。その中には、悪用に成功した攻撃者に、リモート・コード実行 (RCE) を許す深刻なバグも含まれる、この脆弱性 CVE-2024-23897 は、ビルトイン CLI (command line interface) を介した、任意のファイル読み取りの脆弱性として説明されている。

1月24日 (水) の Jenkins のアドバイザリには、「CLI コマンドを処理する際の、Jenkins コントローラ上のコマンド引数とオプションの解析のために、args4j ライブラリが使用されている。このコマンド・パーサーには、引数の “@” に続くファイル・パスを、ファイルのコンテンツで置き換える、expandAtFiles 機能が存在する。この機能が、デフォルトで有効化されており、Jenkins 2.441 以前および、LTS 2.426.2 以前では無効化されていない」と記されている。
この問題を悪用する脅威アクターたちは、Jenkins コントローラ・プロセスにおけるデフォルトの文字エンコーディングを使用して、Jenkins コントローラ・ファイル・システム上の任意のファイルを読み取ることが可能となる。
“Overall/Read” パーミッションを持つ攻撃者は、ファイル全体を読むことが可能だが、パーミッションを持たない攻撃者は CLI コマンドに応じて、ファイルの先頭から3行を読むことが可能となる。
つまり、この欠点を武器化することで、一定の制限はあるが、暗号鍵を含むバイナリ・ファイルを読み取ることができる。バイナリのシークレットが抽出できれば、Jenkins は以下のように、さまざまな攻撃へのドアを開く可能性がある。
- リソース・ルート URL 経由のリモート・コード実行
- “Remember me” クッキーによるリモート・コード実行
- ビルド・ログを介した蓄積型 XSS 攻撃によるリモート・コード実行
- CSRF 保護バイパスによるリモート・コード実行
- Jenkins に保存されたシークレットの解読
- Jenkins 内の任意のアイテムの削除
- Java ヒープ・ダンプのダウンロード
Jenkins は、「バイナリ・データを含むファイルを読み取っている間に、影響を受ける機能により、コントローラ・プロセスのデフォルトの文字エンコーディングを介した文字列の読み取りが試行される。その結果として、一部のバイトが正常に読み取れず、プレースホルダ値に置き換えられる可能性がある。それぞれのバイトの読み取りの可否は、この文字エンコーディングに依存する」と述べている。
Jenkins 2.442/ LTS 2.426.3では、このコマンド・パーサー機能が無効化され、欠陥は修正されている。
なお、パッチが適用されるまでの短期的な回避策として推奨されるのは、CLI へのアクセスを OFF にすることだ。
2023年3月に Jenkins は、 標的のシステム上でコード実行を引き起こす可能性のある、2つの深刻な脆弱性 CorePlague (CVE-2023-27898 /CVE-2023-27905) に対処している。
Jenkins の expandAtFiles は、引数の “@” に続くファイル・パスを、ファイルのコンテンツに置き換えるという便利な機能だと説明されています。しかし、脆弱性 CVE-2024-23897 が悪用されると、任意のファイルの読み取りにいたり、さまざまな攻撃を引き起こす可能性があるとのことです。ご利用のチームは、ご注意ください。よろしければ、Jenkins で検索も、ご利用ください
You must be logged in to post a comment.