應(yīng)用程序安全從開發(fā)階段開始
IT是個(gè)有趣的世界,網(wǎng)絡(luò)既是商業(yè)運(yùn)作的關(guān)鍵驅(qū)動(dòng)力又是攻擊者的主要攻擊目標(biāo)。由于攻擊者到處作惡,企業(yè)們也開始更加認(rèn)真的對(duì)待應(yīng)用程序安全。根據(jù)OWASP項(xiàng)目組最近進(jìn)行的調(diào)查結(jié)果顯示,四分之一的受訪者計(jì)劃在網(wǎng)絡(luò)應(yīng)用程序安全方面增加開支。
這是個(gè)好兆頭,因?yàn)榇_實(shí)存在很多網(wǎng)絡(luò)應(yīng)用程序漏洞,不過這種狀況也引出一個(gè)問題,究竟企業(yè)應(yīng)該如何在應(yīng)用程序開發(fā)階段建設(shè)安全性。雖然在開發(fā)階段就開始建設(shè)安全性聽起來很不錯(cuò),可是實(shí)施起來去很復(fù)雜,需要良好的規(guī)劃。
根據(jù)Forrester研究所分析師Mike Gualtieri表示,很多應(yīng)用程序開發(fā)小組知道安全問題,也考慮過用戶驗(yàn)證、授權(quán)和關(guān)鍵數(shù)據(jù)加密等問題。不過這些對(duì)于他們而言,都是難題。
美國紐約州某法律事務(wù)廳的首席信息安全官,Deborah Snyder曾經(jīng)歷過因?yàn)檎`解而造成的安全問題。
“當(dāng)我第一次談?wù)摪踩_發(fā)生命周期的概念的時(shí)候,大家認(rèn)為安全只是訪問控制方面的問題,”她表示,“安全只是程序開發(fā)后加入的東西,或者說在開發(fā)后半期用于簡單控制訪問該程序或者訪問數(shù)據(jù)的東西?!?/P>
早期的時(shí)候,確實(shí)很少有人知道如何在軟件開發(fā)周期(SDLC)建立安全,但是后來大家開始了解,安全的SDLC需要適當(dāng)?shù)囊?guī)劃。 “在早期就應(yīng)該建立安全性,因?yàn)檫@樣能夠避免更多的程序漏洞問題?!?/P>
Snyder表示,在規(guī)劃階段,根據(jù)重要性和涉及的數(shù)據(jù)類型或者將要支持的交易類型,該項(xiàng)目小組開始對(duì)他們建造的系統(tǒng)或者應(yīng)用程序的重要意義有所了解。隨后會(huì)對(duì)這些進(jìn)行改進(jìn),并根據(jù)風(fēng)險(xiǎn)級(jí)別提供適當(dāng)?shù)男畔踩L問級(jí)別。
確定威脅
SDLC的關(guān)鍵部分就是威脅同步建模。在“使用威脅建模來開發(fā)更安全的應(yīng)用程序”文中,Gualtieri寫道威脅建模過程的第一步就是匯出應(yīng)用程序架構(gòu)的數(shù)據(jù)流圖(DFD)。該圖應(yīng)該能夠說明整個(gè)應(yīng)用程序的架構(gòu)組件和組件間流通的數(shù)據(jù),并描述防火墻或者對(duì)外部系統(tǒng)訪問等防御。
只有當(dāng)繪出能夠完整展現(xiàn)架構(gòu)的圖,才能進(jìn)行良好的威脅建模,例如,如果你的應(yīng)用程序存儲(chǔ)信用卡數(shù)據(jù),如果你不畫出信用卡的數(shù)據(jù)存儲(chǔ)形狀,就不能正確的為這個(gè)組件分析威脅。
最廣泛使用的威脅建模解決方案包括微軟的SDL威脅建模攻擊,而這種產(chǎn)品的市場不是特別成熟,不過威脅建模確實(shí)是很重要的。
這些攻擊有一定的局限性,包括它們使用的是預(yù)先確定的情況,無法適應(yīng)特定的針對(duì)應(yīng)用程序威脅的情況,并且不能將威脅與金融損失相聯(lián)系。
“威脅建模的潛在風(fēng)險(xiǎn)在于,將其作為一次性任務(wù)來進(jìn)行,并以此為基準(zhǔn),而不是將其作為風(fēng)險(xiǎn)管理攻擊的重要組件來納入SDLC中?!?/P>
盡管如此,威脅建模是必要的。在Sony電影娛樂公司,威脅建模過程主要是頭腦風(fēng)暴和基于已知漏洞的whiteboarding,并對(duì)不良操作采取最佳解決方案。這樣做能夠很大限度的避免漏洞?!半m然我們做得還不夠完美,不過我們開始逐漸消除各種類別的不同漏洞,很多web應(yīng)用程序漏洞是以輸入為基礎(chǔ)的,因此它們往往缺乏基本的驗(yàn)證,這也是我們要求開發(fā)人員驗(yàn)證所有進(jìn)入應(yīng)用程序架構(gòu)的東西的原因。”
存在如此多漏洞的最大原因可能是因?yàn)橛刑啻a存在。
“想想看在應(yīng)用程序中有多少SELECT語句需要進(jìn)入數(shù)據(jù)庫獲取數(shù)據(jù),”Gartner分析師Joseph Feiman表示,“可能每一個(gè)SELECT都是SQL注入攻擊的潛在對(duì)象。SELECT語句不會(huì)因此降低,需要處理的數(shù)據(jù)庫的數(shù)量也不會(huì)減少,因此,你也不能減少對(duì)數(shù)據(jù)庫的訪問,而這些也成為SQL注入攻擊的潛在目標(biāo)?!?/P>
理想的情況是,應(yīng)用程序安全需要做到這一點(diǎn),并不是安全審計(jì)員和測試者來發(fā)現(xiàn)出95%的漏洞,而是在開發(fā)階段就避免掉這些漏洞。
【編輯推薦】