軟體發展安全流程 SDL (Secure Development LifeCycle)

軟體發展安全流程 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

 

 

另外筆者也建議 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 相關的測試工具

http://www.samurai-wtf.org/

對於平台, 作業系統, Linux, Database 等的安全配置測試, 筆者建議採用業界

 

網路法規 & 個人隱私保護

由於歐洲 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

 

Leave a Reply

Your email address will not be published. Required fields are marked *