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