如何做好安全開發?
摘要:從使用安全的工具、安全編碼和對開源和第三方組件進行管理三個方面來看一下。
本文分享自華為雲社區《DevSecOps研發安全實踐——開發篇》,作者: 華為雲PaaS小助手。
前言
一直以來,業界長期重視軟體上線後的安全防護,而對研發階段的安全投入不多。2012年,Gartner提出了DevSecOps的理念。DevSecOps 的理念是將安全防護流程有機地融入傳統的 DevOps 流程中,為研發安全提供強有力保證,安全工具支撐研發階段安全要求落地。
安全開發的重要性
安全與開發品質息息相關,如果開發過程式控制制良好,後期修補缺陷的費用會急劇減少。研發驗證是安全前置實踐的關鍵所在,研發階段安全是整體安全左移實現關鍵,所以要做好關注程式碼程式安全,避免風險引入。
程式碼是軟體應用服務開發的最初形態,其缺陷或漏洞是導致安全問題的直接根源,做好安全編碼,儘早發現源碼缺陷能夠大大降低安全問題的修復成本。根據美國國家標準與技術研究所(NIST)統計,編碼階段的修復成本遠遠低於發布後執行程式碼修復的成本。
如何做好安全開發
如何做好安全開發,我們重點從使用安全的工具,安全編碼和對開源和第三方組件進行管理三個方面來看一下。
使用安全的工具
工欲善其事,必先利其器。工具的安全性是進行開發前首先要保證的關鍵一環,開發團隊使用的編輯器、鏈接器等相關工具,可能會涉及一些安全相關的環節,因此在使用工具的版本上,需要提前與安全團隊進行溝通,使用經過安全性檢查,認可的工具,安全加固的編譯構建環境,確保編碼實際安全。
安全編碼
安全編碼對保證產品和服務的安全性至關重要,缺陷,錯誤和邏輯缺陷始終是導致可被普遍利用的軟體漏洞的主要原因。安全編碼是開發實踐中重要的一環,通過遵循已建立的威脅模型可以降低與安全相關的脆弱性、漏洞數量和集成錯誤,防止意外引入安全漏洞。
建立內部的安全編碼標準,維護經過審核的通用安全模組。提供安全編碼規範,制定相關的基於安全基礎庫的安全編碼規範,要求業務摒棄一些危險的編碼習慣,比如各種拼接寫法、調用不安全的默認API等,使用安全SDK中的API實現相關的功能,從而降低寫出漏洞的風險。對全員做好安全編碼規範的培訓,逐漸培養大家的安全意識。
編碼後執行程式碼Review和自動程式碼掃描,通過程式碼品質檢查、程式碼風格檢查,倉庫安全檢查,高危框架檢查、靜態程式碼分析與漏洞掃描等手段保證研發階段的安全性。同時將編碼規範檢查也集成在研發工具鏈中,保證檢查的高效高品質。
對開源和第三方組件進行管理
軟體開源日趨盛行,開源軟體成為現代軟體開發最基礎的原材料。混源軟體開發已經成為現代應用主要軟體開發交付方式,對它的全面風險審查應考慮從第三方開源組件缺陷及後門、自研程式碼通用漏洞、自研程式碼業務邏輯漏洞、潛藏惡意程式碼等維度綜合審計。
要了解潛在的第三方軟體安全威脅,不斷更新已知第三方軟體威脅和漏洞列表,對於產品團隊進行告警,保證軟體供應鏈的安全。
華為雲安全開發實踐
華為有20年研發安全積累,華為的研發安全能力是伴隨業務中不斷出現的問題逐步形成的。華為將已經開放的運維安全能力,和即將開放的研發安全能力與華為雲DevCloud深度融合,為企業帶來DevSecOps平台,讓企業便捷的落地DevSecOps理念,在軟體開發過程中就內置了安全保護,讓軟體「天生安全,健康成長」,成為企業的競爭力。
安全編碼
華為有自己的有安全編碼檢查平台 SecSolar華為雲嚴格遵從華為對內發布的安全編碼規範,構建了安全編碼知識庫,安全編碼缺陷庫,安全編碼能力庫。為防止、檢測和消除可能危及軟體安全的錯誤,華為雲服務研發和測試人員在上崗前均通過了對應規範的學習和考試。
為保證服務始終具備高安全性,華為雲在安全編碼的同時,引入了靜態程式碼掃描工具每日檢查,其結果數據進入雲服務持續集成和持續部署(CI/CD – Continuous Integration, Continuous Deployment)工具鏈,通過品質門限進行控制,以評估雲服務產品的品質。所有雲產品、雲服務在發布前,均需完成靜態程式碼掃描的告警清零,有效降低上線時編碼相關的安全問題。華為雲研發的程式碼檢查CodeCheck提供近2000條華為典型檢查規則,支援多種主流開發語言,可以在開發階段識別大部分安全問題,實現安全風險前置,有效管控程式碼品質。
第三方軟體安全管理
華為雲基於嚴進寬用的原則,保障開源及第三方軟體的安全引入和使用。華為雲對引入的開源及第三方軟體制定了明確的安全要求和完善的流程式控制制方案,在選型分析、安全測試、程式碼安全、風險掃描、法務審核、軟體申請、軟體退出等環節,均實施嚴格的管控。例如在選型分析環節,增加開源軟體選型階段的網路安全評估要求,嚴管選型。在使用中,須將第三方軟體作為服務或解決方案的一部分開展相應活動,並重點評估開源及第三方軟體和自研軟體的結合點,或解決方案中使用獨立的第三方軟體是否引入新的安全問題。
華為雲將網路安全能力前置到社區,在出現開源漏洞問題時,依託華為雲對開源社區的影響力,第一時間發現漏洞並修復。漏洞響應時,須將開源及第三方軟體作為服務和解決方案的一部分開展測試,驗證開源及第三方軟體已知漏洞是否修復,並在服務的Release notes 里體現開源及第三方軟體的漏洞修複列表。
後記
各類的安全漏洞掃描、開源組件版本檢查甚至是程式碼品質程式碼風格等的工具,可以讓研發人員在編碼時就發現和消除一些潛在的安全風險。在DevSecOps時代,這個需要大力的投入,如果做的好,可以大大減輕後續環節的工作量。不過這裡也面臨一些挑戰,比如針對源碼靜態分析的誤報率問題,再比如某些安全漏洞準確的檢測方案極度依賴編譯或構建過程等等。由此可見,DevSecOps未來之路任重道遠。
參考附錄
1.《華為雲安全白皮書》.華為技術有限公司
2.《研發運營安全白皮書》. 雲計算開源產業聯盟.
3.每天掃描超300億行程式碼,DevSecOps在華為的落地與實踐_DevOps