Jenkins 的網頁管理畫面,左側是功能選單與建置紀錄,右側表格列出一條自動化流程各階段花的時間
示意圖,2022 年的 Jenkins 畫面,不是本次修補的版本。Kmartens27 截圖,CC BY-SA 4.0,Wikimedia Commons,本站裁切為 16:9。
資安JenkinsCI/CD

Jenkins 一次修 15 個核心漏洞、13 個列高風險:有帳號與讀取權限就可能在主機上執行程式,新裝主機可被搶建管理員,請升級到 2.588 或 LTS 2.580.2

Jenkins 是一套免費的開源工具,軟體團隊用它自動把程式碼打包、測試、推上線(這套流程叫 CI/CD,持續整合與持續部署)。依設定,Jenkins 可能碰得到原始碼,也能保存登入正式主機用的密碼和金鑰。Jenkins 專案 10 月 28 日發布安全公告,核心程式一次修了 15 個漏洞,13 個列為「高」風險,最嚴重的可能讓具備帳號與讀取權限的人在 Jenkins 主機上執行任意程式。本站的讀法:公司官網、App 或工廠系統的更新,背後可能就是一台 Jenkins;它若碰得到原始碼或部署金鑰,被入侵時這些也可能跟著外洩。台灣企業自己架 Jenkins 的,請升級到每週版 2.588 或長期支援版(LTS)2.580.2;官網或 App 委外開發的,可以先問廠商有沒有用 Jenkins,有的話跑的是哪一版。

我會不會受影響?

  • 每週版 2.587(含)以前、LTS 2.580.1(含)以前:版本在範圍內。公告寫明,除非另有註明,先前所有版本都視為受影響。能不能被利用,看各漏洞的條件。
  • Jenkins 只開在公司內網:公告明寫不必登入的只有設定精靈那一個;其餘多數要攻擊者具備特定權限、有帳號,或已控制替 Jenkins 跑工作的代理主機(agent)。要注意「整體讀取」(Overall/Read)是權限,有些 Jenkins 會開給未登入的訪客。本站的讀法:只開內網能少掉外部直接連進來的風險,但離職員工沒關的帳號、外包帳號、被盜帳號和內部連得到的人都還在。
  • 用的是其他工具(例如 GitHub Actions、GitLab CI):這份公告只講 Jenkins 核心,不適用。

公告沒有提到這些漏洞已遭利用,美國網路安全暨基礎設施安全局(CISA)的「已遭利用漏洞目錄」(KEV)10 月 28 日版也還沒收這 15 個編號。不過 KEV 過去收過 6 個 Jenkins 核心或外掛的漏洞,最近一筆是 2025 年 10 月加入的 CVE-2017-1000353,代表過去確實有人拿 Jenkins 漏洞實際攻擊。

三個最該先懂的漏洞

有帳號與讀取權限就可能執行程式(CVE-2026-117612)。Jenkins 把設定存成 XML(一種存結構化資料的文字格式),讀回來時要把文字還原成程式裡的物件,這一步叫「反序列化」。Jenkins 原本只准還原認可過的類型,但一個叫 resolves-to 的屬性指到的類型沒被檢查。公告寫,這「讓攻擊者能在反序列化時建立任意類型的物件,可能導致遠端執行程式碼」(本站譯)。條件是攻擊者一定要有整體讀取權限,而且還要符合下列至少一項:有一個非匿名帳號;或有可上傳設定檔 config.xml 的權限(例如修改工作、視圖或代理主機設定)。

新裝主機可被搶建管理員(CVE-2026-117618)。Jenkins 初次安裝的預設是用自己的帳號資料庫,而且「登入的人什麼都能做」,並先建好一個初始帳號。管理員若在設定精靈裡改建新管理員,Jenkins 會先刪初始帳號再建新的。另有一個網址,允許在系統裡一個帳號都沒有時不登入就建帳號,用意是防止管理員把自己鎖在門外。舊版這個網址沒檢查設定精靈做完了沒,於是在帳號被換掉的空檔,未登入的攻擊者可能搶先建出管理員帳號。這叫「競態條件」:兩個動作之間的空檔被搶先鑽進去。本站的讀法:風險集中在正在做初次安裝、又有人連得到的 Jenkins。

