エグゼクティブ サマリー
Jenkins は Java で書かれたオープンソースの自動化サーバです。Jenkins を GitLab などのソフトウェアに統合するためのプラグインもいくつか存在しています。Cisco Talos は本日、3 つのプラグイン(Swarm、Ansible、GitLab)の脆弱性を公開します。これら 3 つはすべて情報漏えいの脆弱性です。プラグインが操作されて、Jenkins の資格情報データベースの資格情報が攻撃者の制御するサーバに開示される可能性があります。
Talos は情報開示方針に従って Jenkins および関連会社 と協力し、今回の脆弱性が解決されたことと、影響を受けた利用者向けにアップデートが提供されていることを確認しています。
脆弱性の詳細
Jenkins Swarm プラグインの外部エンティティを参照する XTM の機能に存在する情報漏えいの脆弱性(TALOS-2018-0783/CVE-2019-5022)
Jenkins Self-Organizing Swarm Modules Plugin バージョン 3.14 には、`getCandidateFromDatagramResponses()` メソッド内に自明な XXE(XML External Entities)の脆弱性が含まれています。攻撃者は UDP ディスカバリ要求に細工した応答を返すことで、Swarm クライアントと同じネットワーク上でシステムから任意のファイルを読み取ることが可能になります。
包括的な脆弱性アドバイザリはこちら
Jenkins Ansible Tower プラグインの情報漏えいの脆弱性(TALOS-2018-0786/CVE-2019-5025)
Jenkins Ansible Tower Plugin 0.9.1 の`testTowerConnection` 関数にエクスプロイト可能な情報漏えいの脆弱性が存在します。匿名ユーザ(有効な場合)などの全体的な権限または読み取り権限を持つユーザが細工された HTTP 要求を送信した場合に、影響を受けるこのプラグインのバージョンによって Jenkins 資格情報データベースの資格情報が攻撃者の制御するサーバに開示される事象を引き起こす危険性があります。この脆弱性は HTTP GET 要求によるエクスプロイトが可能であるため、クロスサイト リクエスト フォージェリ(CSRF)によってもエクスプロイトされる可能性があります。上記に加えて、応答サーバが正しくフォーマットされた JSON ドキュメントを返さない場合に、当該の応答は、HTTP GET Only のサーバ サイド リクエスト フォージェリ(SSRF)を引き起こした報告済みエラーの一部としてユーザに表示されます。
このプラグインが公開する`fillTowerCredentialsIdItems` エンドポイントにもこの脆弱性は存在します。その結果、クレデンシャル識別子の列挙が可能になり、攻撃が成立してしまいます。
包括的な脆弱性アドバイザリはこちら
Jenkins GitLab プラグインの情報漏えいの脆弱性(TALOS-2018-0788/CVE-2019-5027)
Jenkins GitLab Plugin 1.5.11 の `testConnection` 関数にエクスプロイト可能な情報漏えいの脆弱性が存在します。匿名ユーザ(有効な場合)などの全体的な権限または読み取り権限を持つユーザが細工された HTTP 要求を送信した場合に、影響を受けるこのプラグインのバージョンによって Jenkins 資格情報データベースの資格情報が攻撃者の制御するサーバに開示される事象を引き起こす危険性があります。この脆弱性は HTTP GET 要求によるエクスプロイトが可能であるため、クロスサイト リクエスト フォージェリ(CSRF)によってもエクスプロイトされる可能性があります。
この攻撃が成立するためには、攻撃者は開示する資格情報の ID を知る必要があります。その方法はいくつかあり、公開済みのビルド ログ(読み取り専用)、Jenkins UI の資格情報マネージャーへのアクセス、または、`fillCredentialsIdItems`style エンドポイントを提供する他の脆弱なプラグインなどを使って取得できます。
包括的な脆弱性アドバイザリはこちら
脆弱性が確認されたバージョン
CVE-2019-5025 の影響を受ける Jenkins Ansible Tower プラグインのバージョンは 0.9.1 です。CVE-2019-5026 の影響を受ける Jenkins Artifactory プラグインのバージョンは 3.2.1 と 3.2.0 です。CVE-2019-5027 の影響を受ける Jenkins GitLab プラグインのバージョンは 1.5.11 です。CVE-2019-5022 の影響を受ける Swarm-Client のバージョンは 3.14 です。
カバレッジ
脆弱性のエクスプロイトは、以下の SNORT? ルールにより検出可能です。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、Firepower Management Center または Snort.org を参照してください。
Snort ルール:49362、49363、49370、49373
本稿は 2019年5月6日に Talos Group のブログに投稿された「Vulnerability Spotlight: Multiple bugs in several Jenkins plugins」の抄訳です。