Part 1開發安全現狀及趨勢分析
當前部分企業已經充分認識到開發安全在整個軟體生命週期的重要性,國家也正從重點行業著手逐步要求企業完善軟體安全開發能力建設。這在宏觀政策、市場現狀、技術趨勢三個方面均有所體現:
宏觀政策:網路安全法第三十三條規定,建設關鍵資訊基礎設施應當確保其具有支援業務穩定、持續執行的效能,並保證安全技術措施同步規劃、同步建設、同步使用。這與應用開發安全理念完美契合,建設即合規。
市場現狀:2020年開發安全市場已經逐漸發展起來,這從企業自身對開發安全重要性的認識、企業客戶增加開發安全預算投入、安全廠商持續湧入三個維度即可見一斑。
技術趨勢:2018年DevSecOps理念在RSA大會被提出,受到國內企業追捧,DevSecOps作為安全領域中逐漸步入成熟期的技術體系,本質上繼承了軟體安全開發全生命週期安全關口左移的理念。
軟體安全開發全生命週期模型由來已久,開發安全理論體系已有成熟的方法論。國內外可參考知名模型框架包括微軟的SDL、OWASP的S-SDLC及CLASP、NIST SP800-64、BSIMM、SAMM。軟體安全開發的流程,各個階段需要進行的安全活動,以及持續運營後的評價體系,都可以從以上模型中得到借鑑參考。但是國內大多數企業在嘗試進行開發安全體系實踐過程中會面臨很多問題,導致難以落地。主要痛點包括:
1)軟體安全開發全生命週期流程複雜,與多數企業軟體開發流程的不相容導致很難有效管控;
2)企業缺少自動化工具與視覺化平臺支撐,面對迭代開發持續交付,提高效率是亟待解決的問題;
3)市場缺少安全開發專業人才,具體的開發安全工作對人員的安全能力有很強的依賴性,無法有效落地;
4)企業缺少對開發安全實踐評價及審計能力,導致相應安全活動無法確定實施效果及進行有效改進,最終演變成走形式。
所以,無論是管理層還是參與具體開發安全工作的團隊,都應從關乎可行性的維度,如何閉環、如何量化、如何不影響開發進度、如何自動化智慧化等方面考慮企業構建開發安全能力的思路,以期在實踐中獲得更好的落地效果。
Part 2開發安全能力建設思路要點
1、建設契合企業自身的開發安全體系
首先針對企業開發模式及安全現狀進行充分調研,在瞭解企業內相關資訊之後,評估現有安全實施過程、最新監管要求和業界最佳實踐的差距,聽取部門內相關人員對於安全指引的意見和建議,為安全開發體系的建設、修訂和落地工作提供依據。
軟體安全開發體系實施過程中所需要的知識庫需要針對企業自身情況進行梳理定製,這就要求我們尤其需要注意需求階段的不同業務需求,需要依據企業所在行業的監管合規要求及具有行業特點的業務場景進行風險分析和安全需求識別,透過威脅建模或者威脅列表的方式,將業務場景與安全需求進行對應,為後續工具部署執行做支撐。在設計階段,針對每一條安全需求提供安全、有效、可落地的設計方案,供開發人員在實現安全需求過程參考借鑑;在編碼階段,針對每一條安全需求對應給出真實安全編碼示例,並且對應匯出安全元件的使用說明;在測試階段,針對每一條安全需求對應給出安全測試用例。
在此基礎上,還需結合訪談調研的結果,以安全開發管控工具為核心定製契合企業的安全開發管控流程。其中需要明確:平臺角色設定與安全開發管控流程中所參與角色的關聯、哪些關鍵里程碑事件需要在平臺上進行評審、哪些安全活動需要在平臺上進行統一排程或者自動化工作,以最終確定快速可落地的軟體安全開發體系。
企業開發安全體系架構圖
2、建設自動化、視覺化的工具平臺體系
在快速迭代開發的過程中,盲目加入傳統安全工作必然會對軟體交付進度造成負面影響。為規避這種情況的發生,企業應以軟體開發流程為主線,建設自動化、視覺化的安全開發管控工具平臺,從開發的需求階段到上線後的運維階段,都可以基於豐富、專業的安全開發知識圖譜,對應用系統進行安全開發流程管控。透過智慧化安全需求設計分析、安全漏洞管理,以及定製化的安全需求、安全設計和安全測試文件生成,並基於CI/CD引擎整合從編碼到運維所需的第三方安全工具,構建Pipeline自動化工作流,以在保障開發安全的前提下實現最大程度的降本增效。
在安全開發管控平臺上統一管理軟體開發全生命週期所介入的安全活動,並且對安全資料進行動態集中展示,是安全開發管控工作價值的直觀體現。
工具平臺體系圖
3、建設可度量、持續運營的評價體系
在開發安全能力建設過程中,需要持續不斷考量整個體系存在的不足,保障開發安全體系真正的落地。其中的關鍵項包括安全開發體系建設過程中的安全開發評審及安全開發培訓情況,安全需求分析過程中的威脅識別、政策合規解讀、安全需求覆蓋度,安全設計過程中威脅建模的合理性,安全編碼過程中靜態安全掃描bug數,測試驗收過程中的安全測試、程式碼審計漏洞數,部署運維過程中的集中安全評估情況等。舉例如下:
1)在執行過程中,要對知識庫無法覆蓋的企業業務場景進行有效的安全需求、安全設計、安全編碼、安全測試用例匯出,需要對新出現的業務場景進行補充,以保障知識庫可以支撐平臺自動化分析的全面性和正確性。
2)在運營過程中,如果安全需求無法被有效度量其是否已被正確實現,那麼需要進一步確認完善,並將安全需求與編碼測試階段檢測出的缺陷進行有效對應,以保障安全需求及安全設計能夠在編碼測試階段透過安全測試用例等工作度量。
4、可選的專家經驗
透過綠盟科技自身在多個行業企業客戶的服務經驗來看,以上三個開發安全能力建設的思路和要點,大多數企業都能較好的實踐,但仍有部分企業由於組織架構、安全資源投入等問題,導致無法實現應有的效果。這時,可考慮以下三條原則是否得到有效落實:
1)企業必須自上而下地推行開發安全能力建設,且有相應的組織結構支撐。
2)針對不同角色,將有針對性的安全培訓貫穿軟體安全開發全生命週期。
3)能夠進行風險偏移管理,根據預期安全目標,靈活地對安全活動進行裁剪。
Part 3金融行業企業開發安全實踐
金融行業隨著監管的精細化、趨嚴化,以及業務範圍的擴大,業務系統需頻繁變更甚至開發新系統,大量應用系統在自主開發或委託開發時,更多的是從業務功能實現和效能方面進行驗收。因缺乏相應的技術手段和能力,對交付應用系統全生命週期的安全狀況進行檢驗,導致上線後出現類似SQL隱碼攻擊、安全功能缺失等漏洞而遭受攻擊,這不僅在受到網路攻擊後影響正常業務執行,甚至會給企業造成經濟和名譽的雙重損失。
目前軟體開發專案的安全管理重點關注程式碼掃描、等級保護測試等部分環節,缺乏對軟體開發全生命週期的安全管理過程,且系統投產後漏洞修復的成本較高,甚至會延誤預定的系統上線時間。為加強軟體開發專案全生命週期安全管理,企業需要建立統一的軟體開發專案安全管理制度、流程、技術規範標準及管理平臺,在軟體開發流程的每個階段新增一系列關注安全性的活動,全面提升系統安全性。
可參考的實踐過程如下:
1、根據監管要求及業內最佳實踐,結合客戶實際情況建立應用軟體,開發全生命週期安全管理模型。其中,涵蓋應用軟體研發涉及的應用安全、終端安全、網路與通訊安全、資料安全、系統安全等所有安全功能。
2、根據客戶應用系統型別和特點,形成多套應用軟體研發的安全管理場景,覆蓋已知所有該客戶應用系統安全開發需要。按照應用軟體安全管理場景,形成每個場景所對應的需求、設計、開發、測試的完整安全基線。
3、結合企業目前軟體開發基礎設施,透過API介面對接企業內部軟體開發專案管理平臺以及其他第三方工具,真正將安全活動融入到軟體開發專案管理流程中。在安全開發管控平臺上,統一管理軟體開發全生命週期所介入的安全活動,並且對安全資料進行動態集中展示。
4、按照應用軟體研發安全管理解決方案,結合所建立的應用軟體研發安全管理模型、技術資源庫等,依託平臺進行安全開發管控,在保證應用軟體研發安全的前提下,提高應用軟體研發的效率。
Part 4結語
安全能力建設的最大挑戰是能否有效落地。借鑑上文介紹的開發安全能力建設實踐,企業可將方法論及經驗進行總結建模,並將程式型及經驗型工作轉化為工具平臺的自動化操作方式,大幅度降低對初中級專業人員的工作量、專業技能要求。這不僅是開發安全落地的必經之路,也是DevSecOps能夠持續發展的核心,更是安全服務行業未來的發展方向。