TAチームが 「Jenkins Arbitrary File Read 」を分析して書いた脆弱性レポート
この脆弱性は、Jenkinsにおけるランダムファイル読み込みの脆弱性であり、エージェントアクセス可能な攻撃者がコントローラに接続し、コントローラ内の任意のファイルに読み込むことが可能であり、RCE攻撃につながる可能性がある。
この脆弱性はJenkins 2.471、LTS 2.452.4、2.462.1で修正されており、AIWAFは関連する脆弱性を継続的に監視している。
Tags: Jenkins, CVE-2024-43044, Arbitrary File Read, Remote Code Execution, Jenkins Remoting Library, Jenkins Agent, Jenkins Controller
1. 概要
Jenkinsは、ソフトウェアのビルド、テスト、デプロイなどのタスクを自動化するために使用されるツールであり、我々はこのツールのファイル・リードの脆弱性であるCVE-2024-43044を分析した。
2. 攻撃の種類
Jenkinsのアーキテクチャは、エージェントの管理、スケジューリング、監視などのタスクを調整するJenkinsエージェントとコントローラで構成されている。Jenkinsエージェントとコントローラ間の通信にはRemotingライブラリが使用され、Remotingライブラリは独自のプロトコルまたはSSHを介して通信を行う。
https://blog.convisoappsec.com/en/analysis-of-cve-2024-43044/
この脆弱性は、AgentがControllerのファイルシステムから必要なファイルを要求する際に、Controller内の関数内の一部のコードが要求のパスを制限していないため、AgentがController内の任意のファイルにアクセスし、読み取ることを可能にします。
そのため、攻撃者は、agent.jar ファイルを取得するか、 remoting.jar ファイル経由で認証情報を漏洩させることで、 Agent にアクセスし、エージェント名と秘密情報を取得し、 通信ライブラリである Remoting ライブラリを使用して Controller に接続し、 脆弱なインスタンスである hudson.remoting.RemoteClassLoader を呼び出して、 任意のファイルにアクセスすることが可能です。
この脆弱性を利用して、特定のユーザーに関する情報を盗み出し、その情報に基づいてRemomber-Meクッキーを作成し、Jenkinsスクリプト・エンジンにアクセスして悪意のあるコマンドを実行することができます。
3. 対策
この脆弱性はJenkins 2.471、LTS 2.452.4、2.462.1でパッチが適用されており、Jenkinsは残念ながら修正を適用できなかったJenkinsコントローラ向けに修正されたエージェントファイルも提供している。
この脆弱性はSSH通信環境におけるもので、プロプライエタリなプロトコルであり、AIWAFのパターン化された領域ではないようだ。
https://github.com/jenkinsci/remoting/blob/master/docs/protocols.md
4. 結論
Jenkinsのファイル・リーディングの脆弱性は、Agentに何らかの方法でアクセスできる人であれば誰でも簡単に悪用することができ、2024年9月24日時点で516,000台以上のJenkinsサーバーが暴露されており、この脆弱性の影響は大きいため、Jenkinsには常に最新バージョンのパッチを適用しておく必要があります。
ZoomEye search results for “Jenkins”
当社のAIWAF製品は、引き続きJenkinsの脆弱性を監視し、発見された関連する脆弱性に迅速に対応していきます。