安全的生命周期不是開發(fā)人員的生命周期
應(yīng)用安全公司Enso Security的首席架構(gòu)師以及聯(lián)合創(chuàng)始人,Chen Gour-Arie發(fā)現(xiàn)了創(chuàng)業(yè)的一個重要組成部分,即反思個人發(fā)展以及行業(yè)的演變。2008年,PCI-DSS成為了以色列企業(yè)不可或缺的業(yè)務(wù)元素。那時,他參與了許多最早的認證流程,也見證了許多公司在合規(guī)性方面作出的努力。
Chen的主要職務(wù)涉及與應(yīng)用相關(guān)的PCI部分,比如滲透測試。一天下午,Chen坐在以色列一家最大的醫(yī)療保健供應(yīng)商的辦公室里,回憶起曾經(jīng)審查過一份冗長且似乎永無止境的問題清單,最后非但沒有解決問題,反而其團隊變得更加困惑。最后離開辦公室的時候,剩下的問題比答案還要多,也并沒有獲得任何的見解或者有用的信息。
通過這次經(jīng)歷,Chen更加清楚地明白了一件事:安全標準所規(guī)定的內(nèi)容對于企業(yè)來說是不可行的。不僅是在2008年,即使在今天它們也仍是不現(xiàn)實的。例如,PCI-DSS標準需要全面地收集數(shù)據(jù),并對范圍內(nèi)的資產(chǎn)進行多學(xué)科的評估。業(yè)界花費了多年的時間才找到了滿足PCI-DSS標準的合適策略,即隔離PCI環(huán)境。
一個流行詞誕生了
同一時間,軟件開發(fā)安全生命周期(SSDLC)成為了業(yè)界的流行詞,而這并非巧合。要將安全整合到開發(fā)的每個階段中,其前提是:從一開始就確保安全團隊的參與,以便最大限度地避免發(fā)生錯誤并保護開發(fā)過程。由于云遷移的增加以及移動應(yīng)用的廣泛應(yīng)用,SSDLC成為了越來越多企業(yè)的首選。它甚至在DevOps大展拳腳后,仍然存活了下來。如今SSDLC已經(jīng)轉(zhuǎn)變?yōu)槲覀兘裉焖玫某掷m(xù)交付-操作循環(huán)。當(dāng)隱私保護計劃如火如荼地進行時,我們再次見證了企業(yè)掌握控制標準(如GDPR)是多么的困難。然而這一次,縮小范圍并不是一個選擇。突然間,許多企業(yè)在努力滿足新條例要求的時候,都直接受到了由于糟糕的設(shè)計和安全負債而造成的影響。
對于那些二十年來一直在“撓癢癢”和“戳應(yīng)用”的人來說,這并不奇怪。盡管初衷是好的,但是在所有項目的每個階段都實現(xiàn)安全性幾乎是不可能的,并且開發(fā)出對高級黑客(和滲透測試人員)有彈性的應(yīng)用也變得越來越困難。說實話,開發(fā)出沒有bug并且不會宕機的應(yīng)用是極具挑戰(zhàn)性的,所以監(jiān)管者以及整個行業(yè)的期望都必須得到調(diào)整。
簡單來講,企業(yè)缺乏足夠的人力資源來處理安全問題,而開發(fā)人員又過于忙碌而無暇顧及安全問題。無論是否令人感到驚訝,這個缺陷都體現(xiàn)出安全人員和開發(fā)人員之間關(guān)系的失調(diào)。
進入大腦
精英黑客,比如Solarwinds攻擊的幕后黑手,進入了開發(fā)者的思維,利用軟件開發(fā)中的弱點,進行了一個復(fù)雜的操作。入侵應(yīng)用其實就是尋找開發(fā)人員必然會犯的錯誤。
理想情況下,通過適當(dāng)?shù)呐嘤?xùn),有效的內(nèi)部溝通,注重安全性的設(shè)計以及嚴格的測試流程,這些錯誤都能被很好地控制,從而降低其所帶來的不良影響。但是,眾所周知,現(xiàn)實情況并非如此,現(xiàn)實中企業(yè)并非都能實施嚴格的防御。
許多開發(fā)者不考慮安全。他們考慮的是特性、截止日期、延展性和速度。開發(fā)者考慮生產(chǎn)事故以及宕機時間方面的事。但最重要的是,開發(fā)者是創(chuàng)造者,他們需要經(jīng)驗,獲取客戶真實的意圖,并且主動做決定來使安全融入到他們的創(chuàng)新領(lǐng)域。
安全專家經(jīng)常低估開發(fā)人員為保護應(yīng)用而作出的努力。開發(fā)人員一邊不斷實現(xiàn)應(yīng)對錯誤和失敗的不同層次的彈性,一邊不斷受到來自各個方面的困擾。而這些困擾多來自于產(chǎn)品,客戶成功,市場營銷和組織中所有利益相關(guān)者的無數(shù)需求。
狼來了
Chen曾經(jīng)有過一個項目,需要為一個擁有一千名開發(fā)人員的公司開發(fā)一個可擴展性的程序。經(jīng)過一個繁瑣的過程以及數(shù)小時的討論后,其團隊終于達成了一個安全服務(wù)級別協(xié)議。一個首席工程師笑著對Chen說:“你看,安全就喜歡中心舞臺。”他立刻明白過來:不論是無意還是有意,安全總是扮演著狼來了的角色。
另一方面,當(dāng)你向開發(fā)人員展示零日漏洞時,所有人都會大叫:“救火!”一定要撲滅它。所以,無論開發(fā)人員是否相信,有些脆弱性都已經(jīng)對業(yè)務(wù)連續(xù)性構(gòu)成了真實的潛在威脅。也就是說,無論他們承不承認,他們都需要安全感。
所以,底線結(jié)論就是:安全生命周期不是開發(fā)人員生命周期。像威脅建模和滲透測試等活動對安全級別至關(guān)重要,但是它們也需要許多難以擴展的資源。
尤其是在SSDLC模型上運行時,管理開銷會降低你的速度。另一方面,盡管利用單純的應(yīng)用安全測試自動化來收集關(guān)于軟件定量化的反饋是一個高效的策略。但是,沒有嚴格的管理以及全面的安全文化,它也不太可能會被企業(yè)采用。
安全性與軟件開發(fā)的生命周期保持一致,但是也超越了它。
盡管應(yīng)用安全不斷挑戰(zhàn)包括傳統(tǒng)應(yīng)用在內(nèi)的所有應(yīng)用,而這一點仍然成立。應(yīng)用安全跨越代碼本身來評估軟件成分,CI管道以及執(zhí)行時間。無論開發(fā)是否在內(nèi)部進行,應(yīng)用安全都會評估開發(fā)人員作出的修改,也會持續(xù)關(guān)注新的攻擊和漏洞。
應(yīng)用安全有自己的生命周期,且與開發(fā)人員的不同。
點評
盡管安全對于軟件的開發(fā)的不可或缺的,但幾乎所有的軟件開發(fā)過程都會受到安全性的“阻礙”。安全標準對于開發(fā)團隊往往是不可行的。這大多是由于安全團隊不夠了解應(yīng)用安全和企業(yè)面臨的風(fēng)險波動之間的關(guān)聯(lián)。加強開發(fā)團隊與安全團隊的溝通與協(xié)作,使其步調(diào)一致,才能更好地實現(xiàn)技術(shù)的進步以及安全風(fēng)險的管控。