Jenkins LTS < 2.375.4/Jenkins 每週版 < 2.394 多個弱點

critical Nessus Plugin ID 172394

概要

遠端 Web 伺服器上執行的應用程式受到多個弱點的影響

說明

根據其自我報告的版本號碼,遠端 Web 伺服器上執行的 Jenkins 是 Jenkins LTS 2.375.4 之前版本或 Jenkins 每週版的 2.394 之前版本。因此會受到多個弱點影響:

- 1.5 版之前的 Apache Commons FileUpload 未限制要處理的要求部分數量,導致攻擊者可能透過惡意上傳或一系列上傳觸發 DoS。請注意,與所有檔案上傳限制一樣,新組態選項 (FileUploadBase#setFileCountMax) 預設為不啟用,且必須明確設定。(CVE-2023-24998)

- 高。對於 Jenkins 2.270 至 2.393 版 (包括頭尾兩版)、LTS 2.277.1 至 2.375.3 版 (包括頭尾兩版),當出現錯誤訊息說明它與外掛程式管理器中當前版本的 Jenkins 不兼容時,不會逸出外掛程式依賴的 Jenkins 版本。這會導致攻擊者可惡意利用已儲存的跨網站指令碼 (XSS) 弱點,這些弱點能夠為已設定的更新網站提供外掛程式,並讓 Jenkins 執行個體顯示此訊息。惡意利用不需要安裝受操控的外掛程式。對於 Jenkins 2.394 版、LTS 2.375.4 版及 LTS 2.387.1 版,當出現錯誤訊息說明它與當前版本的 Jenkins 不兼容時,不會逸出外掛程式依賴的 Jenkins 版本。由於 Jenkins 社群根據報告的 Jenkins 核心版本更新網站伺服器外掛程式中繼資料的方式,因此合理更新至最新版本的 Jenkins 執行個體不太可能在外掛程式管理器中顯示有弱點的錯誤訊息。至少須符合下列條件之一:所用的 Jenkins 版本比 13 個月之前的版本更舊 (以本公告發佈時間為標準,舊與 2.333 版或舊於 LTS 2.319.2 版),因為所有最新的 Jenkins 版本都會收到僅包含相容外掛程式版本的更新網站中繼資料。Jenkins 已從較新版本降級,此後未要求任何更新的更新網站中繼資料,因此 Jenkins 仍會顯示與先前較新版本 Jenkins 相容的可用外掛程式。已設定自訂更新網站 URL (即非 https://updates.jenkins.io/update-center.json),且這些更新網站的行為有所不同。
我們預期其中大部分會託管相當少量的經過審查的外掛程式 (例如,經組織核准的或內部的外掛程式),以防止攻擊者透過其限制性的包含程序進行惡意利用。
自 2023 年 2 月 15 日的版本起,Jenkins 社群更新網站不再發布具有無效 Jenkins 核心相依性的外掛程式版本。即使在 13 個月之前發佈的 Jenkins 版本上,這也可防止攻擊者透過這些更新網站進行惡意利用。此外,Jenkins 安全性團隊已確認,Jenkins 專案尚未發布任何核心相依性遭到操控以惡意利用此弱點的外掛程式版本。
(CVE-2023-27898)

- 當外掛程式從系統管理員的電腦上傳時,High Jenkins 會建立一個暫存檔案。Jenkins 2.393 和更舊版本、LTS 2.375.3 和更舊版本使用新建立檔案的預設權限在系統暫存目錄中建立此暫存檔。如果這些權限過於寬鬆,可讓具有 Jenkins 控制器檔案系統存取權的攻擊者在將檔案安裝到 Jenkins 之前讀取和寫入檔案,進而可能導致任意程式碼執行。此弱點只會影響針對所有使用者使用共用暫存目錄的作業系統 (通常是 Linux)。此外,新建立檔案的預設權限通常只允許攻擊者讀取暫存檔。
Jenkins 2.394 版、LTS 2.375.4 版和 LTS 2.387.1 版使用更多限制性權限建立暫存檔。
作為因應措施,如果您擔心此問題,但無法立即更新 Jenkins,則可以使用 Java 系統屬性 java.io.tmpdir 將不同的路徑設定為您的預設暫存目錄。
(CVE-2023-27899)

- 中等。Jenkins 2.393 和更舊版本、LTS 2.375.3 和更舊版本受到 Apache Commons FileUpload 程式庫弱點 CVE-2023-24998的影響。此程式庫用於處理透過 Stapler Web 架構 (通常是透過 StaplerRequest#getFile) 和 Jenkins 中的 MultipartFormDataParser 上傳的檔案。攻擊者可藉此將特製要求傳送至處理檔案上傳的 HTTP 端點,進而造成拒絕服務 (DoS)。Jenkins 2.394 版、LTS 2.375.4 版和 LTS 2.387.1 版將要處理的要求部分數量限制為 1000。只接收簡單表單提交的特定端點有一個下限。雖然 Apache Commons FileUpload 相依性之前已在 2.392 週版中更新,但 2.394 中的 Jenkins 特定變更是保護 Jenkins 所必需的。某些 Jenkins 表單可能非常複雜,這些限制適用於所有欄位,而不僅僅是代表上傳檔案的欄位。因此,包含 (可能) 檔案上傳的複雜表單的合法提交可能會受到這些限制影響。如果發生這種情況,可藉由將 Java 系統屬性 hudson.util.MultipartFormDataParser.FILEUPLOAD_MAX_FILES 和 org.kohsuke.stapler.RequestImpl.FILEUPLOAD_MAX_FILES 設定為更大的值來變更這些限制,或設定為 -1 以完全停用。這些 Jenkins 版本也引入了額外的 Java 系統屬性,可用來限制要求大小:hudson.util.MultipartFormDataParser.FILEUPLOAD_MAX_FILE_SIZE 和 org.kohsuke.stapler.RequestImpl.FILEUPLOAD_MAX_FILE_SIZE 允許限制可在一個 multipart/form-data 要求中處理的個別欄位大小 (以位元組為單位)。
hudson.util.MultipartFormDataParser.FILEUPLOAD_MAX_SIZE 和 org.kohsuke.stapler.RequestImpl.FILEUPLOAD_MAX_SIZE 允許限制可在一個 multipart/form-data 要求中處理的總申請大小 (以位元組為單位)。Jenkins 預設不會設定這些大小限制。
設定這些系統屬性可提供額外的保護,但影響合法使用的風險更大 (例如,上傳大型檔案參數時)。(CVE-2023-27900、CVE-2023-27901)

- 中等。Jenkins 使用與工作區目錄相鄰的暫存目錄 (通常具有 @tmp 名稱後置詞) 來儲存與版本相關的暫存檔案。在工作流程中,當在自動配置的工作區的子目錄中操作時,這些暫存目錄與目前的工作目錄相鄰。Jenkins 控制的處理程序 (如 SCM) 可能會將認證儲存在這些目錄中。Jenkins 2.393 和更舊版本、LTS 2.375.3 和更舊版本在檢視工作工作區時會顯示這些暫存目錄,這會允許具有「項目/工作區」權限的攻擊者存取其內容。Jenkins 2.394 版、LTS 2.375.4 版和 LTS 2.387.1 版未在工作工作區中列出這些暫存目錄。因應措施是,如果您擔心此問題但無法立即更新 Jenkins,請勿將「項目/工作區」權限授予缺少「項目/設定」權限的使用者。Java 系統屬性 hudson.model.DirectoryBrowserSupport.allowTmpEscape 可設為 true 以還原先前的行為。
(CVE-2023-27902)

- 低。從 Jenkins CLI 觸發版本時,如果檔案參數是透過 CLI 的標準輸入提供的,則 Jenkins 會在控制器上建立一個暫存檔案。Jenkins 2.393 和更舊版本、LTS 2.375.3 和更舊版本使用新建立檔案的預設權限在預設暫存目錄中建立此暫存檔。如果這些權限過於寬鬆,可讓具有 Jenkins 控制器檔案系統存取權的攻擊者在在版本中使用檔案之前讀取和寫入檔案。此弱點只會影響針對所有使用者使用共用暫存目錄的作業系統 (通常是 Linux)。此外,新建立檔案的預設權限通常只允許攻擊者讀取暫存檔。Jenkins 2.394 版、LTS 2.375.4 版和 LTS 2.387.1 版使用更多限制性權限建立暫存檔。作為因應措施,如果您擔心此問題,但無法立即更新 Jenkins,則可以使用 Java 系統屬性 java.io.tmpdir 將不同的路徑設定為您的預設暫存目錄。(CVE-2023-27903)

- 低。當代理程式連線中斷時,Jenkins 2.393 和更舊版本、LTS 2.375.3 和更舊版本會在代理程式相關頁面上列印錯誤堆疊追踪。此堆疊追踪可能包含攻擊者無法存取的 Jenkins 組態相關資訊。代理程式連線中斷時,Jenkins 2.394 版、LTS 2.375.4 版和 LTS 2.387.1 版不會顯示錯誤堆疊追踪。(CVE-2023-27904)

- 中等。update-center2 是用來產生在 updates.jenkins.io 上託管的 Jenkins 更新網站的工具。
雖然 Jenkins 專案專為此而設計,但其他人可以使用它來操作自己的自我託管更新網站。update-center2 3.13 版和 3.14 版在外掛程式下載索引頁面 (類似頁面) 上呈現所需的 Jenkins 核心版本。此版本取自外掛程式的中繼資料,未經處理。這會導致攻擊者利用已儲存的跨網站指令碼 (XSS) 弱點,為託管提供外掛程式。必須同時滿足下列前置條件,此弱點才會在自我託管的 update-center2 中遭到惡意利用:需要啟用下載頁面的產生 (即,需要設定 --download-links-directory 引數)。必須使用自訂下載頁面範本 (--index-template-url 引數),且所使用的範本不得透過 Content-Security-Policy 阻止 JavaScript 執行。預設範本透過宣告限制性內容安全性原則來防止惡意利用。update-center2 3.15 版篩選出含有無效 Jenkins 核心相依性的外掛程式版本。
建議使用 update-center2 或其分支主控自己的更新網站的系統管理員進行更新,或整合提交 091ef999。此變更已於 2023 年 2 月 15 日部署至 Jenkins 社群更新網站。Jenkins 專案已發佈單一外掛程式版本,於 2023 年 1 月 16 日在兩小時內以無害的方式利用此弱點來示範此問題。尚未發布其他惡意利用此弱點的外掛程式版本。(CVE-2023-27905)

請注意,Nessus 並未測試這些問題,而是僅依據應用程式自我報告的版本號碼作出判斷。

解決方案

將 Jenkins 每週版升級至 2.394 版或更新版本,或將 Jenkins LTS 升級至 2.375.4 版、2.387.1 版或更新版本。

另請參閱

https://jenkins.io/security/advisory/2023-03-08

Plugin 詳細資訊

嚴重性: Critical

ID: 172394

檔案名稱: jenkins_2_394.nasl

版本: 1.6

類型: combined

代理程式: windows, macosx, unix

系列: CGI abuses

已發布: 2023/3/9

已更新: 2024/1/26

組態: 啟用徹底檢查

支援的感應器: Frictionless Assessment Agent, Nessus Agent, Nessus

風險資訊

VPR

風險因素: Medium

分數: 6.5

CVSS v2

風險因素: Critical

基本分數: 10

時間分數: 7.4

媒介: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C

CVSS 評分資料來源: CVE-2023-27905

CVSS v3

風險因素: Critical

基本分數: 9.6

時間分數: 8.3

媒介: CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H

時間媒介: CVSS:3.0/E:U/RL:O/RC:C

弱點資訊

CPE: cpe:/a:cloudbees:jenkins, cpe:/a:jenkins:jenkins

必要的 KB 項目: installed_sw/Jenkins

可輕鬆利用: No known exploits are available

修補程式發佈日期: 2023/3/8

弱點發布日期: 2023/2/20

參考資訊

CVE: CVE-2023-24998, CVE-2023-27898, CVE-2023-27899, CVE-2023-27900, CVE-2023-27901, CVE-2023-27902, CVE-2023-27903, CVE-2023-27904, CVE-2023-27905

IAVA: 2023-A-0127-S, 2023-A-0593-S