­

SDL軟體安全開發流程總結

  • 2020 年 2 月 20 日
  • 筆記

前言

現在有很多公司SDL的流程剛剛起步,我想分享一下自己在SDL中的一些經驗。由於經驗尚淺,無法估量整個 SDL的建設情況,以下只是自己在工作中的理解和拍腦袋的想法,請各位大佬指點。

SDL全稱Security Development Lifecycle,又稱作安全開發生命周期,包括安全培訓、安全需求設計、安全開發、安全檢測和安全監控五個階段。本文會以安全檢測為重點展開。

一、安全培訓

安全培訓的重點是提高全體項目人員的安全意識,包括產品經理的安全意識和研發測試人員的程式碼安全意識。

項目的中期可開展針對性的培訓,例如程式碼中經常出現的問題、測試過程中多次出現的漏洞等都可以作為培訓的重點。

二、安全需求設計

針對系統業務要求實施風險評估工作,根據需求文檔與項目經理確定安全需求,制定安全需求表,供後續開發檢測時使用。

三、安全開發

安全開發階段由項目經理把控。作為安全人員,在項目開始前對所有研發人員做好安全培訓,中期做針對性的問題漏洞培訓,能夠減輕在安全檢測時的工作量。

四、安全檢測

在從前任職的公司,安全體系相對完善,所有的新項目上線前都需要經過三步檢查——程式碼審計、Web應用掃描、人工滲透掃描。

程式碼審計

使用 Jekens 拉 Gitlab 程式碼放入Fortify 中掃描。開發過程中,開發人員每次更新程式碼都要進行掃描,並有許可權查看Fortify相關項目漏洞情況,進行整改(不允許有中高危以上漏洞)。開發有權對漏洞進行忽略處理,但需要承擔相應後果。若不知道如何處理,可請安全組提供解決方案。(程式碼掃描可以使用其他安全工具)

WEB應用掃描

WEB應用掃描不需要安全基礎即可操作。因為安全人員比測試人員少,一般交予測試人員協助處理。掃描器可選擇項很多,包括開源或者商用,選擇適合自己的就好。

人工滲透掃描

這也是最後一步。針對不同的應用發布情況,若是應用為新應用則需要對總體項目進行滲透測試;若為增量項目(版本迭代更新)則只需要對增加項相關介面做測試。滲透人員由安全組人員負責。

以上報告中出現中高危以上問題必須整改,整改完成前不允許上線。

五、安全監控

一般來說,公司都具有安全設備,安全的維護也可以藉助SRC(Security Response Center安全應急響應中心)或者第三方漏洞平台。

六、SDL流程監督

最後分享一下關於SDL流程監督的經驗。

SDL流程由項目經理負責,同樣SDL的監督對象為項目經理,項目經理為整改流程的主導。流程監督是貫穿整個開發周期的,包括前期的安全培訓、需求設計,中期的程式碼開發、安全檢測,後期的安全監控。

再介紹一下在SDL流程中的《安全選項表》。《安全選項表》中的內容為等級保護和網站備案中必須存在的一些安全功能項,屬於法律合規的內容。不是產品必須符合其中的內容,而是盡量符合。若不用相關功能,可以在表格中解釋一下,日後在做等級保護等檢查時也可直接提供與檢查人員。

若項目為全新項目,則按照《安全選項表》(圖1)中流程進行。產品經理需要參考表中的內容,對項目進行梳理,選擇保留項。若選項不保留,則需要在備註中說明理由。

圖1

開發和測試根據產品填寫好的《安全選項表》內容進行測試。部分安全專業的測試工作由安全人員進行測試。完成最後的安全測試並允許上線後,三份測試報告和此安全選項表格要進行歸檔。其中比較重要的環節是對四條線的人(項目經理、產品、開發、測試)培訓安全選項表內容。

若項目為後期迭代,則需求評審的時候需要安全人員參與,負責安全性評估和後期滲透檢查。程式碼和WEB應用掃描可以照常進行。

結束語

以上SDL整體的流程完全依據個人平時的工作理解而成,供大家參考。有錯誤的地方歡迎大佬們指正,有更好的完善方法也歡迎大家補充探討。

相關資料

https://blog.csdn.net/shark1357/article/details/89368328 https://jenkins.io/doc/pipeline/steps/fortify/ https://wiki.jenkins.io/display/JENKINS/Fortify+Plugin

*本文原創作者:山城安全MTSec,本文屬於FreeBuf原創獎勵計劃,未經許可禁止轉載