開源世界的"老黃牛"Jenkins又出事了。這次不是核心系統,而是七款常用插件集體淪陷——從憑證管理到報表展示,攻擊面覆蓋了整個持續集成(CI/CD)流水線。更麻煩的是,其中幾個漏洞的利用門檻低到離譜:只需要"能看一眼"的權限,就能往你的服務器里寫文件、種后門。
一張圖看懂攻擊路徑
![]()
先把這次漏洞的全貌攤開來看。七款插件、三種嚴重程度,串成一條完整的入侵鏈條:
起點是憑證綁定插件(Credentials Binding Plugin)的路徑遍歷漏洞(CVE-2026-42520)。這個插件的作用是把密碼、密鑰等敏感信息注入到構建任務里,幾乎每個Jenkins環境都在用。問題出在719.v80e905ef14eb_及更早版本——它解壓壓縮文件憑證時完全不檢查路徑,攻擊者可以把文件寫到服務器任意位置。
假設你的Jenkins允許普通用戶配置構建任務,且任務跑在主節點(built-in node)上,那攻擊者只需要上傳一個精心構造的壓縮包,就能在系統目錄里塞入惡意文件。下一步通常是建立持久化后門,或者干脆執行遠程代碼。
鏈條的中段是跨站腳本攻擊(XSS)的兩個入口。GitHub插件(CVE-2026-42523)在驗證"GitHub hook trigger for GITScm polling"功能時,直接把當前任務的URL塞進頁面,沒做轉義處理。1.46.0及更早版本都有這個問題。攻擊者只要有Overall/Read權限——也就是能登錄進來看一眼的級別——就能往頁面里注入惡意腳本。
另一個XSS藏在HTML發布插件(CVE-2026-42524)的遺留封裝文件里。427及更早版本沒對任務名稱和URL做轉義,有Item/Configure權限的攻擊者可以在報表頁面埋雷,等管理員點開時觸發。
鏈條的末端還有四個中等嚴重度的漏洞,負責擴大戰果:腳本安全插件的接口權限缺失讓低權限用戶能枚舉所有待審批和已批準的類路徑;矩陣授權策略插件的反序列化缺陷允許實例化任意類型;GitHub分支源插件讓攻擊者能用自己指定的憑證做未授權連接測試;微軟Entra ID插件的開放重定向漏洞則可以用來釣魚收割憑證。
七個漏洞全部通過Jenkins漏洞賞金計劃主動上報,贊助方是歐盟委員會。這個細節值得玩味——一個美國開源項目的主要安全資金來源,居然是歐洲政府機構。
為什么"低權限"成了致命傷
這次漏洞集最刺痛行業神經的,是權限模型的全面潰敗。
傳統認知里,CI/CD系統的核心風險集中在"誰能部署到生產環境"。但Jenkins的插件生態把攻擊面撕成了碎片:Overall/Read、Item/Configure、Job/Configure……這些細粒度權限本意是最小權限原則,結果成了漏洞的遮羞布——每個插件各自實現一遍權限檢查,總有漏網之魚。
憑證綁定插件的問題尤其典型。它的設計假設是"能配置憑證的人值得信任",但沒考慮"能配置構建任務的人"和"能控制任務運行節點的人"可能是分離的。當低權限用戶被允許在主節點上跑任務時,整個隔離模型就崩塌了。
這其實是Jenkins架構的歷史包袱。主節點(master)和代理節點(agent)的區分本意是分散風險,但大量中小團隊為了省事,把所有任務堆在主節點上跑。插件開發者默認"主節點是可信環境",結果路徑遍歷漏洞直接拿到了系統級寫權限。
兩個XSS漏洞則暴露了另一個盲區:CI/CD系統的"只讀"用戶。開發團隊、測試團隊、甚至外部審計,常常需要登錄Jenkins看構建狀態、下載報表。這些賬號的權限被嚴格限制在"看",但XSS讓"看"變成了"執行"——管理員的瀏覽器里跑攻擊者的代碼,會話劫持、憑證竊取、內網探測,一氣呵成。
「管理員必須緊急更新這些插件,以保護他們的持續集成和持續部署流水線免受潛在的遠程代碼執行和會話劫持風險。」——Jenkins項目安全公告
補丁之外:CSP才是隱形防線
公告里埋了一條容易被忽略的補救措施:在Jenkins長期支持版(LTS)2.541.1及更新版本上啟用內容安全策略(CSP)保護,可以在補丁部署期間提供額外的XSS防御層。
這相當于承認了一個尷尬的事實:插件漏洞的修復周期可能很長,而CSP是唯一能"先止血"的通用方案。CSP通過限制頁面能加載的腳本來源,即使XSS payload被注入也無法執行。
但CSP在Jenkins生態里的落地一直磕磕絆絆。大量插件依賴內聯腳本和動態生成的JavaScript,嚴格的CSP策略會直接破壞功能。2.541.1版本把CSP做成了可配置選項,而不是強制開啟,本身就是一種妥協。
這里有個反直覺的觀察:越老的Jenkins環境反而越"安全"——如果它從來沒升級過,可能根本沒裝這些有漏洞的插件版本。但這也意味著它錯過了所有安全補丁,只是這次恰好不在打擊范圍內。這種"安全"純屬運氣,隨時可能反轉。
賞金計劃背后的治理困境
歐盟委員會贊助Jenkins漏洞賞金計劃,這事本身就值得拆解。
Jenkins作為開源基礎設施,支撐著全球數百萬條軟件流水線,但它的商業歸屬一直模糊。CloudBees提供企業版支持,但核心項目由社區維護。安全投入沒有穩定的商業回報,賞金計劃成了依賴外部資金續命的模式。
這次七個漏洞"主動上報"的描述,暗示了賞金計劃的運轉效率。但"主動"也意味著漏洞在被修復前,可能已經在黑產圈子里流通了一段時間。公告沒提具體的時間線,也沒提是否有在野利用——這種信息缺位本身,就是開源安全治理的盲區。
對比商業軟件的安全公告,Jenkins的披露風格相當克制:給出版本號、漏洞類型、CV編號,但不給技術細節、不給利用代碼、不給影響范圍評估。這對防御者來說是個麻煩——你得自己判斷"我們的用法會不會觸發這個漏洞"。
流水線安全的終局猜想
這次事件不會殺死Jenkins,但會加速一個已經發生的趨勢:團隊開始把CI/CD的"執行"和"編排"拆開。
GitHub Actions、GitLab CI、Tekton這些替代方案,本質上是用更嚴格的沙箱和更短的憑證生命周期,來規避Jenkins架構里的權限纏繞。它們不是沒有漏洞,但攻擊者能拿到的通常是一個容器的臨時權限,而不是主節點的系統級訪問。
留在Jenkins生態里的團隊,正在分化成兩類:一類是"能用就行"的,繼續在主節點上跑一切,祈禱下一個漏洞不要砸到自己;另一類是"被迫專業"的,投入大量工程精力做節點隔離、權限審計、插件白名單。
后者的成本經常被低估。一個中等規模的Jenkins環境,可能有幾十款插件來自不同維護者,每季度的安全公告都需要評估、測試、回滾預案。這本質上是在用工程團隊的工時,補貼開源項目的安全債務。
歐盟委員會的賞金贊助是一種外部輸血,但解決不了結構性問題。當CI/CD成為軟件供應鏈的核心樞紐,它的安全治理卻仍然是"社區自治+企業自用"的散裝模式。這次七個插件漏洞的集中爆發,不過是這種模式的一次常規輸出。
至于那些還沒打補丁的管理員,他們現在的處境有點像在高速公路邊換輪胎——知道危險,但停下來更危險,因為整個開發流程卡在這里。也許最好的祝福是:希望攻擊者也在用Jenkins,所以同樣沒空來打你。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.