軟體發展安全流程 SDL (Secure Development LifeCycle)
Web Security, 雲端資訊安全15.06.2017
軟體發展安全流程 SDL (Secure Development LifeCycle)
這篇文章主要介紹軟體發展流程中必要的安全技術與工具
要讓該流程能夠有所落實, 還是必須回歸安全技術
單單依照流程執行還是不夠的, 到底這流程中有執行上有哪些問題與技術要考量?
安全培訓
與其說是培訓不如說這部分更多的是溝通的過程, 安全的培訓內容包含哪些? 一般來說分為下列幾大部分
公司整體安全政策
例如資訊安全, 安全流程規範, 數位資產防護, USB/行動電腦使用規範等
這樣的培訓通常會在新員工入職舉辦, 或是定期公司以宣傳的方式進行,
網路安全從業人員對於網路安全業務的處理, 會有更其他網路安全從業要求的培訓,
除了一般常見的軟體安全技術, 例如: 安全編碼 or 安全需求等.
還包含法規與行業合規, 舉例來說:
- 中國有《網路安全法》《中華人民共和國電腦資訊系統安全保護條例(2011修訂)》《通信網路安全防護管理辦法》《國家安全法(2015)》
- 每個國家對於密碼與進出口都有貿易合規的相關規定
- 個人隱私保護規範, 每個國家對於個人隱私資料的獲得, 儲存與處理也有特別法律的規律
- 行業安全認證
這些與 SDL 軟體發展有什麼關係呢? 主要在於必須要識別出關鍵的安全需求風險
哪些軟體的設計會導致安全合規的障礙或是缺失必須要識別出, 提煉出相關軟體的安全需求, 安全設計, checkList
安全架構設計
首先要區分的是軟體的安全與安全的軟體有所不同.
軟體的安全指的是透過 SDL (Secure Development Lifecyle)保障軟體的安全
安全的軟體, 例如防毒軟體
這邊更多指的是軟體的安全, 當然防毒軟體的本身也需要安全的設計,
什麼是一個好的安全架構設計 , 有許多的模型與架構, 一般來說ICU. X805提供一個整體性的思考
儘管該模型超過 10年, 但是整體的安全設計原則還是沒有改變
改變的是許多不同的應用場景, 例如雲化場景下的場景, 例如微服務架構下的場景, 例如開放環境下認證的場景等
安全設計
安全設計的培訓通常包含整體性攻擊與威脅防護的安全設計方案,
筆者很推薦這本書 https://msdn.microsoft.com/en-us/library/ff648647.aspx
另外OWASP ESAPI提供一個設計與實作整體的思考, 非常值得參考
即使不使用 ESAPI 實作, 整體的安全設計也應該包含這些模組
威脅分析
在設計階段時會進行威脅分析的討論, 針對每個模組進行 STRIDE 的威脅與防護的分析
https://www.owasp.org/index.php/Application_Threat_Modeling#STRIDE
https://www.owasp.org/index.php/Application_Security_Architecture_Cheat_Sheet
隨著時間的累積, 會累積一定的資料庫
進行這樣的分析必須避免流於形式, 為了符合流程而只是做拷貝複製類似模組的威脅分析
另外, 必須厘清現有的削減措施與建議消減措施以便落地于產品開發中
這是一個安全工程師, 開發工程師, 安全與業務的雙向溝通過程
如何在業務與安全中取得一個平衡是這溝通過程中最重要的部分
相關威脅分析工具與材料可參考:
威脅分析 https://www.microsoft.com/en-us/sdl/adopt/threatmodeling.aspx
威脅分析 https://www.owasp.org/index.php/Application_Threat_Modeling#STRIDE
安全編碼
安全編碼培訓常見的有 C/C++, PHP, Java, Python, 編譯安全, 安全編碼掃描工具使用, 加密演算法使用等
業界比較值得參考的安全編碼規範有
CWE 常見的編碼與軟體錯誤
Oracle Java 安全編碼指南
Secure Coding
OWASP
- https://www.owasp.org/index.php/Secure_Coding_Cheat_Sheet
- https://www.owasp.org/index.php/OWASP_Secure_Coding_Practices_-_Quick_Reference_Guide
另外筆者也建議 FindBugs 工具所提供的編碼錯誤指南
編碼掃描工具
商用較知名的有
- Klocwork
- Coverity
- Veracode
安全測試
Web 安全測試方法與工具,
筆者推薦 OWASP Testing Guide https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents
測試工具的部分知名的 Kali Linux 內建許多安全測試工具
由於多半的服務為 Web, 也可以考慮使用 Samurai , 跟Kali Linux 類似, 但是著重於 Web 相關的測試工具
對於平台, 作業系統, Linux, Database 等的安全配置測試, 筆者建議採用業界
- CIS Benchmark
- OpenSCAP https://www.open-scap.org/
網路法規 & 個人隱私保護
由於歐洲 GDPR 個人隱私資料保護法的實施, 讓個人隱私資料保護成為各互聯網企業的顯學
在中國有<網路安全法>, 法律跟網路軟體安全有什麼關係呢? 筆者列舉下列幾點:
- 日誌保存必須6個月: 日誌保存就必須注意到備份與完整性保護等機制
- 資料對外輸出: 如果有資料必須傳輸至其他國家就必須經過過濾與處理
- 個人隱私收集與處理: 如果服務在處理過程中有收集使用者資料必須告知
- 漏洞回應: 漏洞的處理與回應必須符合規定與通報《中國互聯網協會漏洞資訊披露和處置自律公約》
中國漏洞權威發佈的機構
1.中國國家資訊安全性漏洞庫:http://www.cnnvd.org.cn
2.國家互聯網應急中心:http://www.cert.org.cn
參考: http://blog.nsfocus.net/network-security-law-points/#i-2
另外《電子商務法》與《個人資訊保護法》也正在立法中, 這些法案將對於中國互聯網比較大的影響
安全需求分析
安全需求來源可以分為下列幾個層面:
- 客戶
- 法規
- 行業 OWASP, NIST, CSA
- 安全認證
- 業務場景衍生
另外筆者推薦參考 OWASP ASVS, 該專項對於安全整體需求分為19類
參考
SDL 指導書下載參考: https://www.microsoft.com/en-us/download/details.aspx?id=12379
https://www.microsoft.com/en-us/sdl/default.aspx