SDL[專案生命安全週期解決方案]
專案概述
本文件為xx安全團隊針對xx專案生命週期給出的安全評估系統方案,意義在於SDL使專案在設計,程式碼開發,測試中與安全相關的漏洞減到最少和後續安全工作的進行。
本文件內容僅覆蓋專案生命週期安全控制的實現方式,不包括專案生命週期安全控制平臺實現後的具體運營。
SDL:安全開發生命週期(SDL)即SecurityDevelopment Lifecycle,是安全軟體開發生命週期,是一套完整的,面向Web和APP開發廠商的安全工程方法。幫助軟體企業降低安全問些,提升軟體安全質量;
3 風險梳理
常規的專案開發流程,如下:
專案開發中存在的風險點,如下:
風險 |
風險描述 |
專案收集和分析,設計階段未經過安全需求評審 |
由於未經過安全需求評審,專案在設計初期採用舊框架、流程設計不合理,未做任何防護機制導致專案上線後被惡意攻擊者攻擊,刪除,資料或者程式碼被盜等危害 |
專案編碼階段未按照程式碼安全規範進行編寫 |
由於未按照程式碼安全規範進行編寫,專案在開發中使用高危函式,並對輸入和輸出語句未作任何處理和檢測等導致專案上線後被惡意攻擊者攻擊,刪除,資料或者程式碼被盜等危害 |
專案測試階段未經過安全測試直接釋出 |
由於未經過安全測試直接釋出,專案中一些設計不合理或者配置不合理的地方被惡意攻擊者攻擊;導致專案刪除,資料或者程式碼被盜等危害 |
專案線上階段釋出後對一些關鍵位置,框架等不進行維護和更新 |
由於專案釋出後對一些關鍵位置,框架等不進行維護和更新,導致攻擊者利用最新的漏洞攻擊;導致專案刪除,資料或者程式碼被盜等危害 |
4 安全需求
專案生命週期階段 |
安全需求 |
專案收集和分析,設計階段未經過安全需求評審 |
安全培訓,需求分析 |
專案編碼階段未按照程式碼安全規範進行編寫 |
安全編碼規範, 程式碼審計 |
專案測試階段未經過安全測試直接釋出 |
黑白盒測試 |
專案線上階段釋出後對一些關鍵位置,框架等不進行維護和更新 |
黑白盒測試檢查確認 應急響應,BUG跟蹤 |
5 安全控制
控制手段 |
描述 |
推廣安全程式設計意識 |
|
安全需求評審 |
如何對軟體產品的風險進行評估,建立基本的安全需求;提供安全方案設計及威脅建模 |
程式碼安全審計 |
提供主流程式語言的安全編碼規範,安全函式庫以及程式碼審計方法 |
安全測試 |
基於威脅建模的測試設計,Fuzzing測試,滲透測試 |
應急響應 |
建立漏洞管理體系 |
安全介面 |
提供安全API介面進行防護 |
安全工單 |
建立安全工單管理體系 |
6.1.1 設計原則
安全評估系統設計核心原則:
l 攻擊面最小化
l 基本隱私
l 許可權最小化
l 預設安全
l 縱深防禦
l 威脅建模
6.1.2 主要目標
安全評估系統主要目標:在專案開發中每個階段提供全方位的安全服務保證專案整體安全質量,同時在安全評估系統上可直觀、清晰的瞭解到每個專案的進度和安全狀況, 並進行安全動態跟蹤。
6.2.1 系統架構
安全評估系統架構圖
系統採用五層架構設計:
一、展現層
Web前端:基於HTML/HTML5/Vue/CSS3開發web前端頁面,相容主流瀏覽器。展現層和資料層完全分離,通過跨域實現前後端資料通訊。
Restful介面:基於特定業務,採用Restful標準介面,對外提供資料服務。
二、通訊層
基於HTTP/HTTPS 兩種通訊方式,實現前後端資料通訊。
三、服務層
核心業務基於flask框架實現微服務化可以獨立部署、水平擴充套件、獨立訪問(或者有獨立的資料庫)的服務單元。
四、資料層
postgresql:儲存app安全掃描資訊和結果資訊。
mysql:儲存事務性資料,以及關聯性將強的資料。如,安全工單資訊、專案安全流程資訊等;
redis:做訊息中介軟體,儲存任務佇列資訊,任務結果資訊。
五、執行層
主要對資料進行加工、處理,根據資料的內容執行各類事件或者任務。
6.2.2 業務架構
安全評估系統業務架構
系統業務依賴關係:
安全評估系統主要根據專案的工作流程進行設計,主要由安全評審,程式碼安全審計,WEB掃描,漏洞管理,安全工單,報表等模組構成;通過從需求階段到上線運營進行安全監管,讓專案每個環節的安全狀態都可以達到360度的視覺化,並可以動態跟蹤。詳細描述見工作流程和實現方案。
安全評估系統整體工作流程
安全評估系統工作流程是基於專案開發週期的每個階段進行劃分, 每個階段存在對應的安全服務可便捷式的嵌入到流程中,從而保證安全貫穿於整個專案生命週期的每一個環節,消除上線前的安全問題,解決99%的高危漏洞。
6.4 實現方案
在安全評估系統設計之初已有程式碼安全審計系統,web掃描系統和漏洞管理系統,所以只需要對程式碼安全審計和web掃描系統稍微進行修改即可接入到安全評估系統。
整體的安全評估系統分階段進行實現,大致分為以下九個階段:
第一階段:完成賬戶管理和安全評審模組,測試
第二階段:接入程式碼安全審計,完成程式碼安全審計模組,測試
第三階段:接入web掃描,完成安全測試模組初期,測試
第四階段:接入漏洞管理,完成漏洞管理模組,測試
第五階段:完成報告管理模組,測試
第六階段:完成工單管理模組,測試
第七階段:完成安全規範和安全API模組,測試
第八階段:整體測試
第九階段:整體內部上線試執行,推廣
6.4.1 賬戶管理實現方案
Todo
6.4.2 安全評審實現方案
安全需求流程圖: todo
STRIDE威脅建模:todo
GDPR隱私保護:todo
6.4.2 程式碼安全審計實現方案
Sonar掃描引擎工作流程圖
SonarQube執行程式碼掃描主要以下幾個步驟:
1. 拉取伺服器配置資訊和規則資訊
2. 對對應的程式碼進行正則規則匹配分析
3. 上傳結果
其主要作用就是程式碼質量管理和安全審計,用於管理原始碼的質量和安全,可以從七個維度檢測程式碼質量通過外掛形式,可以支援包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種程式語言的程式碼質量管理與檢測
6.4.2 安全測試實現方案
Web掃描引擎工作流程圖
Web掃描引擎集成了WEB漏洞掃描,IP脆弱性掃描,弱口令爆破等功能。持續為公司網路資產提供安全評估狀態和監控,幫助減少漏洞和業務上的風險。
6.4.3 漏洞管理實現方案
Todo
6.4.4 賬戶管理實現方案
Todo
6.4.5 報告管理實現方案
Todo
6.4.6 安全工單實現方案
Todo
6.4.7 安全規範實現方案
Todo
6.4.8 安全API實現方案
Todo