目錄
0x01 sdl介紹
0x02 sdl流程框架
0x03 sdl實戰經驗
0x04 總結
安全開發生命週期(sdl)即security development lifecycle,是乙個幫助開發人員構建更安全的軟體和解決安全合規要求的同時降低開發成本的軟體開發過程。
自2023年起,sdl就成為microsoft全公司的計畫和強制施行政策,其核心理念就是將安全考慮整合在軟體開發的每乙個階段:需求分析、設計、編碼、測試和維護。從需求、設計到發布產品的每乙個階段每都增加了相應的安全活動與規範,以減少軟體中漏洞的數量並將安全缺陷降低到最小程度。安全開發生命週期 (sdl)是側重於軟體開發的安全保證過程,旨在開發出安全的軟體應用。
microsoft 安全開發生命週期 – 簡化(英文版)
microsoft 安全開發生命週期 – 簡化(中文版)
sdl的安全活動包括:
階段1:培訓
開發團隊的所有成員都必須接受適當的安全培訓,了解相關的安全知識,培訓物件包括開發人員、測試人員、專案經理、產品經理等。
階段2:安全要求
在專案確立之前,需要提前與專案經理或者產品owner進行溝通,確定安全的要求和需要做的事情。確認專案計畫和里程碑,盡量避免因為安全問題而導致專案延期發布。
階段3:質量門/bug欄
質量門和bug欄用於確定安全和隱私質量的最低可接受級別。
bug欄是應用於整個開發專案的質量門,用於定義安全漏洞的嚴重性閾值。例如,應用程式在發布時不得包含具有「關鍵」或「重要」評級的已知漏洞。bug欄一經設定,便絕不能放鬆。
階段4:安全和隱私風險評估
安全風險評估(sra)和隱私風險評估(pra)是乙個必需的過程,必須包括以下資訊:
1、(安全)專案的哪些部分在發布前需要威脅模型?
2、(安全)專案的哪些部分在發布前需要進行安全設計評析?
3、(安全)專案的哪些部分需要並不食慾專案團隊且雙方認可的小組進行滲透測試?
4、(安全)是否存在安全顧問認為有必要增加的測試或分析要求已緩解安全風險?
5、(安全)模糊測試要求的具體範圍是什麼?
6、(安全)隱私影響評級如何?
階段5:設計要求
在設計階段應仔細考慮安全和隱私問題,在專案初期確定好安全需求,盡可能避免安全引起的需求變更。
階段6:減小攻擊面
減小攻擊面與威脅建模緊密相關,不過它解決安全問題的角度稍有不同。減小攻擊面通過減小攻擊者利用潛在弱點或漏洞的機會來降低風險,減小攻擊面包括:關閉或限制對系統服務的訪問,應用「最小許可權原則」,以及盡可能進行分層防禦。
階段7:威脅建模
為專案或產品面臨的威脅建立模型,明確可能來自的攻擊有哪些方面。
階段8:使用指定的工具
階段9:棄用不安全函式
許多常用函式可能存在安全隱患,應當禁用不安全的函式和api,使用安全團隊推薦的函式。
階段10:靜態分析
**靜態分析可以由相關工具輔助完成,其結果與人工分析相結合。
階段11:動態程式分析
動態分析是靜態分析的補充,用於測試環節驗證程式的安全性。
階段12:模糊測試(fuzzing test)
模糊測試是一種專門形式的動態分析,它通過故意向應用程式引入不良格式或隨機資料誘發程式故障。模糊測試策略的制定,以應用程式的預期用途,以及應用程式的功能和設計規範為基礎。安全顧問可能要求進行額外的模糊測試,或者擴大模糊測試的範圍和增加持續時間。
階段13:威脅模型和攻擊面評析
專案經常會因為需求等因素導致最終的產出偏離原本設定的目標,因此在專案後期對威脅模型和攻擊面進行評析是有必要的,能夠及時發現問題並修正。
階段14:事件響應計畫
受sdl要求約束的每個軟體在發布時都必須包含事件響應計畫。即使在發布時不包含任何已知漏洞的產品,也可能在日後面臨新出現的威脅。需要注意的是,如果產品中包含第三方的**,也需要留下第三方的****並加入事件響應計畫,以便在發生問題時能夠找到對應的人。
階段15:最終安全評析
最終安全評析(fsr)是在發布之前仔細檢查對軟體執行的所有安全活動。通過fsr將得出以下三種不同不同結果。
1、 通過fsr。在fsr過程中確定所有安全和隱私問題都已得到修復或緩解。
2、 通過fsr但有異常。在fsr過程中確定所有安全和隱私問題都已得到修復或緩解,並且/或者所有異常都已得到圓滿解決。無法解決的問題將記錄下來,在下次發布時更正。
3、 需上報問題的fsr。如果團隊未滿足所有sdl要求,並且安全顧問和產品團隊無法達成可接受的折中,則安全顧問不能批准專案,專案不能發布。團隊必須在發布之前解決所有可解決的問題,或者上報高階管理層進行抉擇。
階段16:發布/存檔
sdl 過程圖示:
準則:sdl中的方法,試圖從安全漏洞產生的根源上解決問題,通過對軟體工程的控制,保證產品的安全性。本文簡單介紹了一下微軟sdl,但流程複雜,落地難,借鑑微軟sdl流程框架,思考如何構建符合自己公司的sdl流程框架。接下來會寫幾篇關於sdl的學習與思考,待續。
[1]【軟體安全設計】安全開發生命週期(sdl)
[2] 微軟sdl官方位址
[3] microsoft sdl 的簡化實施
[4] 應用安全與微軟sdl-it流程
[5] sdl 威脅建模工具入門
應用安全 微軟的安全開發生命週期 SDL
0x01 sdl介紹 安全開發生命週期 sdl 即security development lifecycle,是乙個幫助開發人員構建更安全的軟體和解決安全合規要求的同時降低開發成本的軟體開發過程。0x02 sdl流程框架 自2004年起,sdl就成為microsoft全公司的計畫和強制施行政策,其...
vs解決無符號型別,安全開發生命週期(SDL)檢查
前面在學習使用google的protobuf時在vs2012中一直無法編譯編譯通過,經過查詢一些資料原來發現,並不是protobuf的問題,而是自己在使用vs2012時,沒有完全了解vs2012的強大功能,和跟以前vs2010的差別,導致無法編譯通過。現在就來說說為什麼沒有編譯通過,在vs2012建...
Android安全開發之Provider元件安全
android安全開發之provider元件安全 注意 由於android元件content provider無法在android 2.2 即api level 8 系統上設為不匯出,因此建議宣告最低sdk版本為8以上版本 這已經是好幾年前的sdk了,現在一般都會大於此版本 由於api level ...