當前位置:成語大全網 - 新華字典 - 應用安全體系建設之路

應用安全體系建設之路

只要提到應用安全,總是離不開壹個概念——sdl建設,但是在大部分互聯網公司並沒有看到過哪家SDL做的好的,SDL強調安全流程,從業務需求的提出就介入進去,在整個業務的研發周期中,每壹塊都有相應的安全方法、安全制度來指導,安全作為業務的壹個屬性加入進去,SDL在過程中實施的是對業務的卡點、考核。

這塊主要是對流程進行梳理,把安全與項目研發流程相結合形成項目的安全開發管控流程,安全貫穿到整個項目研發流程中,包括前期的需求分析,安全設計、代碼編寫、代碼上線部署、測試環境測試、正式環境上線運行等,可以認為此時走傳統的SDL流程。

這裏有個問題,若是業務量增長的話對於人力成本是巨大的,這裏很多公司就結合DevSecOps理念來解決壹部分人手不足的問題,這個框架講研發、運維、安全作為壹個團隊來對業務的安全負責,安全不單是安全團隊的怎樣,成了業務中每個人的責任。下面簡要說下DevSecOps理念及落地實施。

對於DevSecOps的落地來說,這個只是個框架,是個方法論,具體的技術實施呢,都知道是將Sec融入到Dev和Ops的裏面,對於怎麽融入、怎樣結合到起來,就需要根據不同公司的不同特點來定了。

對於安全來說,主要的任務就是保護公司的業務不會被外界入侵,不會被外界攻擊,攻擊能及時發現切斷。

DevSecOps框架需要建設不同的安全體系,需要不斷優化和完善對於的體系來覆蓋框架的不同階段。對於在真正的實施過程中,大部分公司都可能涉及到以下不同的能力建設,在具體落地過程中,筆者認為可以簡單總結為幾個能力建設:主動發現的能力、被動發現的能力、業務管控的能力、安全運營的能力。

主動發現的能力簡單來說是能主動發現業務中的安全問題、安全漏洞、安全風險,業界中比較常用的技術有黑盒掃描、白盒掃描、安全評估與測試以及紅藍對抗。

這個是每個公司都會有的,也是初期重點建設的壹塊,有采用商業掃描工具:awvs、appscan等,也有采用自研方式進行。

這裏不說商業的掃描工具,對於互聯網公司,大部分都會采用自研掃描工具的方式進行,簡單說下自研掃描器裏面涉及到的壹些需要重點考慮的地方:

白盒的話在互聯網公司除了幾個大廠有自研的引擎外,據了解都是采用了商業的工具,在具體的落地過程中也調研了不少白盒掃描工具:checkmarx、coverity、codeql、sonarqube。

checkmarx和coverity都有sonarqube的插件在,都可以作為sonar的壹個引擎來工作,對於sonar來說,很多互聯網公司都基於這個做代碼質量的掃描,這個其實給做白盒能力有了很大的便利性。

checkmarx對於web來說效果比coverity要好些,並且對於用戶的使用體驗和操作都是比較不錯,將checkmarx插件集成到sonar裏面,這樣業務不需要單獨集成checkmarx,而是只需要按照以前的流程集成sonar就可加入安全掃描的能力。

但是有壹點需要考慮,對於安全結果來說業務很多時候不知道是不是誤報還是真實的安全風險,這就需要安全人員介入到流程裏面,對代碼掃描的結果進行審核,確定是漏洞的提交給業務,不是漏洞的直接忽略處理,這樣前期需要大量的人工參與,需要不斷優化規則,不斷調整策略減少誤報。前期可以通過對結果的分析可以將壹些誤報率較高的規則下掉,只留高威脅級別的規則在,保證人工在每天是可以覆蓋的住流程的

後期的話由於sonar是帶有api接口的,可以基於sonar包裝壹層,構建安全自己的代碼掃描平臺,可以提供api接入到CI中,可以將漏洞審核與漏洞管理平臺打通,可以通過平臺調整規則、新加規則等。這樣在整個CI中,sonar+代碼掃描平臺兩個,業務只要關心sonar上面的代碼質量問題,安全只要登入代碼掃描平臺審核白盒掃描出來的漏洞即可。

這裏涉及到壹個白盒裏面的子項目:白盒掃描插件,這個作為白盒檢測,更加進行了左移,在業務編寫代碼的時候就直接進行掃描。可以基於:/alibaba/p3c 來包裝壹層來做

還有壹個白盒的子項目:第三方組件的漏洞發現,這個做起來可以通過采購商業軟件來實現,比如Blackduck或者xray,對業務是透明的,只要安全人員控制好流程和策略。

