軟件安全老兵的程序構(gòu)建建議
即使是最好的軟件也有漏洞,但通過(guò)在開(kāi)發(fā)周期早期階段的關(guān)鍵控制,企業(yè)可以像進(jìn)行功能測(cè)試和質(zhì)量保證一樣檢查安全漏洞?,F(xiàn)在很多企業(yè)安全人員沒(méi)有時(shí)間顧及應(yīng)用安全性,而健康保險(xiǎn)公司Aetna首席信息安全官James Routh已經(jīng)在引領(lǐng)開(kāi)發(fā)第五個(gè)軟件安全程序。
根據(jù)Routh表示,構(gòu)建軟件安全程序可以提高軟件靈活性和開(kāi)發(fā)者生產(chǎn)效率。Routh本月與Marcus Ranum分享了他學(xué)習(xí)到的從上到下部署省錢的軟件安全程序的經(jīng)驗(yàn)。他還分析了軟件安全的未來(lái):移動(dòng)應(yīng)用和開(kāi)源組件的持續(xù)擴(kuò)張會(huì)給很多企業(yè)帶來(lái)更大挑戰(zhàn)。
James,感謝你抽時(shí)間來(lái)談?wù)勡浖踩绦颉N艺J(rèn)為這是非常重要的話題,而這個(gè)話題仍然沒(méi)有得到行業(yè)足夠的重視。長(zhǎng)期以來(lái),你一直在推動(dòng)軟件安全程序的建設(shè)。你是如何做到的?是什么讓你意識(shí)到部署軟件安全程序的重要性?
James Routh:十年前,我在信息安全行業(yè)的第一個(gè)職位是美國(guó)運(yùn)通公司(American Express)的首席信息安全官。我有幸曾與Michael Barrett(PayPal前任CISO)和Mark Merkow(Charles Schwab經(jīng)紀(jì)服務(wù)軟件安全負(fù)責(zé)人)共事,他們告訴我軟件安全程序應(yīng)該引起更多關(guān)注,因?yàn)楫?dāng)時(shí)它是基于生命周期最后的簡(jiǎn)單審查過(guò)程,然而這個(gè)過(guò)程并沒(méi)有讓軟件開(kāi)發(fā)人員知道如何調(diào)整其做法來(lái)減少漏洞。
當(dāng)時(shí),大多數(shù)新開(kāi)發(fā)都是Web應(yīng)用。我意識(shí)到攻擊面越來(lái)越大,而我想要避免安全事故(當(dāng)時(shí)避免事故似乎還是可能的事情),所以我開(kāi)始教育應(yīng)用開(kāi)發(fā)人員加強(qiáng)編碼做法的安全性。
我覺(jué)得我比他們學(xué)到了更多東西。開(kāi)發(fā)人員及其項(xiàng)目領(lǐng)導(dǎo)將安全控制視為開(kāi)發(fā)過(guò)程中的障礙,阻止他們完成真正的工作,并且,他們沒(méi)有預(yù)算來(lái)應(yīng)付發(fā)現(xiàn)安全漏洞后的修復(fù)工作。我的部署做法讓我非常受益,但并沒(méi)有讓他們同樣受益。
在我離開(kāi)后,Mark后來(lái)想到了如何給開(kāi)發(fā)人員提供應(yīng)有的培訓(xùn)。而我隨后去了美國(guó)存管信托和結(jié)算公司(Depository Trust & Clearing Corporation,DTCC),在DTCC,我意識(shí)到提高軟件靈活性的重要性,這樣做可以避免業(yè)務(wù)中斷和數(shù)據(jù)泄漏事故,要知道這些事故可能影響全球?qū)鹑谑袌?chǎng)的信心。在那里,我調(diào)整了我的方法,并得到CEO和CIO的支持,我部署了全面的安全軟件程序,我的程序是基于盡可能簡(jiǎn)單的前提,即“較少漏洞的軟件需要更低的支持費(fèi)用,以及在生命周期的較早期發(fā)現(xiàn)漏洞需要更少的時(shí)間來(lái)修復(fù)”。我還比較了通過(guò)《在成熟模型中構(gòu)建安全》(BSIMM)知識(shí)體系部署的做法。這讓我可以對(duì)比其他8家投資于軟件安全程序的公司(例如微軟)所部署控制的成熟度。
這種經(jīng)驗(yàn)幫助我了解到如何基于經(jīng)濟(jì)利益為程序獲得高管的支持,同時(shí)讓他們投資于開(kāi)發(fā)者培訓(xùn)。我能夠測(cè)量漏洞密度方面的減少,而開(kāi)發(fā)人員可以在開(kāi)發(fā)過(guò)程使用靜態(tài)分析工具,以及學(xué)會(huì)如何避免漏洞。我學(xué)習(xí)到的是,開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)的安全漏洞必須優(yōu)先處理和修復(fù),同時(shí),整合安全漏洞與功能缺陷以及發(fā)現(xiàn)高風(fēng)險(xiǎn)漏洞可以讓開(kāi)發(fā)團(tuán)隊(duì)更容易地分配修復(fù)漏洞的責(zé)任。
現(xiàn)在我仍然在使用經(jīng)濟(jì)利益來(lái)說(shuō)服企業(yè)部署成熟軟件安全程序,并且我發(fā)現(xiàn),應(yīng)用開(kāi)發(fā)人員已經(jīng)意識(shí)到盡早發(fā)現(xiàn)漏洞以及提高軟件靈活性的重要性。在摩根大通,我向全球17000位開(kāi)發(fā)人員教授軟件安全控制,而他們非常樂(lè)于學(xué)習(xí)更有效的方法用以開(kāi)發(fā)系統(tǒng)。我建立了一個(gè)模型,向選定的開(kāi)發(fā)人員提供軟件安全方面的全面培訓(xùn),同時(shí),他們會(huì)幫助其他開(kāi)發(fā)人員部署技術(shù)來(lái)減少漏洞。在Aetna,我們稱他們?yōu)榘踩珜<遥ǔS伤麄儊?lái)執(zhí)行關(guān)鍵控制。
你能告訴我們你在Aetna是如何進(jìn)行軟件開(kāi)發(fā)的嗎?
James Routh:目前軟件開(kāi)發(fā)已經(jīng)發(fā)展到這樣的情況:大多數(shù)定制應(yīng)用開(kāi)發(fā)會(huì)從使用開(kāi)源資源開(kāi)始,所以,我添加了一個(gè)控制來(lái)強(qiáng)制使用選定的開(kāi)源框架,這些開(kāi)源框架的選擇是基于對(duì)庫(kù)的安全風(fēng)險(xiǎn)的掃描結(jié)果的;我還有一些很酷的針對(duì)移動(dòng)應(yīng)用的新功能,用以應(yīng)對(duì)移動(dòng)應(yīng)用分發(fā)系統(tǒng)中的特有的安全風(fēng)險(xiǎn)。
總是有些人反對(duì)軟件安全程序。我肯定你也聽(tīng)到過(guò)他們的反對(duì)意見(jiàn),他們常說(shuō):我們不能慢下來(lái),我們不能受到限制。你如何應(yīng)對(duì)這些反對(duì)意見(jiàn)?
James Routh:人們真的很難會(huì)反對(duì)省錢、提高質(zhì)量和降低風(fēng)險(xiǎn)的程序。我擺出了簡(jiǎn)單的事實(shí),說(shuō)明每個(gè)屬性和承諾,這件事情我常常做,所以比較容易。現(xiàn)在開(kāi)發(fā)人員并沒(méi)有異議,但項(xiàng)目經(jīng)理仍然怨聲載道,他們還沒(méi)有明白這樣做的好處。我現(xiàn)在使用的很多移動(dòng)應(yīng)用工具并不知名,所以我通常是從不熟悉它們的移動(dòng)開(kāi)發(fā)人員那里獲得反饋。在這些情況下,我只是使用行業(yè)可用的數(shù)據(jù)來(lái)說(shuō)明攻擊者可以非常容易地感染移動(dòng)應(yīng)用,以及通過(guò)二級(jí)渠道傳播它?,F(xiàn)在發(fā)現(xiàn)的大多數(shù)漏洞都是移動(dòng)軟件分發(fā)過(guò)程受到攻擊的結(jié)果。
底線是,當(dāng)你使用經(jīng)濟(jì)利益作為推動(dòng)因素時(shí),推動(dòng)軟件安全程序會(huì)變成簡(jiǎn)單的工作。成功部署程序更多是關(guān)于改變行為,而不是部署技術(shù),因此,我們將安全作為軟件質(zhì)量的屬性重新明確了開(kāi)發(fā)領(lǐng)導(dǎo)者的角色(掌握過(guò)程和結(jié)果),而安全部門則負(fù)責(zé)設(shè)計(jì)控制和衡量有效性,這主要也是為了有助于開(kāi)發(fā)領(lǐng)導(dǎo)者的工作。
讓我驚訝的事情是你在使用數(shù)據(jù)指標(biāo),而不只是口頭上說(shuō),“這是我們應(yīng)該做的事情”,你可以解釋它如何能節(jié)省資金來(lái)避免損失和周期外維護(hù)。你能否告訴我你的數(shù)據(jù)指標(biāo)有哪些?
James Routh:當(dāng)安全控制部署到開(kāi)發(fā)過(guò)程時(shí),主要有兩個(gè)提高生產(chǎn)效率的基本驅(qū)動(dòng)力:首先,企業(yè)安全API(Enterprise Security API)等框架和開(kāi)源組件選擇及靜態(tài)分析工具,可以防止漏洞進(jìn)入應(yīng)用構(gòu)建過(guò)程,這消除了修復(fù)漏洞和缺陷的成本。其次,與在生產(chǎn)過(guò)程中發(fā)現(xiàn)漏洞相比,在質(zhì)量保證中檢測(cè)到漏洞,然后修復(fù)高優(yōu)先級(jí)的缺陷,在時(shí)間方面更節(jié)省時(shí),且成本更低。
我計(jì)算了修復(fù)生產(chǎn)后期漏洞所需時(shí)間(高度復(fù)雜漏洞修復(fù)=8小時(shí);中等復(fù)雜程度=4小時(shí);簡(jiǎn)單修復(fù)=2小時(shí)),并比較開(kāi)發(fā)過(guò)程中修復(fù)漏洞所需時(shí)間,然后乘以高風(fēng)險(xiǎn)漏洞的數(shù)量。我使用每小時(shí)標(biāo)準(zhǔn)恢復(fù)量作為成本,例如125美元,這是FTE開(kāi)發(fā)人員(供應(yīng)商和第三方顧問(wèn)公司進(jìn)行開(kāi)發(fā))的行業(yè)平均每小時(shí)成本。其結(jié)果是,除了將漏洞修復(fù)從生產(chǎn)后期轉(zhuǎn)移到質(zhì)量保證或生產(chǎn)前期節(jié)省的成本外,這樣做還可以“提高生產(chǎn)效率”。而通過(guò)消除或減少修復(fù)漏洞的工作所節(jié)省的開(kāi)發(fā)時(shí)間還可以重新投資于在更少時(shí)間內(nèi)提供更多功能。
我不明白的是,為什么很少高管像你這樣“懂”。你認(rèn)為我們可以怎樣做來(lái)提高對(duì)這個(gè)話題的理解?在過(guò)去15年,我們看到很多“滲透和修復(fù)”,以及各大軟件供應(yīng)商不斷推出修復(fù)補(bǔ)丁,如果這不是危險(xiǎn)的信號(hào),那是什么?我們可以做些什么?
James Routh:70多家公司現(xiàn)在使用BSIMM數(shù)據(jù)衡量其軟件安全程序的成熟度,軟件安全的知識(shí)體系已經(jīng)明顯改善。你問(wèn)我為什么領(lǐng)導(dǎo)們很少明白這一點(diǎn),這是很合理的問(wèn)題,我的觀點(diǎn)是,很多人明白軟件安全的經(jīng)濟(jì)推動(dòng)因素,并且跨行業(yè)部署了更有效的控制。我們比十年前更懂得軟件安全做法,我在這里與你分享的信息其實(shí)已經(jīng)公開(kāi)化。
在推出補(bǔ)丁修復(fù)的很多軟件廠商中,他們也有成熟的軟件安全程序,包括微軟、Adobe Systems和EMC等?,F(xiàn)實(shí)情況是,完美和軟件并沒(méi)有關(guān)系,我們總是會(huì)有機(jī)會(huì)來(lái)發(fā)現(xiàn)和提高軟件漏洞。
我們正在嘗試新的東西,我們將所有控制部署到web應(yīng)用,并且基本上眾包了應(yīng)用的滲透測(cè)試來(lái)查看應(yīng)用的情況。這意味著軟件研究人員將會(huì)執(zhí)行滲透測(cè)試,并與我們分享其結(jié)果。
我非常希望在這個(gè)過(guò)程中發(fā)現(xiàn)新的漏洞,盡管在此之前對(duì)相同軟件版本已經(jīng)執(zhí)行了幾十次測(cè)試。這也有可能幫助我了解我們開(kāi)發(fā)過(guò)程中部署的很多控制正在如何執(zhí)行以及哪里有改進(jìn)的機(jī)會(huì)。隨著時(shí)間的推移,我們還會(huì)追蹤漏洞密度,這些數(shù)據(jù)清楚地顯示了開(kāi)發(fā)人員的顯著改進(jìn),因?yàn)樗麄兪褂昧烁玫墓ぞ邅?lái)發(fā)現(xiàn)開(kāi)發(fā)中的漏洞。
只要我們構(gòu)建軟件,在這個(gè)過(guò)程中就會(huì)發(fā)現(xiàn)漏洞以及提高其質(zhì)量的機(jī)會(huì)。顯然,投資于質(zhì)量改進(jìn)可以獲得更好的經(jīng)濟(jì)性,但軟件的完善將仍然還有很長(zhǎng)的一段路要走。