誰動了我的DevOps:DevOps風險測繪
一 DevOps概述
01 什么是DevOps?
DevOps 是 Development 和 Operations 組合的縮寫詞,它指的是一種協作方法,使企業的應用程序開發團隊(Development team)和 IT 運營團隊(Operations team)能夠更好地溝通工作,DevOps的概念有助于使技術項目與業務需求保持一致,從而提高企業整體的工作效率。
02 DevOps的價值
DevOps通過自動化“軟件交付”和“架構變更”的流程,使得構建、測試、發布軟件能夠更加快捷、頻繁和可靠[2]。DevOps市場價值更是潛力無限,據GMI(GlobalMarket Insights)的調查報告顯示(如圖一):“DevOps市場規模在2021 年已超過70 億美元,并有望在2022 年至2028 年間,以超過20% 的復合年增長率增長。”由此可見,DevOps全球化、普遍化的趨勢已不可阻擋,企業大規模敏捷開發轉型將成為主流旋律。

圖1 DevOps市場的價值
03 DevOps常用工具
那么DevOps流程具體會涉及到哪些工具呢?通過分析2021年多個平臺公布的DevOps工具的排名[4][5][6][7],為大家總結了18款常用的DevOps工具。
項目管理和協作工具:Microsoftteams, Slack, JIRA
代碼管理工具:BitBucket,GitLab, Github
持續集成工具:Jenkins
質量測試工具:Junit,Selenium,DATADOG
監控管理工具:NewRelic, Grafana
持續部署工具:OctopusDeploy, Spinnaker
配置管理工具:Chef,Ansible, Puppet,Terraform
結合圖2,可以更清晰的了解到DevOps整個生命周期流程和各個工具在其中所充當的角色。

圖2 DevOps流程示意圖
二 DevOps潛在的風險
DevOps被越來越多企業接納的同時,DevOps工具的風險也越發突出。我們通過獲取了部分常用DevOps工具的指紋,利用網絡搜索引擎對這些工具在國內的暴露量進行了調研。得到的具體暴露數據如表1所示:

表1 DevOps國內暴露資產數
由此可見,DevOps工具暴露量相當之多,其中Jenkins和GitLab資產的暴露量尤為突出,那么它們背后潛在的風險又究竟是什么情況?下面具體對GitLab和Jenkins兩個資產進行了資產風險測繪的研究。
三 GitLab資產風險風險
01 GitLab簡介
GitLab是一個結合了在單個應用程序中開發、保護和操作軟件能力的DevOps平臺。GitLab最初是作為源代碼管理解決方案在軟件開發團隊內進行協作,后來演變為涵蓋整個DevOps 生命周期的集成解決方案,其注冊用戶已超過3000萬人次 [8]
02 GitLab國內資產暴露情況
根據網絡測繪數據,我們對國內GitLab資產暴露情況進行了統計,共計查詢到9035個暴露的資產,下面將從地區分布、暴露端口兩個維度分別進行介紹。
如圖3所示,國內暴露的GitLab資產中約73.6%來源于北京市、上海市、廣東省和浙江省這些省份和城市,其中北京市穩居第一,暴露資產數達到2566個。

圖3 GitLab國內暴露資產分布圖(地區維度)
從圖4可見,國內暴露的GitLab資產使用的端口主要為443、8888、8090、8081和80,共占總數的69.5%,其中443端口暴露量最多,共計3201個,占比35.4%。

圖4 GitLab國內暴露資產分布圖(端口維度)
03 GitLab國內資產漏洞分析
GitLab會在官網不定期公布自己存在的CVE漏洞。我們梳理了2020到2021年 CVSSVersion3.x 評分高于或等于7分的GitLab漏洞,共計有86個,且其中9分以上漏洞多達20個,頻率較多的漏洞類型有:DDoS、SSRF、未授權、信息泄露等。
由此可見GitLab資產存在較大的安全隱患。下面,以兩個漏洞CVE-2021-22205(RCE漏洞)和CVE-2021-22214(SSRF漏洞)為例進行分析。
CVE-2021-22205漏洞
GitLab CVE-2021-22205屬于RCE類型漏洞,其影響版本范圍包括GitLab社區版和企業版:11.9.0≤ 版本號≤ 13.8.8 ; 13.9.0 ≤ 版本號≤ 13.9.6 ; 13.10.0 ≤ 版本號≤ 13.10.3。這個漏洞源于GitLab沒有正確驗證傳遞給文件解析器的圖像文件,這個疏忽導致了遠程命令執行漏洞的可能性。
如圖6所示,我們共發現了1051個暴露的GitLab資產存在CVE-2021-22205漏洞,約占暴露資產總數的11.6%,CVE-2021-22205屬于遠程命令執行漏洞,其在CVSS Version3.x中評分高達9.8,可見其危害程度之大。
CVE-2021-22214漏洞
GitLab CVE-2021-22214屬于SSRF類型漏洞,其影響版本范圍包括GitLab社區版和企業版:
10.5 ≤ 版本號≤ 13.10.5 ; 13.11 ≤ 版本號≤ 13.11.5 ; 13.12 ≤ 版本號≤ 13.12.2。當啟用對內部網絡的 webhook 請求時,請求偽造漏洞可能被未經身份驗證的攻擊者利用(包括注冊受限的GitLab)。
如圖6所示,我們共發現了841個暴露的GitLab資產存在CVE-2021-22214漏洞,約占暴露資產總數的9.3%,CVE-2021-22214在CVSSVersion3.x評分中達到8.6分,其危害程度也不可小覷。CVE-2021-22214漏洞本地環境測試情況見圖5。

