應(yīng)用程序安全漏洞評估方法剖析

責任編輯:Lucy

2011-06-09 10:57:00

摘自:機房

面對大量可能不安全的應(yīng)用程序、有限的評估資源和難以承受的壓力,在對企業(yè)的應(yīng)用程序進行安全評估這一問題上,許多安全管理人員只能疲于應(yīng)付。

面對大量可能不安全的應(yīng)用程序、有限的評估資源和難以承受的壓力,在對企業(yè)的應(yīng)用程序進行安全評估這一問題上,許多安全管理人員只能疲于應(yīng)付。隨著應(yīng)用程序迅速成為最受惡意攻擊者青睞的載體,攻擊者試圖利用應(yīng)用程序中的漏洞破壞企業(yè)的日常業(yè)務(wù)活動,或者滲透企業(yè)的防御體系以竊取敏感數(shù)據(jù)。因此,安全管理人員應(yīng)該確保對應(yīng)用程序進行安全評估。

將對幾種應(yīng)用程序安全評估技術(shù)進行分析,并對應(yīng)用程序評估的策略范例進行比較,以進一步闡明企業(yè)應(yīng)用程序安全評估流程。

專業(yè)的應(yīng)用程序安全評估方法

對于不熟悉應(yīng)用程序安全性的人來說,下面的三種評估方法可能會令他們暈頭轉(zhuǎn)向。不過,每種方法都有其值得稱道的地方,適用于不同的評估類型。

運行時漏洞評估(Runtime Vulnerability Assessment)——運行時漏洞評估有三種方式:自動、手動和兩者結(jié)合。一般來說,與手動評估相比,自動評估的速度更快,評估的范圍更廣。但是,自動評估往往會漏掉不明顯的漏洞,也不能發(fā)現(xiàn)業(yè)務(wù)邏輯缺陷。因此,大多數(shù)經(jīng)驗豐富的應(yīng)用程序安全專家通常傾向于采用自動和手動相結(jié)合的方式。

源代碼審查(Source-Code Review)——利用源代碼審查,評估人員可以發(fā)現(xiàn)應(yīng)用程序中存在的各種漏洞,但該方法要求評估人員具有深厚的編程語言和安全功底,而且通常需要比運行時漏洞評估更長的時間。與運行時漏洞評估一樣,源代碼審查也有自動、手動和兩者結(jié)合三種方式。這些方式各有利弊,類似于運行時漏洞評估的三種方式。

威脅建模技術(shù)(Threat-Modeling Technique)——威脅建模技術(shù)主要是從設(shè)計的角度評估相關(guān)的、理論性的應(yīng)用程序威脅。通常情況下,威脅建模先于源代碼審查和運行時漏洞評估進行。

然而,選擇適當?shù)脑u估方法組合并不容易。許多企業(yè)都深受這一問題的困擾。下面我們將介紹幾種方法,以幫助企業(yè)確定適當?shù)膽?yīng)用程序安全評估流程:

1、重點論法:或許,最傳統(tǒng)的方法是集中測試資源評估公開程度最高的應(yīng)用程序,例如使用最為廣泛的面向Internet的Web應(yīng)用程序。一旦確定了公開程度最高的應(yīng)用程序,評估人員就可以對其執(zhí)行全面的自動和手動運行時漏洞評估。然而,這種方法忽略了其他雖不顯眼但卻重要的應(yīng)用程序,例如企業(yè)外部網(wǎng)應(yīng)用程序、內(nèi)部財務(wù)應(yīng)用程序和關(guān)鍵的內(nèi)部網(wǎng)站應(yīng)用程序。

需要指出的是,盡管面向Internet的應(yīng)用程序十分流行,但也往往容易受到外部攻擊。而且,由內(nèi)部威脅和客戶端漏洞引起的風險也與日俱增。因此,忽略內(nèi)部應(yīng)用程序的安全性將會導致巨大的風險。此外,許多應(yīng)用程序安全專家認為,單純的黑盒測試的效果不如源代碼審查與黑盒/灰盒評估相結(jié)合的方式。

