拒絕“馬后炮”:積極的應(yīng)用程序安全需要四大要素
攻擊者在成功利用了漏洞后,因跨站腳本攻擊和SQL注入攻擊而造成的安全事件已經(jīng)不再是什么新鮮事兒了。為了防止此類(lèi)攻擊的發(fā)生,安全團(tuán)隊(duì)是否還抱著準(zhǔn)備“亡羊補(bǔ)牢”的心態(tài)?
高效的安全項(xiàng)目和團(tuán)隊(duì)不僅應(yīng)當(dāng)提供反應(yīng)性的措施,而且還要積極地與內(nèi)部的信息團(tuán)隊(duì)協(xié)作,構(gòu)建“先發(fā)制人”的軟件安全。信息系統(tǒng)和軟件代碼的有效安全項(xiàng)目往往依靠?jī)煞N自動(dòng)的安全測(cè)試:靜態(tài)安全掃描測(cè)試和動(dòng)態(tài)安全掃描測(cè)試。
靜態(tài)掃描一般在代碼的開(kāi)發(fā)期間進(jìn)行。此過(guò)程借助威脅建模和分析,對(duì)靜態(tài)代碼進(jìn)行掃描,從而發(fā)現(xiàn)安全漏洞。動(dòng)態(tài)掃描是對(duì)工作環(huán)境中的實(shí)際代碼進(jìn)行的掃描,它在代碼運(yùn)行期間查找漏洞。還有第三類(lèi)測(cè)試,即人工滲透測(cè)試,它主要通過(guò)白帽分析進(jìn)行人為干預(yù)。真正有效的應(yīng)用程序安全項(xiàng)目利用所有的安全掃描測(cè)試,其中靜態(tài)安全和動(dòng)態(tài)安全掃描要深入到應(yīng)用程序的開(kāi)發(fā)過(guò)程中,并在必要時(shí)使用人工滲透測(cè)試。
有效的自動(dòng)代碼掃描策略必須與IT的開(kāi)發(fā)團(tuán)隊(duì)無(wú)縫對(duì)接。真正有效的自動(dòng)安全項(xiàng)目的關(guān)鍵成功因素是,要求IT開(kāi)發(fā)團(tuán)隊(duì)付出的額外工作達(dá)到最少。在應(yīng)用程序的開(kāi)發(fā)周期之外的代碼掃描會(huì)占用開(kāi)發(fā)時(shí)間,會(huì)被認(rèn)為是額外的不受歡迎的任務(wù)。
企業(yè)在成功利用安全代碼掃描項(xiàng)目時(shí),面臨的主要障礙是:
人工掃描
要求通過(guò)API或通過(guò)Web入口人工上傳代碼的代碼掃描,都要求額外的開(kāi)發(fā)時(shí)間和工作。有時(shí),還要求專(zhuān)門(mén)的編譯指令,而且為使掃描運(yùn)行,還需要特定的軟件版本。
人工過(guò)程
開(kāi)發(fā)周期之外的代碼掃描需要建立一個(gè)掃描的時(shí)間表和再次掃描的持續(xù)時(shí)間。企業(yè)需要專(zhuān)用資源來(lái)管理項(xiàng)目,設(shè)置提醒,并按照規(guī)定日期完成掃描。
代碼范圍
誰(shuí)都無(wú)法測(cè)試不知道的東西。開(kāi)發(fā)周期之外的測(cè)試要求開(kāi)發(fā)者上傳代碼,而且它依賴(lài)開(kāi)發(fā)者上傳正確的代碼進(jìn)行靜態(tài)的代碼掃描。要驗(yàn)證所有的庫(kù)和代碼都能夠正確上傳對(duì)于維持程序安全性的團(tuán)隊(duì)來(lái)說(shuō)是幾乎不可能的任務(wù)。
真正有效的應(yīng)用程序靜態(tài)代碼掃描和動(dòng)態(tài)代碼掃描項(xiàng)目有四大要素:
1、本地掃描
鏈接到源控制系統(tǒng)的本地掃描項(xiàng)目現(xiàn)在已經(jīng)不需要開(kāi)發(fā)者花費(fèi)時(shí)間找到代碼、進(jìn)行專(zhuān)門(mén)編譯、上傳代碼了。正相反,代碼的正確位置是在源控制樹(shù)中選擇的,而且可以為所有的子文件執(zhí)行常規(guī)掃描。本地的動(dòng)態(tài)掃描解決方案還可以使動(dòng)態(tài)掃描更容易,因?yàn)榘踩珜?zhuān)家不需要為掃描測(cè)試供應(yīng)商的外部工具變更防火墻規(guī)則就可以訪問(wèn)測(cè)試網(wǎng)站。
2、連續(xù)掃描
可以設(shè)置本地系統(tǒng)進(jìn)行連續(xù)掃描,這種掃描不要求人工干預(yù)和上傳代碼。還可以配置本地系統(tǒng)進(jìn)行更頻繁的掃描。
3、與開(kāi)發(fā)周期緊密集成
與源控制和建設(shè)系統(tǒng)高度集成的掃描項(xiàng)目可以使代碼掃描充分利用許多源控制和建設(shè)系統(tǒng)的特性。例如,在開(kāi)發(fā)者的程序版本與主代碼庫(kù)進(jìn)行集成之前,高級(jí)開(kāi)發(fā)團(tuán)隊(duì)可以配置建設(shè)系統(tǒng),用以傳遞某些測(cè)試入口。我們可以設(shè)置代碼的安全掃描測(cè)試,使其成為類(lèi)似于性能測(cè)試或單元測(cè)試的測(cè)試入口。
4、與缺陷跟蹤系統(tǒng)緊密集成
現(xiàn)代的源控制和建設(shè)系統(tǒng)還應(yīng)與缺陷跟蹤系統(tǒng)緊密集成,只有這樣,軟件缺陷就可以與特定的代碼版本聯(lián)系起來(lái)。如果一個(gè)代碼掃描項(xiàng)目能夠自動(dòng)創(chuàng)建當(dāng)前缺陷管理系統(tǒng)的缺陷,就可以節(jié)約并無(wú)縫地集成到團(tuán)隊(duì)的缺陷庫(kù)中。
有效的主動(dòng)安全要求代碼掃描盡可能平穩(wěn)地影響應(yīng)用程序的開(kāi)發(fā)過(guò)程。安全掃描在運(yùn)行時(shí)越類(lèi)似目前的開(kāi)發(fā)過(guò)程,開(kāi)發(fā)團(tuán)隊(duì)就越容易成功地連續(xù)地采用安全掃描。