開源組件治理的實踐與思考
證券行業開源治理工作的啟動已經迫在眉睫。從外部環境來看,從國家、行業到監管機構,均有了明確發文、要求及建議,并出臺了網絡安全法、行業要求、專項通知等具體政策,不乏企業因為使用有漏洞的開源組件而受到相關監管機構通報。從內部環境來看,證券機構為深化數字化轉型,IT部門規模在不斷擴編,而借助開源技術的使用會大大加速這一過程。開源技術在帶來便利的同時,背后也隱藏著很多風險,甚至會給證券機構穩定經營造成嚴重損失。基于以上背景,證券機構紛紛開展了開源治理的探索,海通證券也在開源治理中深入實踐。開源治理范疇很大,本文將重點介紹海通證券在開源治理中的組件治理實踐并提出進一步的思考展望,供同行參考。
開源組件治理的思路
在金融系統中,當分布式架構、云端部署日益成為主流后,系統模塊化、組件化趨勢明顯,系統軟件中開源組件的使用復雜且相互依賴。開源組件治理是整個開源治理活動中非常重要的一部分。組件多層、互相依賴,往往很難厘清關系,開源組件治理工作充滿嚴峻挑戰。
如何對這些開源組件進行治理呢?我司對開源組件治理體現在4方面,分別是開源團隊設立、流程及制度設計、開源引入引出、開源檢測及修復。
1.開源團隊設立。開源治理涉及多個職能部門,需要組織層面自上而下的設計與支持。我司組建了虛擬團隊,橫跨研發管理、技術平臺、安全等團隊,由分管領導擔任組長,牽頭整個開源治理工作。團隊的設立,為海通后續開源治理中的工具建設、引入引出、威脅識別、威脅處置等活動起到了關鍵支撐作用。
2.流程及制度設計。設計開源治理的流程及制度,用以貫通相關團隊職能并保障具體治理工作落地。這些流程體現在開源組件完整的生命周期過程中,包含組件引入引出流程、組件使用流程、組件檢測流程、組件安全應急處置等。海通證券有完整的軟件研發管理規范,研發管理規范中包含開源治理的相關條項,對開源使用意識、開源使用具體操作、開源支持、開源檢測等具體實踐進行指導及要求,確保開源技術的合規使用及風險可控。
3.開源組件管理工具。開源組件引入引出是指對開源組件的使用進行引入審核、無效退出的管理事務,是開源組件生命周期中的入口及出口。
開源組件的有效管理需要依賴流程、制度來保障,而專業化的開源組件管理工具在治理工作中也能發揮很大支持作用。我司建設了專業化的開源組件管理工具,支持范圍如下:一是支持多種開源組件代碼類型,例如Java、C/C++、Golang、Python、JavaScript等組件語言類型;二是支持基本的引入引出審批流程,對引入的包在倉庫中實現統一依賴管理,對引出的包標記黑名單實現屏蔽效果;三是實現統一包依賴管理,對包使用方式進行統一管理,支持通用的Maven、Gradle、NPM、Conan等包使用方式。
4.開源組件檢測及修復。自動化的安全檢測及修復是開源組件治理的核心活動。安全檢測內容包含兩部分:一是組件的漏洞檢測,例如CVE、CNVD、CNNVD等來源的漏洞;二是組件的開源協議檢測,例如LGPL這類傳染性的高危協議。開源組件的修復活動為:工具平臺從威脅情報接收到漏洞信息后,結合CMDB及應用資產清單評估漏洞影響面并自動計算出待修復系統清單,將修復流程直接推送干系方,實現統一推送、統一跟蹤、統一修復。
開源組件治理實踐分析
與銀行業相比,證券行業的開源實踐起步相對較晚,我司在探索常規治理之外,經過內部探索與思考,形成了自己的最佳實踐,具體體現在以下幾方面。
1.開源組件定制與封裝。通常開源組件漏洞的呈現形式相對固定,體現在諸如通訊加密、多因素認證、SQL注入、XSS攻擊、文件上傳等。除加強系統漏洞掃描,加強互聯網端WAF防御等,我司通過對常用組件分類封裝、定制加強開源組件安全,主要體現在框架組件安全、技術組件安全、功能組件安全3方面。框架組件安全體現在研發框架級的整體安全,例如海通燈塔開發框架的ORM就進行了定制,在執行具體SQL之前自動檢查SQL安全規范清單,如觸發安全規范,則拒絕執行危險SQL;技術組件安全體現在多種類型組件上,包含加密方式、密鑰長度、復雜度要求、連接類組件、安全Fastjson組件等;功能組件體現具體通用功能使用上,實現使用即默認安全的效果,包含文件安全上傳、短信發送防爆破、日志打印組件自帶脫敏功能等,例如文件上傳功能缺省屬性含有文件上傳大小限制、上傳頻率限制,白名單化允許上傳的文件類型,黑名單化高危文件類型等。
2.組件參與攻防,出廠即安全。在治理階段才發現組件的安全問題會帶來額外的修復成本,因此盡早對組件進行檢測尤為重要。我司對組件的安全檢測時機提前到開發框架階段,對燈塔開發框架的各種組件開展例行模擬攻擊,以真實攻擊保障相應組件安全。模擬攻擊包含常規的SQL注入、定向木馬文件上傳、密碼爆破、反序列化攻擊、認證繞過等攻擊手段。通過安全團隊具體攻擊的組件打上相應安全能力標簽,實現出廠即安全,賦能業務研發團隊。
3.云梯平臺助力自動檢測。開源組件的威脅情報變化頻繁且時效很重要,人工檢測及定時檢測機制均無法保障開源治理的及時性及有效性。我司云梯平臺是一種DevOps工具平臺,通過在云梯平臺上增加相應安全檢測節點,將開源治理指標作為一種質量門禁指標,融入日常研發工作流程中。借助云梯平臺可以實現以下目標:一是可以對日常版本發布的二進制包進行漏洞檢測;二是對依賴倉庫中的組件進行漏洞檢測;三是對具有傳染性等高危開源協議組件進行檢測并預警。

圖1 云梯平臺DevOps全生命周期管理圖
思考與展望
開源治理范疇很大,開源組件的治理只是其中一小塊,我司在治理實踐過程中不斷發現問題、優化問題。在取得一定成效的同時,也有了進一步思考與展望,具體體現在以下幾方面。
一是開源治理過程中的流程、數據還需進一步貫通。在不造成研發效能過多下降的前提下,進一步探索開源治理的多環節流程、數據統一歸集,實現開源資產視圖全景可視化、風險指標可視化、影響面可視化等。
二是開源治理的安全處置流程還需進一步優化。一旦發現開源問題,需要有更有效的流程、規范機制來拉通“一部兩中心”(金融科技部、軟件開發中心、數據中心),實現多中心聯動并行處置。首先不斷優化應用架構,減少暴露面;其次通過WAF等屏蔽通用攻擊手法,過濾攻擊類請求;第三通過建設內生開源安全,從源頭上避免全員參與開源治理工作,由專業安全團隊賦能業務安全研發。
三是開源治理的對象還需進一步擴大。開源組件、開源工具、開源中間件、開源軟件等均可能造成開源安全問題。需要分類分級并設計頂層架構,自上而下形成開源治理體系,逐步完善相應的開源治理工作。