2、兩點論法:通常情況下,當認識到重點論法帶來的風險以后,企業(yè)便會改弦更張,在較長的一段時間內(nèi)將全面的測試計劃擴展到更多的應(yīng)用程序上。我們已經(jīng)看到,有些企業(yè)聘請了滲透測試團隊,對企業(yè)的每個Web應(yīng)用程序進行測試。可以想像的到,只有少數(shù)企業(yè)有實力采用這種方法。更為重要的是,對于那些尚未被立即測試的應(yīng)用程序來說,在完成測試和漏洞修復之前,它們可能會受到攻擊,而測試和漏洞修復往往需要一年甚至更長的時間。
 

3、應(yīng)用程序風險程度分級法:一個可取的方法是根據(jù)多個因素對應(yīng)用程序的風險程度進行分級,這些因素包括基于應(yīng)用程序風險程度的各種評估技術(shù)。在開始介紹該方法之前,我們先來看一下每個應(yīng)用程序的以下方面:

應(yīng)用程序的目的:該應(yīng)用程序要用來干什么?有多少人使用它?顯然,一個電話簿應(yīng)用程序的風險程度不會高于一個財務(wù)應(yīng)用程序。

數(shù)據(jù)風險:該應(yīng)用程序是否有機密性和完整性要求?該應(yīng)用程序或運行該應(yīng)用程序的服務(wù)器是否需要提供99.999%的可用性?該應(yīng)用程序是否受任何合規(guī)性法規(guī)(例如支付卡行業(yè)數(shù)據(jù)安全標準PCIDSS、健康保險流通與責任法案HIPAA等)的影響?

架構(gòu)與設(shè)計:該應(yīng)用程序?qū)儆赪eb應(yīng)用程序還是Web服務(wù),是運行在客戶端/服務(wù)器、大型機、中間層、臺式機還是其他地方?該應(yīng)用程序是面向Internet還是企業(yè)內(nèi)網(wǎng)的?該應(yīng)用程序是使用何種程序設(shè)計語言、在什么框架下開發(fā)的?該應(yīng)用程序是否使用了任何已知的高風險組件(例如Ajax或PHP)?該應(yīng)用程序的規(guī)模大約有多大(以源代碼的行數(shù)計)?

現(xiàn)有安全功能:該應(yīng)用程序已經(jīng)具有哪些安全功能?例如,該應(yīng)用程序如何執(zhí)行身份驗證、授權(quán)、輸入驗證等?

采用這種方法,確立為上述各個因素賦以相應(yīng)的風險值的準則至關(guān)重要。例如,“面向Internet的應(yīng)用程序加25分”,“不共享數(shù)據(jù)和不與任何其他應(yīng)用程序交互的應(yīng)用程序減5分”,等等。最終的結(jié)果是,每個應(yīng)用程序獲得一個表示其風險程度的數(shù)值,你可以根據(jù)該數(shù)值對應(yīng)用程序的風險程度進行分級。需要記住的是,分析應(yīng)用程序往往十分耗時,而且難以完全準確。因此,你應(yīng)該嘗試設(shè)定一個采集應(yīng)用程序信息花費時間的上限,而不是強迫自己采集所有應(yīng)用程序的所有信息。你的評分方法應(yīng)該接受不完全準確的信息,并能夠?qū)⑦@些應(yīng)用程序的風險程度區(qū)分開來,即使你對這些應(yīng)用程序的安全性有比較透徹的了解。不要過分迷信評分系統(tǒng)——如果安全專家認為一個應(yīng)用程序的風險程度很高,而評分系統(tǒng)的結(jié)果與安全專家的意見不一致,則應(yīng)以安全專家的意見為準。