圖5 指定域名被目標訪問(本地環境測試)

圖6 暴露的GitLab中存在CVE-2021-22205,CVE-2021-22214的數量
04 GitLab的安全建議
從以上的分析我們可以看到,國內GitLab資產漏洞層出不窮。如利用CVE-2021-22205,不法分子可以輕松拿到reverse shell,從而實現任意代碼執行,輕松地盜取個人和企業的隱私信息。這里建議大家:
1.請盡快將GitLab資產升級到最新版本
2.在使用GitLab時,盡量監聽在內網IP地址,避免直接暴露在互聯網中
3.根據官方提供的緩解措施進行臨時緩解,GitLab相關的漏洞緩解措施可參考官方網址:https://gitlab.com/gitlab-org/cves
四 Jenkins資產風險測繪
01 Jenkins簡介
Jenkins是一個獨立的開源自動化服務器,是一款提供友好操作界面的持續集成(CI)的工具,可用于自動化各種任務,如構建,測試和部署軟件等。在cprime公布的CI集成工具排名中[9],Jenkins排名第一,它也被多個機構評定為DevOps流程中最受歡迎的持續集成工具。
02 Jenkins國內資產暴露情況
根據網絡測繪數據,我們對國內Jenkins資產暴露情況進行了統計,共計查詢到16226個暴露的資產,且我們發現部分暴露的Jenkins資產可以直接跳過登錄,進入到操作界面,這樣的危險不言而喻,示例如下圖7,8所示。

圖7 Jenkins暴露示例1

圖8 Jenkins暴露示例2
此外我們將從地區分布、暴露端口、版本三個維度分別對Jenkins國內資產暴露情況進行介紹。
如圖9所示,國內暴露的Jenkins資產中約77%來源于北京市、廣東省、上海市和浙江省這些一線省份和城市,其中北京市穩居第一,暴露資產數達到4253個。

圖9 Jenkins國內暴露資產分布圖(地區維度)
從圖10可見,國內暴露的Jenkins資產使用的端口主要為8080、8081、8888、443、9090,共占總數的84%,其中8080端口最多,存在9523個,占比58.7%。

圖10 Jenkins國內暴露資產分布圖(端口維度)
通過特定的指紋信息,我們也獲取到了國內暴露的Jenkins資產的版本號。經過匹配,可以獲取到10334個資產的版本號信息,大約占總數的63.7%,具體版本號分布如圖11所示。

圖11 Jenkins國內暴露資產分布圖(版本號)
03 Jenkins國內資產漏洞分析
與GitLab類似,我們梳理了 CVSSVersion3.x 評分大于或等于7分的Jenkins漏洞。在包括Jenkins插件漏洞信息中,共計發現了96個高危(評分大于或等于7)的CVE,頻率較多的漏洞類型包括:XXE,CSRF,SSRF,未授權,信息泄露,RCE等。
為了進一步分析主版本漏洞對Jenkins資產的影響,在排除了Jenkins插件漏洞信息之后,共計篩選出了18個高危的CVE,依次是:CVE-2021-21685,CVE-2021-21686,CVE-2021-21687,CVE-2021-21688,CVE-2021-21688,CVE-2021-21690,CVE-2021-21691,CVE-2021-21692,CVE-2021-21693,CVE-2021-21694,CVE-2021-21695,CVE-2021-21696,CVE-2021-21697,CVE-2021-21671,CVE-2021-21604,CVE-2021-21605,CVE-2020-2160,CVE-2020-2099。
為了進一步查看脆弱性暴露情況,我們對暴露的Jenkins資產進行了靜態匹配,如下圖12所示:

圖12 Jenkins暴露資產脆弱性
從圖中可以看到,暴露資產中CVE-2021-21685到CVE-2021-21697的數量多達9582個,而我們可獲取到的版本號的總量也才10334個。為了進一步分析影響面,制作了以下表格(如表2所示),我們可以看到多半的CVE影響面達到了驚人的92.7%,可見暴露的Jenkins資產,其脆弱性風險乃是極其之大,Jenkins存在著嚴重的安全問題。

表2 Jenkins暴露資產脆弱性影響面
04 Jenkins安全建議
經過上文的分析,我們可以感受到國內Jenkins資產暴露數量不少,且暴露的資產中普遍存在嚴重的脆弱性問題,其中有13個CVE影響面高達92.7%,且10個CVE評分超過9分(嚴重高危)。這里溫馨建議:
1.請盡快將Jenkins資產升級到最新版本
2.在使用Jenkins時,盡量將相關端口監聽在內網IP地址,避免直接暴露在互聯網中
3.根據官方提供的緩解措施進行臨時緩解,Jenkins相關的漏洞緩解措施可參考官方網址: https://www.jenkins.io/security/advisory/
五 總結
隨著DevOps敏捷開發流程被越來越多的人和機構認可,DevOps全球化和普及化將成為發展趨勢。但DevOps同時也帶來了很多的安全風險,通過上文的分析,我們可以看見GitLab和Jenkins漏洞百出,脆弱性問題不容小視。當大家享受DevOps敏捷化帶來紅利的同時,或許你的DevOps工具早已被不法分子所利用。上文給出了部分DevOps工具防范的方法,但對于云上風險來說,這僅僅是冰山一角,無論個人還是企業,我們都應該引起重視,加以防范,一同維護網絡安全。