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