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