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