實戰 | 構建數字時代的開源軟件安全治理體系
當前越來越多的開源軟件被使用於軟件程序中,極大降低研發成本,提高生產效率,讓企業更專注於業務需求的實現。但隨着開源軟件的不斷增多,軟件供應鏈也隨之變得更加複雜。中國銀聯技術開發中心(以下簡稱技術開發中心)經過探索實踐,建設形成開源軟件全生命週期安全治理體系,爲企業的數字化高質量發展保駕護航。
1.漏洞風險
奇安信代碼安全實驗室在《2022年中國軟件供應鏈安全分析報告》中指出,開源軟件的源代碼安全缺陷密度是9.85個/千行,高危安全缺陷密度爲0.65個/千行。開源軟件的安全狀況仍然較爲嚴峻。部分作爲底層基礎的開源軟件,一旦出現問題,甚至可能是災難性的。2021年的Log4j漏洞波及範圍之廣,後果之嚴重,堪稱“核彈級”,影響性至今都未徹底消除。
2.合規風險
開源許可協議是開源社區爲了維護開源軟件作者和貢獻者的合法權利,而定義的一組條款和條件,其他人必須在遵循這些條款和條件的基礎上,使用、修改或共享開源軟件的源代碼、設計和文檔,這也是開源軟件的生命活力源泉。企業如未按許可協議的要求使用開源軟件,可能會帶來知識產權方面的法律風險。
3.運營風險
開源軟件運營風險一般包括老舊與多版本開源軟件的使用、開源軟件與軟件資產關係的動態維護。很多老舊開源軟件的開發者都已經不再維護或棄用,即使發現安全漏洞也不會有相應的更新通知或修復版本,如Struts1等,存在巨大的安全隱患。對於多版本,可能一個開源軟件從1.x到N.x都有被使用,收斂度較差,較爲混亂。開源軟件最終是被應用到具體的企業系統資產中的,當出現開源軟件漏洞時,用戶的迫切訴求是要搞清楚哪些資產受到影響,常常需要消耗大量人力去排查統計,效率低下,且準確性、全面性無法保證。
技術開發中心在開展開源軟件安全治理過程中,始終堅持問題導向,圍繞面臨的風險,分別從管理機制、技術支撐兩方面發力,經過探索實踐和持續優化,形成覆蓋開源軟件全生命週期安全治理能力(如圖所示)。
1.管理機制
技術開發中心制定一系列規範要求,涉及公共基礎軟件管控工作、開源軟件評估方法等。總體上,堅持自主可控與開放合作的技術發展理念,在滿足業務功能、技術指標要求的前提下,優先使用自研產品,如無則優先採用業界領先、驗證穩定、使用廣泛、成本經濟、有成熟社區或廠商支持的技術和軟件。
在具體工作開展中,明確各方職責和評估方法,遵循“誰引入,誰負責”“誰使用,誰負責”基本原則開展相關工作。組織機制上設立管理方、評估方、引入方。管理方統籌規劃治理流程、管理標準、推動開展治理工作。評估方爲技術和法務等專家組成的虛擬團隊,依據評估模型負責評估工作。使用方一般爲項目主辦方,負責發起評估和登記、完成使用中的漏洞處理和其他事務。
在引入階段,使用方按照管理要求在線提交相關資料,從指定的可信源獲取相應的開源軟件,進入類似沙箱的前置倉庫,以便各類工具檢測。評估方面,爲在引入開源軟件前評估方儘量充分科學評估,提前發現潛在的安全合規隱患,設計製作開源軟件評分簡化模型,共計2大類8小項的評估點,分別從基本評估要素、技術評估展開,評估細項包括許可證類型、社區活躍度、安全性、軟件成熟度、高可用性、兼容性、易用性、支持形式,並根據不同評估項重要程度配以相應權重。評估結果最終分爲三類:允許引入,優先使用;允許引入,謹慎使用;不允許引入。針對每類採取不同的要求措施。
在使用階段,以軟件研發生命週期爲基礎,在研發測試環境嵌入開源軟件檢測功能,相應檢測結果,包括安全漏洞、許可協議、隱私合規等問題在線確認並修復,作爲最終成功上線的條件之一。
在退庫階段,以降低對業務連續性的影響爲前提,安全地開展相關工作。在開源軟件突發風險應急時,首先使用網絡安全設備、應用運行防護工具等做安全緩衝,減輕短時集中升級發版壓力,避免引起不可預期的次生風險,其次按照應用系統攻擊面大小(如內外網、服務對象、業務規模等),有序升級。在日常回顧時,組織專家團隊,從開源軟件使用情況、歷史漏洞情況、是否EOL等進行綜合評估,會同研發人員制定年度退庫計劃,平滑推動應用升級,並將退庫軟件加入黑灰名單,清理存量,管住增量。
2.技術支撐
技術開發中心打造“1+2+3”整體技術解決方案,即:1個公共軟件庫,2個生命週期(開源軟件生命週期、軟件研發生命週期),3個核心平臺(公共軟件庫管理平臺、研發平臺、安全平臺)。
內部使用同一個公共軟件庫,收納三類軟件資產:開源、自研、廠商,避免各部門重複建設的同時,也實現了資源的統一管理。建立公共軟件庫管理平臺實現對開源軟件生命週期管理,包括引入、檢測、審覈、使用、查詢、清退、維護等,兼容多種倉庫源,支持多種編程語言。
研發平臺對軟件研發生命週期各階段活動進行標準化集中管理,藉助平臺功能,在不同環節加入開源軟件檢測及卡控功能。在研發階段,各應用系統實行標準化編譯,使用統一的代碼庫、開源軟件庫,確保來源合法性、唯一性。流水線運行過程中,自動觸發開源軟件檢測,發現的問題必須確認或修復後方可發版。在上線運營階段,使用主機防護、應用運行防護技術等,實時監測管理使用的開源軟件情況。
安全平臺主要提供開源軟件檢測分析能力及軟件資產使用開源軟件關係臺賬動態管理。目前已具備安全漏洞、許可證、移動應用隱私等主要檢測能力,減少管理盲區。通過建立開源軟件漏洞情報庫,綜合包括NVD、CNVD、CNNVD、Snyk、安全輿情等多種信息源,進行抽取、歸類、整合,爲檢測提供豐富彈藥,進一步提高檢測的覆蓋度、準確度。通過流水線檢測,自動生成並維護系統模塊級的開源軟件使用臺賬。平臺也對公共軟件庫進行週期性掃描,檢查包括開源軟件源代碼是否已入庫、是否有新增的安全漏洞和許可證協議、是否有清退但被再次引入等內容。
在持續的安全治理工作中,技術開發中心累計清退存量開源軟件已達3000餘個,完成4萬餘次開源軟件版本升級,消除潛在安全漏洞隱患超過10萬個。動態維護的開源軟件使用資產臺賬,在風險應急時發揮巨大作用,可協助相關人員秒級定位使用的系統,使得掌握並管理“家底”的工作開展事半功倍。
由於開源軟件的特性,上傳軟件的可能是個人,也可能是別有用心的組織,甚至是可能被攻擊者從源頭“投毒”的不知情者,現有的CVE/CPE體系以及NVD等漏洞庫存在很大的侷限,因爲處置前提是有漏洞被上報收錄,企業面對這類惡意攻擊,實則很難從容應對。
現代軟件開發構建在開源生態基礎之上,中國銀聯將持續完善優化開源軟件安全治理體系,攜手各方共同努力,加強交流合作與信息共享,助力產業高質量發展。