對于高風險等級的應(yīng)用程序,首先應(yīng)該對其進行威脅建模,然后進行手動和自動運行時漏洞評估與源代碼審查。對于中度風險等級的應(yīng)用程序,應(yīng)該對其進行手動和自動運行時漏洞評估與源代碼審查。對于低風險等級的應(yīng)用程序,可能只需對其進行自動運行時漏洞評估。如果時間允許,還可以對其執(zhí)行手動運行時漏洞評估。如果低風險等級應(yīng)用程序的測試結(jié)果特別糟糕,則應(yīng)該對該應(yīng)用程序進行更加全面的測試。

4、健康檢查法:一種替代常規(guī)風險程度分級法的方法是,采用手動和自動相結(jié)合的方式,對所有應(yīng)用程序執(zhí)行為期一天的短期運行時漏洞評估。在這種情況下,評估人員可以將自動掃描限制在較少的測試用例中,從而可以顯著減少掃描時間(通常約為一個小時)。為此,需要減少每種攻擊類型的測試用例的數(shù)目,例如10個跨站點腳本攻擊、10個SQL注入攻擊等等,這一點非常重要。如果采用健康檢查法,則需要對掃描結(jié)果進行審查和驗證,甚至還可能需要花費額外的時間執(zhí)行有限的手動測試。經(jīng)驗豐富的評估人員根據(jù)測試結(jié)果可以確定,究竟是優(yōu)先對該應(yīng)用程序進行額外的測試,還是將額外測試推遲到風險等級更高的應(yīng)用程序評估完成之后進行。

5、未經(jīng)身份驗證的健康檢查法:另一種健康檢查方法是不需要提供身份驗證憑據(jù),在很短的時間內(nèi)對所有應(yīng)用程序執(zhí)行為期1至2天的短期自動運行時漏洞評估。這種方法類似于腳本小子(script kiddies)和工具小子(bots)所使用的攻擊方法,例如一直困擾Web應(yīng)用程序的、臭名昭著的ASPSQL注入工具。當獲得身份驗證憑據(jù)極為困難或耗時時,可以考慮采用未經(jīng)身份驗證的健康檢查法。但需要注意的是,通過身份驗證的用戶可能導致非常嚴重的風險,而未經(jīng)身份驗證的掃描將會漏掉所有針對這些漏洞的攻擊。

那么,究竟采用什么方法最好呢?通過協(xié)調(diào)應(yīng)用程序安全評估與業(yè)務(wù)風險評估,企業(yè)可以更好地安排時間和資金。多種方法相結(jié)合的方式是最合適的:立即確定風險等級最高的一小部分應(yīng)用程序(例如公司網(wǎng)站的Web應(yīng)用程序),并對其進行全面測試。與此同時,對應(yīng)用程序風險程度進行分級,以確定應(yīng)該對哪些應(yīng)用程序執(zhí)行進一步的測試。如果測試資源允許的話,在對應(yīng)用程序風險程度分級的同時,開始執(zhí)行未經(jīng)身份驗證的健康檢查評估。采用這樣的評估流程,你可以獲得對應(yīng)用程序的全面分析和快速掃描的客觀結(jié)果,從而準確了解應(yīng)用程序的安全性。接下來的評估流程與常規(guī)的應(yīng)用程序風險程度分級法類似:先測試風險等級最高的應(yīng)用程序,再測試風險等級較低的應(yīng)用程序。

當然,評估只是整個應(yīng)用程序安全體系的一部分,接下來的重要步驟是漏洞修復。幸運的是,應(yīng)用程序風險程度分級為確定漏洞修復的優(yōu)先順序奠定了基礎(chǔ):從風險等級最高的應(yīng)用程序中風險最高的漏洞開始,依次解決各個風險等級的應(yīng)用程序中存在的漏洞。此外,優(yōu)秀的應(yīng)用程序安全評估團隊還能找出應(yīng)用程序漏洞的根源,并在軟件開發(fā)生命周期中提出修復建議,從而使應(yīng)用程序從源頭上更加安全。

需要強調(diào)的是,無論你采用何種應(yīng)用程序安全評估方法,都比對不安全的企業(yè)應(yīng)用程序引起的許多風險視而不見要好得多。

鏈接已復制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號