• 教學 08.10.2017

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

     

    Posted by Tony @ 9:28 pm

  • Leave a Reply

    Your email address will not be published.