撤銷 API token 後仍能登入(CVE-2026-117619)。API token 是給腳本用、代替密碼的一串字。Jenkins 的「保持登入」靠瀏覽器存的 remember-me cookie,公告說這個 cookie 有不有效,跟當初用什麼憑證換到它無關。舊版允許用 HTTP Basic 驗證(網址請求直接附上帳密的方式,也可以附 API token)的請求換到這個 cookie,偷到 token 的人可以先換一個 cookie,等 token 被撤銷或到期,還能繼續進出。修補版不再讓 HTTP Basic 驗證的請求換 cookie。本站讀到的公告沒有寫,升級前已經換出去的 cookie 會不會失效;本站的讀法:懷疑過 token 外洩的,升級後還要另外確認既有的登入狀態怎麼清掉。

其餘 12 個,以及怎麼修

  • 4 個可在 Jenkins 主機上讀寫檔或執行程式:有代理主機設定權限的人,可讓舊格式設定裡沒經管理員核准的啟動指令被執行(117614);能建立並設定工作的人,可利用工作改名:目錄無法直接搬移而改用複製時,Jenkins 會跟著符號連結(指向別處檔案的連結)走,讀到主機上的任意檔案(117615);只有整體讀取權限的人,可把主機上任一 config.xml 當成代理主機設定載入,存檔時覆寫檔案(117616);能設定工作的人,同時封存多份建置產物(例如 Pipeline 的平行分支),把檔案寫到任意位置(117617)。
  • 4 個跨站腳本(XSS):惡意程式碼混進 Jenkins 網頁,在其他使用者(可能包括管理員)的瀏覽器裡執行,觸發方式各不相同;其中 2 個要先控制代理主機。
  • 1 個可改寫別人的帳號(117620):有整體讀取權限的人能在「管理舊資料」功能埋下警示,管理員處理時,某個帳號的資料可能被換掉;用 Jenkins 自己的帳號資料庫時,連密碼都會被換,攻擊者就能用那個帳號登入。
  • 1 個繞過物件層級限制(117624):本該獨立存檔的物件被塞進別的設定裡載入,公告說目前確認的影響只到建出不能登入的使用者紀錄。
  • 2 個中風險:有整體讀取權限的人可看到 HTTP 代理伺服器的位址、連接埠、使用者名稱與不經代理的主機清單(117625);看到 Jenkins 主目錄裡的檔名、大小與修改時間,有工作區權限的人還能看到同一台代理主機上其他工作的名稱(117626)。

修法是升級。公告只替 3 個 XSS 列了緩解方式:每週版 2.539、LTS 2.541.1 起,若另行啟用強制的內容安全政策(CSP,限制網頁能跑哪些腳本的瀏覽器規則;預設沒開),可減輕已知影響,但不等於修好。新版另加了幾道型別檢查,公告也列出相容出問題時可關掉個別檢查的 Java 啟動設定,例如關掉新增型別權限機制的 hudson.util.XStream2.SUPPRESS_TYPE_PERMISSION。本站的讀法:這些開關會拿掉一部分新防護,確定是相容問題才用,排除後就該恢復。

誰發現的?公告致謝欄列出,13 個由 Anthropic 的開源安全計畫(Anthropic OSS program)回報,部分另有人獨立發現;2 個來自歐盟執委會贊助的 Jenkins 漏洞獎勵計畫。

原文 Jenkins Security Advisory 2026-10-28,15 個漏洞的編號、嚴重度、成立條件、受影響與修補版本、緩解方式、系統屬性與致謝名單取自此頁,引句為本站譯; Jenkins 每週版更新紀錄與 LTS 更新紀錄,2.588 與 2.580.2 的發布日(2026-10-28)取自此處; CISA 的 KEV JSON 資料檔(2026.10.28 版),本次編號未收錄、過去 6 筆 Jenkins 相關條目與加入日期取自此處。