開源軟件安全治理的抓手:資產(chǎn)管理
開源軟件具有免費(fèi)、繁榮、易獲取等優(yōu)點(diǎn),因此被各行業(yè)廣泛引入和使用,尤其是伴隨著“大智移云鏈”等新興技術(shù)的蓬勃發(fā)展,開源軟件的支撐作用越來越明顯。但是開源軟件又具有開放、自由、共享等特性,使其容易被利用作為攻擊點(diǎn)。通過利用開源軟件漏洞,甚至偽裝成開源貢獻(xiàn)者預(yù)埋漏洞,都是被驗(yàn)證可行的攻擊形式。各行業(yè)在享受開源紅利的同時(shí),也逐步認(rèn)識到開源軟件的潛在風(fēng)險(xiǎn)。監(jiān)管部門、企業(yè)、機(jī)構(gòu)等都開始重視并推動(dòng)開源軟件安全治理工作。
開源軟件是一種典型的信息資產(chǎn),可以用信息資產(chǎn)管理理論來開展安全治理。筆者在工作過程中,綜合采取梳理資產(chǎn)、評估和處置風(fēng)險(xiǎn)、持續(xù)改進(jìn)等思路,逐漸打開工作局面。下面從管理、技術(shù)、實(shí)施三個(gè)方面談一下體會(huì)。
管理方面
(1) 摸清家底
資產(chǎn)管理的第一步是建立資產(chǎn)清單。所以,開源軟件安全治理的第一步就是摸清家底,解決開源軟件“有哪些”、“誰在用”的問題。我們通過搭建私服倉庫對開源軟件進(jìn)行統(tǒng)一管理,借助構(gòu)建依賴關(guān)系自動(dòng)化分析能力,自動(dòng)獲取應(yīng)用系統(tǒng)和開源軟件之間依賴關(guān)系,掌握產(chǎn)品中應(yīng)用了哪些開源軟件,以及其類型、協(xié)議、來源等信息,從而形成了全量使用關(guān)系視圖。
(2) 明確職責(zé)
資產(chǎn)需要有管理責(zé)任人。通過發(fā)布制度,我們按照“誰引入,誰負(fù)責(zé),誰支持”的原則明確了開源軟件的責(zé)任人。對于開源軟件新出現(xiàn)的漏洞,由安全部門負(fù)責(zé)監(jiān)測告警,由相關(guān)責(zé)任人負(fù)責(zé)漏洞處置。
(3) 理順流程
為做好安全管理工作,建立了覆蓋開源軟件全生命周期的閉環(huán)安全管控工作流程,包括:在引入環(huán)節(jié)建立了安全審核流程;在使用環(huán)節(jié)建立了漏洞監(jiān)測、漏洞處置、例外申請流程;在退出環(huán)節(jié)建立了安全退出流程等。
(4) 制定標(biāo)準(zhǔn)
為滿足監(jiān)管和法律合規(guī)要求,企業(yè)應(yīng)建立一套明確的開源管理政策,指導(dǎo)開源軟件的安全、合規(guī)使用。在開源協(xié)議方面,建立可接受協(xié)議白名單。在安全方面,明確哪些風(fēng)險(xiǎn)我們能夠接受、哪些必須拒絕,制定切合實(shí)際的標(biāo)準(zhǔn)。我們將開源軟件分為開源基礎(chǔ)軟件、組件、工具三大類。對每一類制定不同的準(zhǔn)入標(biāo)準(zhǔn)和處置標(biāo)準(zhǔn),形成合理可行的差異化標(biāo)準(zhǔn)體系。例如,開源基礎(chǔ)軟件的使用范圍廣,升級影響大,其漏洞均需經(jīng)過風(fēng)險(xiǎn)評估后再?zèng)Q定是否修復(fù),且盡量統(tǒng)籌打包修復(fù);開源工具不上生產(chǎn),其漏洞風(fēng)險(xiǎn)相對較小,可適當(dāng)降低安全準(zhǔn)入門檻和漏洞處置時(shí)限要求。
(5) 度量評價(jià)
通過度量和評價(jià),可以不斷發(fā)現(xiàn)問題并持續(xù)改進(jìn),促進(jìn)開源軟件安全管理水平的提升。在治理過程中,我們通過設(shè)置過程性指標(biāo)和結(jié)果性指標(biāo)對治理工作進(jìn)行度量。過程性指標(biāo)主要用于度量和推進(jìn)存量治理工作,比如任務(wù)完成率;結(jié)果性指標(biāo)用于度量組織開源軟件的治理成效、安全水平、管理能力等。
技術(shù)方面
(11) 工具支撐
完善的工具是實(shí)施治理工作的基礎(chǔ)。開源倉庫管理、依賴關(guān)系管理、黑白名單管理、安全漏洞管理、流程管理、配置管理,都離不開工具的支撐。我們基于開源倉庫管理工具、開源軟件漏洞掃描工具,結(jié)合已有構(gòu)建、配置、項(xiàng)目管理工具,構(gòu)建了開源軟件的統(tǒng)一獲取渠道,建立了投產(chǎn)前安全檢查門禁,提供了限制使用、例外申請渠道,構(gòu)建了支撐開源軟件各項(xiàng)安全管理工作的工具體系。
(2) 威脅情報(bào)
及時(shí)全面的獲取開源軟件漏洞信息至關(guān)重要。可以基于開源軟件漏洞掃描工具,結(jié)合NVD、CNVD等漏洞庫信息,以及業(yè)界專業(yè)安全公司提供威脅情報(bào),形成多渠道的綜合情報(bào)來源。
(3) 處置方案
漏洞處置主要以升級版本為主,但有的漏洞可能尚未修復(fù),或者該開源軟件所有版本都有漏洞,因此需要對漏洞風(fēng)險(xiǎn)進(jìn)行綜合評估后,采取切實(shí)可行的處置方案。例如:對于經(jīng)評估不受漏洞影響的可不修復(fù),但必須限制該開源軟件的擴(kuò)散使用;對于暫無安全版本的,可升級到漏洞數(shù)量最少的穩(wěn)定版本,并采取相應(yīng)的風(fēng)險(xiǎn)緩釋措施等。
實(shí)施方面
(1) 存量治理
針對已梳理出的開源軟件清單,借助開源軟件漏洞掃描工具(也可手工在NVD、CNVD等漏洞庫查詢),可以明確待治理的存量漏洞清單。對于剛啟動(dòng)開源軟件安全治理的企業(yè),存量漏洞數(shù)量可能很大,因此,需要按照“風(fēng)險(xiǎn)優(yōu)先”的原則,統(tǒng)籌考慮應(yīng)用系統(tǒng)間的依賴關(guān)系,制定基礎(chǔ)平臺優(yōu)先治理、互聯(lián)網(wǎng)應(yīng)用重點(diǎn)治理等差異化的治理策略,分批次有序開展治理。我們在治理過程中采取了專項(xiàng)治理、自主治理和即時(shí)處置三種方式,專項(xiàng)治理主要針對組織內(nèi)風(fēng)險(xiǎn)程度高、影響范圍廣的漏洞進(jìn)行重點(diǎn)徹底治理。自主治理主要是發(fā)揮研發(fā)團(tuán)隊(duì)的能動(dòng)性,自主選擇范圍壓降漏洞組件數(shù)量。即時(shí)處置是針對監(jiān)管或情報(bào)部門發(fā)來的高危、重要漏洞立即開展處置。
(2) 外防輸入
為避免出現(xiàn)“邊治理、邊污染”的情況,需要對開源軟件的引入嚴(yán)格把關(guān)。一是建立開源軟件引入安全審查機(jī)制,只有通過安全審查的開源軟件采可以進(jìn)入組織的開源私服倉庫。二是堅(jiān)持以組織的開源私服倉庫作為開源軟件的唯一可信來源,應(yīng)用軟件集中構(gòu)建必須依賴私服倉庫,防范未經(jīng)授權(quán)的軟件被構(gòu)建入應(yīng)用系統(tǒng)中。三是持續(xù)更新開源軟件使用視圖,自動(dòng)識別所有開源軟件新增漏洞情況,及時(shí)向研發(fā)團(tuán)隊(duì)發(fā)出漏洞告警,推動(dòng)漏洞修復(fù)和補(bǔ)救措施快速落實(shí)。
(3) 內(nèi)防擴(kuò)散
隨著時(shí)間的推移以及漏洞庫的更新,私服倉庫中軟件的安全狀態(tài)會(huì)發(fā)生變化。在出現(xiàn)新的安全漏洞時(shí),要第一時(shí)間限制漏洞軟件的使用范圍,防范風(fēng)險(xiǎn)在組織內(nèi)蔓延。應(yīng)該建立開源軟件的“灰名單”以及應(yīng)用系統(tǒng)的“白名單”,對出現(xiàn)漏洞尚未完成治理的開源軟件和系統(tǒng)進(jìn)行標(biāo)記,嚴(yán)禁“白名單”外的系統(tǒng)使用“灰名單”內(nèi)的軟件。
開源軟件安全治理是一項(xiàng)長期持續(xù)復(fù)雜的系統(tǒng)工作,在治理實(shí)踐過程中,真正的銀彈并不存在,必須以扎實(shí)、細(xì)致的工作態(tài)度來推動(dòng)實(shí)施。從業(yè)者要真正認(rèn)識到開源軟件安全治理的長期性和艱巨性,正確處理好安全與發(fā)展的關(guān)系,建立高效實(shí)用的工作機(jī)制和符合企業(yè)技術(shù)棧的工具鏈,構(gòu)建制度+科技的全方位開源軟件管理安全防線。
【本文是51CTO專欄作者“安全牛”的原創(chuàng)文章,轉(zhuǎn)載請通過安全牛(微信公眾號id:gooann-sectv)獲取授權(quán)】