針對代碼和應(yīng)用程序的軟件供應(yīng)鏈攻擊已經(jīng)成為一種對互聯(lián)網(wǎng)經(jīng)濟發(fā)展影響巨大的網(wǎng)絡(luò)攻擊手段。因此,加強代碼和應(yīng)用程序的自身免疫力,保證應(yīng)用程序敏捷安全地開發(fā)、交付和流轉(zhuǎn),當前應(yīng)作為網(wǎng)絡(luò)安全的一項重要任務(wù)來看待。在軟件供應(yīng)鏈安全建設(shè)實踐中,DevSecOps平衡了代碼開發(fā)過程中敏捷和安全的需求,逐漸被行業(yè)接受和認可,加速DevSecOps的落地實踐并成為敏捷開發(fā)模式企業(yè)中開發(fā)安全建設(shè)的重要抓手。
日前,安全牛采訪了孝道科技聯(lián)合創(chuàng)始人兼CTO徐鋒,就如何在供應(yīng)鏈安全建設(shè)中實踐運用DevSecOps進行了深入探討。徐鋒表示:“軟件供應(yīng)鏈安全的影響已經(jīng)上升到了國家安全的高度,企業(yè)對軟件供應(yīng)商、產(chǎn)品供應(yīng)商提供的軟件安全合規(guī)性要求越來越高,對違規(guī)處罰的力度也越來越高,這將有力促進安全開發(fā)、DevSecOps理念的快速落地。在DevSecOps模式下,更為強調(diào)全員的安全責任和共擔文化,每個人都要為系統(tǒng)應(yīng)用安全承擔責任,因此需要團隊成員在安全意識和觀念上有了積極轉(zhuǎn)變?!?/p>
現(xiàn)任杭州孝道科技有限公司副總經(jīng)理兼CTO,近20年安全行業(yè)從業(yè)經(jīng)驗,浙江省網(wǎng)絡(luò)空間安全協(xié)會專家、云安全聯(lián)盟CSA(Cloud Security Alliance)專家組成員、全國信息安全標準化技術(shù)委員會(TC260) 相關(guān)工作組成員。主要研究領(lǐng)域包括軟件供應(yīng)鏈安全、安全開發(fā)、SDL、DevSecOps,是數(shù)字應(yīng)用安全領(lǐng)域的探索者,曾參與多項相關(guān)標準的研制工作。
01 目前,軟件供應(yīng)鏈攻擊的主要特點是什么?企業(yè)應(yīng)對軟件供應(yīng)鏈攻擊的方法或框架主要有哪些?
徐鋒
目前在軟件供應(yīng)鏈攻擊里面影響面最大、最容易被攻擊、最易得手的,多數(shù)是由開源軟件問題導(dǎo)致的。首先,目前軟件開發(fā)都在采用混源開發(fā)模式,其中大部分代碼都是開源的。開發(fā)者在引用開源軟件或開源組件時,準入控制的概念不強,前期對開源項目安全性、斷供等風險的評估基本為零;其次,從開源社區(qū)組織上來看,開源軟件管理相對比較松散,代碼提交門檻較低,并且很多社區(qū)項目對自身代碼安全性的關(guān)注度不足。這些因素都給軟件供應(yīng)鏈安全埋下了嚴重的安全隱患。
面對軟件供應(yīng)鏈攻擊,首先需要分析軟件的來源,不同來源的軟件攻擊防范方法差異非常大,目前可以粗略的把軟件來源分為:外部軟件和內(nèi)部自研軟件。
對于從外部供應(yīng)商采購的軟件,比如操作系統(tǒng)、辦公軟件、OA系統(tǒng),或者委托他人開發(fā)的軟件,需要考察供應(yīng)商的綜合實力、服務(wù)能力以及持續(xù)性,對交付物采用安全準入的檢查和控制措施。比如,對軟件進行成分分析,要求提交軟件物料清單(SBOM)清單,對于一些重要的系統(tǒng)軟件,除了基礎(chǔ)安全檢查之外,還需要進一步做安全測試。
外部軟件除了供應(yīng)商采購獲得,還有很多來自開源軟件,開源軟件的引用同樣需要經(jīng)過一系列的評估機制,對其安全性、健康度等各方面進行考察,以減少未來可能發(fā)生的供應(yīng)鏈攻擊。
對內(nèi)部的自研軟件有很多相應(yīng)的安全開發(fā)模型和理念,比如軟件安全開發(fā)周期(SDL)、安全軟件開發(fā)框架(SSDF)、DevSecOps等,自研軟件的企業(yè)是相對而言比較好的軟件供應(yīng)鏈安全參考模型。
此外,國家信息安全標準委員會在9月份正式發(fā)布了《信息安全技術(shù) 軟件供應(yīng)鏈安全要求》征求意見稿,也給企業(yè)在軟件供應(yīng)鏈安全方面的建設(shè)提供了一些方向性的指導(dǎo),值得參考借鑒。
02 DevSecOps是一種理念、工具還是方法論?其核心價值或能力是什么?國內(nèi)目前是否具備廣泛普及DevSecOps的基礎(chǔ)條件和市場環(huán)境?
徐鋒
DevSecOps是Gartner在2012年提出的一種理念,核心思想是盡可能地把安全無縫地、透明地集成到敏捷開發(fā)或者DevOps的開發(fā)過程中去。核心價值是在有限的成本投入以及保持業(yè)務(wù)開發(fā)敏捷性和速度的前提下,提升軟件的內(nèi)生性安全。通過什么樣的方式、手段能達到這樣的目標,可以有哪些不同的做法,需要不同企業(yè)共同探索。
DevSecOps的市場應(yīng)用依賴于敏捷開發(fā)或者DevOps的普及情況。研究數(shù)據(jù)顯示,我國目前90%的企業(yè)均不同程度地采用了敏捷開發(fā)模型或DevOps方法;還有60%的企業(yè)開始嘗試或者想要實現(xiàn)DevSecOps。從這些數(shù)據(jù)來看,國內(nèi)DevSecOps的應(yīng)用已經(jīng)開始。頭部企業(yè)和規(guī)模較大的互聯(lián)網(wǎng)公司、金融企業(yè)已經(jīng)在不斷的實踐、探索和優(yōu)化了。從國內(nèi)的普及率來看,DevSecOps正處于1到n快速推進的階段,將在近兩年快速增長。
03 構(gòu)建DevSecOps軟件開發(fā)安全體系的核心技術(shù)和支撐技術(shù)分別是什么?
徐鋒
構(gòu)建DevSecOps體系最核心的技術(shù)是安全工具鏈的建設(shè),即軟件開發(fā)過程中需要的持續(xù)應(yīng)用安全測試、賦能各種檢測類技術(shù),包括很多應(yīng)用安全測試工具,如代碼審計工具(SAST)、交互式應(yīng)用安全檢測工具(IAST)、動態(tài)測試工具(DAST)以及模糊測試工具等。這類工具針對開發(fā)軟件代碼或者軟件制品進行自動化測試,發(fā)現(xiàn)軟件漏洞的核心技術(shù)。同時,用的較多的還有軟件成分分析工具(SCA),可以從開源組件安全、知識產(chǎn)權(quán)及開源許可的角度對軟件進行安全分析。
其次是運行時應(yīng)用程序自我保護(RASP),安全編排(SOAR),響應(yīng)自動化,也是DevOps轉(zhuǎn)向DevSecOps工具鏈建設(shè)中的重要支撐。
第三是與安全防護類產(chǎn)品如統(tǒng)一的單點登陸,防火墻,WAF等互聯(lián)互通的技術(shù)。由于DevSecOps在交付過程中,要保證交付速度,很多安全測試不夠充分,會遺留一些未發(fā)現(xiàn)的或低危的漏洞。因此,DevSecOps不能完全獨立,需要與傳統(tǒng)的應(yīng)用防護類工具配合進行聯(lián)動防御。
此外,開發(fā)團隊在構(gòu)建DevSecOps過程中也離不開DevOps開發(fā)基礎(chǔ)支撐類工具的熟練應(yīng)用,具體包括代碼倉庫、制品倉庫、持續(xù)集成、持續(xù)部署、自動化測試、云原生等等。DevSecOps建設(shè)的時候,需要把上述的應(yīng)用安全檢測工具、防護能力無縫透明的融入到DevOps的基礎(chǔ)開發(fā)環(huán)境中去,也是幫助整個團隊能更輕松落地DevSecOps的一個重要方面。
當然在構(gòu)建DevSecOps的過程中,除了技術(shù)、工具以外,人、文化、流程這三大要素也是DevSecOps能力建設(shè)非常重要的核心力量。
04 與DevOps相比,DevSecOps流程上有哪些明顯區(qū)別?其中哪些環(huán)節(jié)對開發(fā)人員的挑戰(zhàn)會比較大?
徐鋒
傳統(tǒng)DevOps的參與者主要是開發(fā)和運維,安全只在即將上線時才會介入,并且安全責任只有安全團隊負責。但企業(yè)在轉(zhuǎn)向DevSecOps流程后,安全團隊需要融合進來,并且將安全開發(fā)的理念貫徹到開發(fā)的所有環(huán)節(jié)中去,比如需求階段會引入安全需求分析,設(shè)計階段會引入安全設(shè)計,編碼階段會引入安全編碼,測試階段也會引入安全驗證,最后還要經(jīng)過安全發(fā)布和安全運營。所以從這個角度來說,DevSecOps并沒有完全摒棄傳統(tǒng)的安全開發(fā)模型,而是在做安全需求分析、安全設(shè)計、安全編碼、安全驗證、安全發(fā)布和安全運營的時候,更多利用工具的高效自動化。
從抑制供應(yīng)鏈攻擊的角度來看,對于軟件自研的企業(yè)而言以下六個階段都是比較重要的,但從個人的角度來看,安全需求分析、安全設(shè)計、安全驗證這三個環(huán)節(jié)是對抑制供應(yīng)鏈攻擊更為重要的環(huán)節(jié)。
從挑戰(zhàn)來看,開發(fā)人員原來更多關(guān)注的是功能的實現(xiàn)。而目前軟件設(shè)計階段需要融入安全設(shè)計,實現(xiàn)階段需要融入安全編碼,這都需要一定的安全知識儲備,去識別應(yīng)用潛在的安全風險,并且設(shè)計出相應(yīng)的消減安全威脅的方案,對開發(fā)人員是一個比較大的挑戰(zhàn)。針對開發(fā)人員的挑戰(zhàn),在整個安全威脅識別的過程中,一般會引入威脅建模類工具,并且一般需要協(xié)調(diào)安全人員來共同承擔此階段工作。安全開發(fā)一體化平臺可以提供通用的安全設(shè)計模板及相應(yīng)的知識庫,能為開發(fā)設(shè)計人員覆蓋60%以上的安全設(shè)計需求,降低開發(fā)人員安全設(shè)計難度;對于不能通用的部分需求可以采用威脅建模的方式進行定制化設(shè)計,定制化設(shè)計可以沉淀為模板使未來的安全設(shè)計更加方便;設(shè)計完成后要由專業(yè)的安全人員審核、把關(guān)這些安全設(shè)計,使安全設(shè)計應(yīng)用更加科學完善。
安全編碼環(huán)節(jié)主要是消除不規(guī)范的代碼,難度相對安全設(shè)計低一些。通過開發(fā)人員安全編碼知識的培訓(xùn),以及安全工具對代碼檢查的反饋,就可以讓開發(fā)人員快速建立起安全編碼的能力。
從運維的角度來看,DevSecOps對交付速度要求非常高,在安全驗證階段,會更多依賴自動化工具,如果出現(xiàn)了安全漏洞,運維人員能夠快速的監(jiān)測并進行響應(yīng)處置。因此,DevSecOps在落地階段,對運維人員安全監(jiān)測和相應(yīng)處置能力會有更高的要求。此外,版本的發(fā)布和迭代又比較快,對運維人員適應(yīng)快節(jié)奏的變化過程要求也特別高。
05 軟件開發(fā)有較強的繼承性和延續(xù)性,對于目前采用DevOps開發(fā)模式的企業(yè),應(yīng)該如何過渡到DevSecOps模式中?
徐鋒
首先,安全理念的轉(zhuǎn)變,也是我們過度到DevSecOps的重要前提。在DevOps模式下,安全責任都歸屬于安全團隊,開發(fā)和運維團隊不背安全的KPI。但DevSecOps模式下,人人要為安全承擔責任,要強調(diào)全員的安全責任和共擔文化,需要團隊成員在安全意識上做一些轉(zhuǎn)變。企業(yè)一般會從諸多產(chǎn)線中找一個項目或者一個團隊來做試點,在試點團隊里面去做磨合,去做適應(yīng),解決安全、開發(fā)、運維團隊之中存在安全責任割裂的問題。
其次,選擇合適的工具,從單一團隊開始,從關(guān)鍵節(jié)點介入,逐步推廣到單一團隊的全流程,然后再去復(fù)制到其他團隊。初期建設(shè)中工具的選擇非常的重要,可以先引用一些侵入性小,見效快的工具,如IAST、SCA等,進行部分流程的試點。當大家逐步適應(yīng)部分流程的時候,再慢慢的擴展到安全需求、安全設(shè)計過程,然后貫穿到整個流程,最后再去復(fù)制到其他團隊。如果剛開始引入的工具太多,對現(xiàn)有的開發(fā)流程和開發(fā)人員的使用習慣侵入性比較大,就會出現(xiàn)集體反彈。
然后,從組織角度看,企業(yè)還需要配置相應(yīng)的崗位為安全開發(fā)能力賦能。不同規(guī)模的企業(yè)在實踐DevSecOps的時候并不是一樣的。如果更加專業(yè)、更加細分的話,需要分成獨立的安全需求分析師、獨立的安全架構(gòu)師、獨立的安全測試人員,甚至還有項目的安全顧問。這些人有些可能是通過兼職的方式,可能是專職的方式。但是這些職責也可以分散到不同團隊的不同人身上。因此,組織架構(gòu)方面可以根據(jù)企業(yè)規(guī)模來調(diào)整。
最后,建立好安全開發(fā)的流程和制度,也是DevSecOps體系建立非常重要的一個方面。比如,如何根據(jù)項目級別不同,定義安全基線、評審流程、例外處理流程等方面的相關(guān)制度。
06 您認為目前階段DevSecOps應(yīng)用的主要難點是什么?未來會呈現(xiàn)怎樣的發(fā)展趨勢?
徐鋒
目前,大部分應(yīng)用軟件的開發(fā)都在使用敏捷的方法,DevSecOps在未來將會越來越普及。
但從技術(shù)方面來看,工具鏈建設(shè)的落地還有難度。各個廠商之間或者是各個工具之間還沒有完全打通,需要各個工具廠商按項目去對接,嚴重約束了DevSecOps的發(fā)展。比如說,不同安全工具測試出來的結(jié)果,目前只能做到相互歸類和優(yōu)先級排序,用戶引入的工具越多,就需要投入越多時間去處理同一類漏洞,安全人員的工作量越來越大,效率越來越低。提升不同AST類工具組合應(yīng)用時檢測的效能、效率,不同產(chǎn)品之間不光要結(jié)果互認,更重要的是相互補強、相互驗證、與平臺持續(xù)集成以及將AST類工具的檢測結(jié)果更好的輸送給各種防護類安全產(chǎn)品。不同工具之間相互協(xié)調(diào)、相互協(xié)作、相互補充以及自動化程度能力的提升是目前DevSecOps發(fā)展過程中需要去進一步解決的問題。
在政策方面,軟件供應(yīng)鏈安全已經(jīng)上升到了國家安全的高度。網(wǎng)絡(luò)安全和數(shù)據(jù)安全相關(guān)的法律規(guī)對軟件供應(yīng)商、產(chǎn)品供應(yīng)商提供的軟件安全合規(guī)性要求越來越高,對違規(guī)處罰的力度也越來越高。這也促進了安全開發(fā)、DevSecOps的理念更加快速的落地。
從理念發(fā)展來看,DevSecOps的落地仍需要不斷探索和深化,未來需要吸取更多其它安全開發(fā)模型和框架的思想進行完善。
牛評
敏捷開發(fā)作為數(shù)字經(jīng)濟建設(shè)的重要組成部分,應(yīng)用程序成份越來越復(fù)雜,代碼安全驗證不足等問題給應(yīng)用程序安全留下了嚴重的缺口。同時,安全開發(fā)涉及了產(chǎn)業(yè)上下游,開發(fā)過程的多個環(huán)節(jié),某一個點的安全能力的增強并不能有效閉環(huán)和緩解其所面臨的軟件供應(yīng)鏈攻擊的影響。做好敏捷環(huán)境的開發(fā)安全需要人、文化、技術(shù)、流程多個方面的共同努力,但工具鏈、平臺化工具的使用體驗是改善人、文化和流程的重要約束條件,在整個供應(yīng)鏈安全能力的建設(shè)中可以起到事半功倍的效果。
更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<