紅藍對抗是壹種能更深層次發現安全問題和安全風險的方式。每過壹段時間組織壹次藍隊行動,對著壹個核心目標不限手段、不限方式地進行攻擊,以獲取核心目標為目的。可以更好地發現整個業務體系中存在的安全問題和安全風險點,幫助紅隊進行安全優化及建設,紅藍對抗在安全進行中壹定程度後可以考慮重點進行建設,對於整個風險的發現和推動是巨大的。

被動發現安全風險的能力,可以采用的技術有:安全監控、蜜罐

監控可以分為兩類:未發現風險的監控、風險之中的監控,風險之後的溯源

為了發現風險的監控,可以提前杜絕掉風險的發生,比如前面說的,若是資產梳理是沒有問題的,可以每天將業務新增的資產進行掃描查看,比如:新上的域名是壹個管理系統,他沒有走內部的安全流程,就存在問題,直接要求整改。新上的域名、服務器直接進行掃描器的掃描,可以第壹時間發現是否存在漏洞。

發生風險的時候的監控:

- 攻擊流量監控 :這個就是有很多掃描器、很多測試的數據的特征進行流量監控,監控到了直接報警,也可結合SOC進行數據分析處理,利用WAF進行自動化封IP等防禦措施,這樣將內部各個防禦能力打通,實現自動化編排,後期流量日誌采用大數據建模方式來發現未特征化的攻擊。

- DNS監控: 對於很多命令執行、SQL註入、SSRF等漏洞的探測大部分是通過DNS來的,內部系統發起DNS請求是可以在內部DNS服務器上捕捉到的,這樣將DNS日誌監控起來,初始先制定壹些黑名單,觀察是否有機器對外發現這些惡意DNS請求了,對這些機器進行分析,就有可能發現未知的存在的安全風險。

- SQL執行日誌監控: 對於sql註入的發現還是比較有用的,SQL註入通常會有壹些註入特征在,只要匹配到這些特征,就可以發現某個業務在遭受sql註入的攻擊

除此之外,對外界代碼倉庫、文檔倉庫的監控也是屬於監控體系的,包括GitHub監控、百度網盤監控等等,這個github好說,很多開源的工具系統存在,將業務的關鍵信息加入到監控中即可,對於百度網盤之類的監控就不太好做了。

這個也是發現攻擊的壹種很好的方式,不單可以發現外部使用到的poc、密碼字典等等信息,也能發現壹些未知的攻擊方式和APT行為存在

業務管控能力,比較通用的是WAF,為啥把WAF能力放在安全管控上面,WAF是可以做到哪些ip能訪問,哪些ip不能訪問,哪些路徑能訪問,哪些路徑不能訪問到的,說起來也是對業務的訪問做的管理。WAF有很多成熟的商業產品在用,也可以自研,自研的話前期是基於正則匹配來做的,通過匹配對應的參數位置上的參數值是否包含有關鍵字來做。後期的話要想準確性高、誤報率小的話還是需要機器學習和語義分析來做。

現在對於業務管控比較熱門的零信任體系的建設,比較常見的是安全網關的模式,有空說下零信任的壹些內容,現階段知識還不深,就不說了,再深入研究研究看。

提到安全運營,很多人的腦袋想到的都是舉辦些安全活動,打打雜之類的工作,在筆者看來,壹個企業的安全運營能力才真正能體現出該企業的安全能力,安全運營是推動SDL流程不斷優化、不斷完善的動力,是為DevSecOps規劃建設指明道路和方向的。

技術要是沒有了運營,是無法進行後續的優化和改進的,運營沒有了技術,是虛的空的,無法落地的,安全運營包括了外部運營、內部運營,不同的運營又可劃分為非技術運營、技術運營兩種

外部運營裏面的非技術運營,主要包括了安全品牌的建設、宣傳等,主要是提供公司在業界的影響力,這樣可以更好的吸引外部的安全研究者為我們服務,更好的吸引外界安全人員以外部視角參與到公司的安全建設中來

外部的技術運營:組織技術人員參加外部的比賽、大會等,發表技術文章等,以技術能力展現出來,這樣在行業中展示出公司的技術實力。

內部非技術運營:匯總每個能力方面的數據做分析,將各個能力的結果通過數據化的方式展示出來,壹方面可以給老板看到能力的建設進展情況,也能使大家了解到自己做的工作的成果

具體的落地可采用:數據大屏的方式來展示出來,通過soc平臺完成。

內部技術運營:通過非技術運營出來的結果反哺各個能力建設,通過內部、外部發現的安全問題,優化各個能力的建設,補充不足之處,推動流程優化和DevSecOps建設方向。

具體落地:主要是需要運營人員對每壹部分的能力建設比較了解,通過看問題能發現更深層面的東西,然後對每個結果進行安全能力上面的推動。