應用程序安全測試的制作方法
【專利說明】
【背景技術】
[0001]軟件安全測試用于識別應用程序(如網頁應用程序)中的漏洞。對基于網頁的軟件的傳統(tǒng)黑盒安全測試通過使用通常稱為掃描器的安全測試應用程序進行工作,掃描器以攻擊者的身份出現。在黑盒方法中,掃描器通過進行HTTP請求并且評價HTTP響應或響應缺失以找出待測應用程序(AUT)接受輸入的所有URL,對AUT進行評估。AUT接受輸入的URL可以被稱作AUT的攻擊面。然后,根據該攻擊面及可能的漏洞類別,掃描器生成攻擊。掃描器施加這些攻擊,以通過評價程序的HTTP響應來診斷漏洞的存在或不存在。
【附圖說明】
[0002]下面的詳細描述參照附圖,其中:
[0003]圖1是根據一個示例的、能夠通過確定和修改不安全的執(zhí)行來修改待測應用程序的執(zhí)行的計算系統(tǒng)的框圖;
[0004]圖2是根據一個示例的、示出能夠修改待測應用程序的執(zhí)行的測試系統(tǒng)配置的框圖;
[0005]圖3是根據一個示例的、示出基于安全性修改待測應用程序的操作的示例的框圖;
[0006]圖4是根據一個示例的、用于基于待測應用程序的執(zhí)行的安全性來修改待測應用程序的執(zhí)行的方法的流程圖;以及
[0007]圖5是根據一個示例的、能夠響應于安全測試動作而基于安全性修改待測應用程序的計算設備的框圖。
【具體實施方式】
[0008]本文描述的實施例提供用于執(zhí)行應用程序(如網頁應用程序)的測試的技術。當公司想知道該公司生產中的或即將付諸生產的網頁應用程序有多安全時,該公司通常使用安全測試方案,如滲透測試方案(例如,使用掃描器)、模糊測試、漏洞測試、軟件安全測試、網站安全測試及其結合等等。該公司可能希望使用生產中的應用程序的副本作為待測應用程序(AUT)。使用生產中的應用程序或即將付諸生產的應用程序去作測試的原因是:該公司可能想要測試同樣的代碼。在質量保證階段使用即將成為生產中的應用程序的AUT,確保在生產中使用的應用程序已被測試。在本說明書全文中提到了掃描器,然而應當注意,可以類似地使用其它測試方案。
[0009]在動態(tài)網頁應用程序掃描期間,掃描器模擬利用該應用程序工作的用戶的動作,來發(fā)現應用程序攻擊面并對所發(fā)現的攻擊向量執(zhí)行大量攻擊。由于掃描器不知道該掃描器正在測試的應用程序的邏輯,所以那些操作中的一些可能有害于AUT或其環(huán)境。
[0010]在一個示例中,在企業(yè)應用程序的掃描期間,一旦掃描器發(fā)現“聯系我們”頁面,該應用程序就可以向各個員工發(fā)送多封電子郵件。然而,在掃描器的角度看來,該測試僅是另一超文本傳輸協議(HTTP)POST攻擊向量。
[0011]在另一示例中,拒絕服務(DoS)攻擊的目的是為了使應用程序掛起或崩潰。滲透測試方案想要找出這些漏洞,并且通過發(fā)出能使應用程序崩潰的這些攻擊來進行尋找。當成功時,該應用程序崩潰或掛起,這有損于進一步的測試。
[0012]掃描的危險和破壞性屬性可能導致顧客將大量時間花費在待測應用程序的沙箱測試(sandboxing)。由于應用程序的內部復雜性和缺少對其功能性的完整了解,這可能是不成功的。在每次掃描后將應用程序復原至其原始狀態(tài)的任務可能是耗時的,并且在此過程期間的任何錯誤都可能導致掃描之間的不一致,從而把漏洞報告的顧客弄糊涂。此外,如果安全測試破壞了 AUT的狀態(tài),那么測試可能例如由于AUT崩潰、變得無響應、應用程序邏輯被攻擊扭曲等而過早地失敗。因此,安全測試可能不能發(fā)現AUT的重要漏洞,這是因為AUT可能在執(zhí)行這樣的測試以前就失敗。
[0013]因此,本文介紹的方法的益處可能包括固定進行中的DoS問題但仍將問題報告給測試方案,并且動態(tài)地修改AUT的執(zhí)行來防止AUT執(zhí)行被認為不安全的動作。該方法可以保證該應用程序保持并運行,同時其仍指出攻擊者可以如何利用該應用程序中的任何問題。其它有危害的或不安全的操作可以包括抹掉數據庫記錄、修改數據庫記錄、利用在應用程序爬行(crawling)和審核期間創(chuàng)建的多個記錄污染數據庫、利用服務器側文件系統(tǒng)的意料外操作、服務器側資源(例如,可用插槽)的耗盡等。
[0014]AUT可以運行于實時修改器環(huán)境中。因此,可以改變或修改AUT內的函數的結果。例如,通過在應用程序中插裝應用程序編程接口(API),可以在進行中修改AUT的行為。例如,如果調用不安全的程序,那么實時修改器可以模擬該程序的執(zhí)行,而實際上不執(zhí)行危險的操作。在特定示例中,實時修改器的環(huán)境可以訪問由AUT使用的API。實時修改器方案的示例可以促進包括Java和.NET框架的實現。這些框架可以用于向開發(fā)者提供數據庫、電子郵件和通信服務。
[0015]圖1是根據一個示例的、能夠通過確定和修改不安全的執(zhí)行來修改待測應用程序的執(zhí)行的計算系統(tǒng)的框圖。該系統(tǒng)通常用附圖標記100指示。本領域技術人員應理解,圖1中示出的功能塊和設備可以包括含有電路的硬件組件、含有存儲在非瞬態(tài)機器可讀介質上的計算機代碼的軟件組件或硬件組件和軟件組件二者的結合。此外,該配置不局限于圖1中所示出的那種,如可以在本發(fā)明的實施例中使用任意數量的功能塊和設備。本領域技術人員基于對特定電子設備的設計考慮,將能夠容易限定特定功能塊。
[0016]如圖1中圖示的,系統(tǒng)100可以包括計算設備102,計算設備102可以包括通過總線106與像顯示器108這樣的呈現設備、鍵盤110以及諸如鼠標、觸摸屏或鍵盤之類的一個或多個輸入設備112連接的處理器104。在實施例中,計算設備102是通用計算設備,例如臺式機、便攜式計算機、服務器等等。計算設備102還可以具有一種或多種非瞬態(tài)計算機可讀介質,如可以在各種操作程序(包括本發(fā)明的實施例中使用的操作程序)執(zhí)行期間使用的存儲器114。存儲器114可以包括只讀存儲器(R0M)、隨機存取存儲器(RAM)等等。計算設備102還可以包括其它非瞬態(tài)計算機可讀介質,如長期存儲操作程序和數據(包括在本發(fā)明的實施例中使用的操作程序和數據)的儲存器系統(tǒng)116。
[0017]在實施例中,計算設備102包括網絡接口控制器(NIC) 118,網絡接口控制器(NIC) 118用于將計算設備102連接至服務器120。計算設備102可以通過諸如互聯網、局域網(LAN)、廣域網(WAN)或其它網絡構造之類的網絡通信地聯接至服務器120。服務器120可以具有用于存儲數據、緩沖通信以及存儲服務器120的操作程序的非瞬態(tài)計算機可讀介質,如存儲設備。可以利用像超文本傳輸協議(HTTP)在內的請求-響應協議或另一 API進行計算設備102與服務器120之間的通信。
[0018]服務器120可以是主管AUT 124的應用程序服務器。服務器120還包括實時修改器126,實時修改器126能夠監(jiān)視和/或修改AUT 124的執(zhí)行。在特定示例中,實時修改器126擔當供AUT 124執(zhí)行的環(huán)境。可以利用諸如.NET框架、Java虛擬機或其它類似引擎之類的軟件框架實現實時修改器126。在其它示例中,可以使用面向方面編程或其它軟件。在一些示例中,服務器可以被實現為計算設備,如計算設備500、便攜式計算機、臺式計算機、工作站或其它計算設備。
[0019]在一個示例中,使用Java虛擬機規(guī)范(instrumentat1n)。API調用儀器可以用于監(jiān)視和/或管理被調用的API。這里,當調用特定API或特定一組API時,該儀器可以將代碼、變量等替換為AUT 124的執(zhí)行和/或以其它方式修改AUT 124的執(zhí)行。例如,如果調用API的一部分,則可以執(zhí)行與實時修改器相關聯的代碼,以幫助選擇期望路徑。類