應(yīng)用程序安全測試的制作方法
【專利摘要】本公開提供一種系統(tǒng),其包括主管被測試的應(yīng)用程序(AUT)的服務(wù)器,被配置為監(jiān)控由AUT執(zhí)行的指令的觀測器,和通過公共的通信信道被通信地耦合到AUT和觀測器的計(jì)算裝置。計(jì)算裝置可以被配置為發(fā)送應(yīng)用程序請求到AUT,其中應(yīng)用程序請求被配置為暴露AUT的潛在的漏洞。計(jì)算裝置可以根據(jù)AUT的編程從AUT接收應(yīng)用程序響應(yīng)。計(jì)算裝置可以發(fā)送服務(wù)請求到觀測器,并且從觀測器接收服務(wù)響應(yīng),其包含對應(yīng)于由于應(yīng)用程序請求由AUT執(zhí)行的指令的信息,關(guān)于AUT的信息,或者關(guān)于主管AUT的服務(wù)器的信息。
【專利說明】應(yīng)用程序安全測試
【背景技術(shù)】
[0001]軟件安全測試被用來識別應(yīng)用程序(例如Web應(yīng)用程序)中的漏洞。用于基于Web的軟件的傳統(tǒng)黑盒子安全測試通過使用安全測試應(yīng)用程序來工作,經(jīng)常被稱作掃描儀,其偽裝成攻擊者。在黑盒子方法中,掃描儀通過作出HTTP請求并估計(jì)HTTP響應(yīng)來探查被測試的應(yīng)用程序(AUT)以便找到所有URL(在此處AUT接受輸入)。AUT在此處接受輸入的URL可以涉及AUT的攻擊表面。于是掃描儀基于攻擊表面和可能的漏洞類別生成攻擊。掃描儀通過估計(jì)程序的HTTP響應(yīng)來應(yīng)用攻擊以診斷漏洞的存在或不存在。在黑盒子方法中,掃描儀對AUT的內(nèi)部工作不具有任何洞察力。
[0002]黑盒子漏洞測試在概念上是易懂的,但是在實(shí)踐中其提出ー些挑戰(zhàn)。例如,探査AUT可能不掲示所有攻擊表面,因此掃描儀可能不對AUT易受傷害的所有地方發(fā)起攻擊。另夕卜,一些漏洞不能通過在HTTP響應(yīng)中返回的信息被準(zhǔn)確地識別。如果掃描儀未發(fā)現(xiàn)漏洞,掃描儀就不能提供關(guān)于漏洞在AUT的代碼內(nèi)何處的信息。此外,掃描儀可以報(bào)告都與在AUT中相同潛在的問題相關(guān)的幾個(gè)漏洞,引起程序員設(shè)法修補(bǔ)漏洞以完成大量的重復(fù)工作。
【專利附圖】
【附圖說明】
[0003]在下面詳細(xì)的描述中并且參考附圖來描述某些實(shí)施例,其中:
圖1是根據(jù)實(shí)施例的可以被用來進(jìn)行灰盒子安全測試的系統(tǒng)的框圖;
圖2是示出根據(jù)實(shí)施例的用于進(jìn)行灰盒子安全測試的測試系統(tǒng)配置的框圖;
圖3是根據(jù)實(shí)施例的執(zhí)行灰盒子安全測試的方法的過程流程圖;和圖4是示出根據(jù)實(shí)施例的存儲被配置為進(jìn)行灰盒子安全測試的代碼的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)的框圖。
【具體實(shí)施方式】
[0004]在本文描述的實(shí)施例提供用于執(zhí)行Web應(yīng)用程序的灰盒子安全測試的技術(shù)。在灰盒子安全測試中,在本文中被稱作觀測器的軟件程序被用來觀察由AUT執(zhí)行的內(nèi)部操作。觀測器使得掃描儀能夠確定AUT的操作和其響應(yīng)攻擊如何表現(xiàn)。觀測器也使得掃描儀能夠確定AUT響應(yīng)于正常應(yīng)用程序請求的行為,掃描儀可以使用其來確定發(fā)送何種類型的攻擊。掃描儀繼續(xù)向AUT傳遞攻擊,并且掃描儀從觀測器接收AUT的內(nèi)部工作的知識。這樣,掃描儀能找到更多漏洞并且產(chǎn)生更好的漏洞報(bào)告,從而提供基于web的應(yīng)用程序的更加全面和詳細(xì)的軟件安全測試。
[0005]根據(jù)實(shí)施例,在觀測器和掃描儀之間提供通信信道。掃描儀使用這個(gè)通信信道來在其掃描期間深入了解AUT。可以通過使用已經(jīng)由AUT使用的通信信道來實(shí)施在掃描儀和觀測器之間的通信信道。這樣,進(jìn)行測試的人不必執(zhí)行另外的配置或者設(shè)置工作,并且通信信道不干擾AUT或者在其上運(yùn)行AUT的計(jì)算機(jī)系統(tǒng)的正常操作。本發(fā)明的另外的益處可以參照下面提供的描述而被更好地理解。
[0006]圖1是根據(jù)實(shí)施例的可被用來進(jìn)行灰盒子安全測試的系統(tǒng)的框圖。系統(tǒng)通常由參考數(shù)字100來指代。本領(lǐng)域普通技術(shù)人員將領(lǐng)會(huì)到在圖1中示出的功能塊和裝置可以包括包含電路的硬件元件,包含在非暫時(shí)性機(jī)器可讀介質(zhì)上存儲的計(jì)算機(jī)代碼的軟件元件,或者硬件和軟件元件兩者的結(jié)合。此外,配置不局限于在圖1中示出的配置,因?yàn)樵诒景l(fā)明的實(shí)施例中可以使用任何數(shù)目的功能塊和裝置?;趯唧w電子裝置的涉及考慮,本領(lǐng)域普通技術(shù)人員將容易地能夠定義具體的功能塊。
[0007]如在圖1中所示,系統(tǒng)100可以包括計(jì)算裝置102,其通常將包括通過總線106連接到顯示器108的處理器104,鍵盤110,和一個(gè)或多個(gè)輸入裝置112,例如鼠標(biāo),觸摸屏,或鍵盤。在實(shí)施例中,計(jì)算裝置102是通用計(jì)算裝置,例如臺式計(jì)算機(jī),膝上型計(jì)算機(jī),服務(wù)器等。計(jì)算裝置102也可以具有一種或多種類型的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),例如可以在各種操作程序(包括在本發(fā)明的實(shí)施例中使用的操作程序)的執(zhí)行期間使用的存儲器114。存儲器114可以包括只讀存儲器(R0M),隨機(jī)存取存儲器(RAM)等。裝置102也可以包括其它非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),例如用于操作程序和數(shù)據(jù)(包括在本發(fā)明的實(shí)施例中使用的操作程序和數(shù)據(jù))的長期存儲的存儲系統(tǒng)116。
[0008]在實(shí)施例中,計(jì)算裝置102包括網(wǎng)絡(luò)接ロ控制器(NIC) 118,用于將裝置102連接到服務(wù)器120。計(jì)算裝置102可以通過網(wǎng)絡(luò)122,例如因特網(wǎng),局域網(wǎng)(LAN),廣域網(wǎng)(WAN),或者其它網(wǎng)絡(luò)配置被通信地耦合到服務(wù)器120。服務(wù)器120可以具有非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),例如存儲裝置,用于存儲數(shù)據(jù),緩沖通信,和存儲服務(wù)器120的操作程序??梢允褂谜埱箜憫?yīng)協(xié)議例如超文本傳輸協(xié)議(HTTP)來進(jìn)行在裝置102和服務(wù)器120之間的通信。
[0009]服務(wù)器120可以是主管AUT 124的應(yīng)用程序服務(wù)器。服務(wù)器120也包括在執(zhí)行期間監(jiān)控AUT 124的觀測器126。計(jì)算裝置102可以包括對AUT 124執(zhí)行安全測試的掃描儀128。例如,掃描儀128可以通過網(wǎng)絡(luò)122發(fā)送HTTP請求到AUT 124,其中HTTP請求被配置為嘗試暴露AUT 124的漏洞。HTTP請求可以包括HTTPS請求,其將超文本傳輸協(xié)議與SSL(安全套接層)和TLS (傳輸層安全)協(xié)議結(jié)合以提供加密通信并且確保網(wǎng)絡(luò)Web服務(wù)器的識另IJ。在由AUT 124的HTTP請求的處理期間,觀測器126監(jiān)控由AUT 124執(zhí)行的內(nèi)部過程。例如,觀測器126可以識別由AUT 124執(zhí)行的代碼的行,被存取的文件,被執(zhí)行的數(shù)據(jù)庫詢問等。觀測器126和AUT 124兩者可以被配置為通過相同的HTTP信道與掃描儀128通信。如進(jìn)ー步參照圖2描述的,從掃描儀128發(fā)送到服務(wù)器120的一些請求可以根據(jù)其編程把AUT 124作為目標(biāo)以從AUT 124引起響應(yīng)。從掃描儀128發(fā)送到服務(wù)器120的其它請求可以把觀測器126作為目標(biāo)以得到關(guān)于具體請求對由AUT 124執(zhí)行的操作所具有的效果的附加的信息,或者與AUT 124,觀測器126,或者主管AUT 124的服務(wù)器120相關(guān)的其它信息。響應(yīng)于應(yīng)用程序請求和服務(wù)請求由掃描儀128接收的數(shù)據(jù)可以被掃描儀128使用以生成漏洞報(bào)告??梢酝ㄟ^由掃描儀128提供的用戶界面來將漏洞報(bào)告顯示給用戶。
[0010]圖2是示出根據(jù)實(shí)施例的用于進(jìn)行灰盒子安全測試的測試系統(tǒng)配置的框圖。系統(tǒng)200可以包括掃描儀128,AUT 124,和觀測器126。AUT 124可以用任何合適的基于Web的計(jì)算機(jī)語言,例如JAVA,或.NET等等來編碼。AUT 124可以在合適的軟件框架,例如Struts,Struts2, ASP.NET MVC, Oracle WebLogicJPSpring MVC 等等內(nèi)來操作。軟件框架包括提供通用功能的ー組共用代碼模塊,其可以由用戶代碼選擇性地重寫(overridden)或?qū)iT化以提供特定的功能。AUT 124可以被配置為執(zhí)行Java虛擬機(jī)(JVM),公共語言運(yùn)行時(shí)(CLR),用于處理來自掃描儀128的請求的其它運(yùn)行時(shí)環(huán)境中的ー個(gè)或多個(gè)實(shí)例。由軟件框架或者運(yùn)行時(shí)環(huán)境的共用代碼模塊提供的編程指令可以被稱作集裝箱代碼。對AUT 124特定的定制的編程指令可以被稱作用戶代碼。
[0011]AUT 124包括網(wǎng)絡(luò)接ロ 202,用于通過網(wǎng)絡(luò)122實(shí)現(xiàn)在掃描儀128和AUT 124之間的通信。當(dāng)AUT 124被使得可用于一般用途時(shí),網(wǎng)絡(luò)接ロ 202暴露AUT 124的攻擊表面并且是將最終被用來提供對AUT 124存取的相同的接ロ??梢酝ㄟ^從掃描儀128發(fā)出到AUT124的HTTP請求和從AUT 124發(fā)出到掃描儀128的HTTP響應(yīng)來進(jìn)行在掃描儀128和AUT124之間的通過網(wǎng)絡(luò)接ロ 202的通信。把AUT 124作為目標(biāo)的請求可以被稱作應(yīng)用程序請求,并且從AUT 124接收的響應(yīng)可以被稱作應(yīng)用程序響應(yīng)。由掃描儀128生成的應(yīng)用程序請求可以被配置為暴露AUT 124的潛在的漏洞。
[0012]AUT 124可以被耦合到文件系統(tǒng)204,數(shù)據(jù)庫206,和由AUT 124使用的其它資源。數(shù)據(jù)庫206可以包括多種用戶信息,例如諸如用來允許存取AUT 124的各種資源的用戶名和密碼的表格。文件系統(tǒng)204可以包括由AUT 124使用的數(shù)據(jù)和程序,以及可由用戶請求的數(shù)據(jù),例如HTTP頁面,軟件程序,媒體文件等。
[0013]觀測器126在AUT 124的執(zhí)行環(huán)境內(nèi)操作并且可以使用由AUT 124執(zhí)行的內(nèi)部操作。例如,觀測器可以通過在各種程序點(diǎn)處注入另外的代碼,例如JAVA類來修改AUT 124的字節(jié)碼。注入的代碼充當(dāng)觀測AUT 124的監(jiān)控器。注入的監(jiān)控器代碼可以被定位在AUT124中的戰(zhàn)略程序點(diǎn)處,例如在執(zhí)行特定操作諸如讀取URL參數(shù)或者寫入到文件系統(tǒng)204的應(yīng)用程序編程接ロ(API)調(diào)用處。無論何時(shí)執(zhí)行AUT 124中的這種程序點(diǎn),監(jiān)控器都調(diào)入由觀測器126提供的服務(wù)以記錄由AUT 124執(zhí)行的操作。觀測器126可以被耦合到緩沖器210,用于存儲已經(jīng)被收集的關(guān)于AUT 124的內(nèi)部操作的信息。緩沖器210可以被用來存儲已經(jīng)被收集但還未被報(bào)告到掃描儀128的數(shù)據(jù)。緩沖器210可以被存儲在非易失性存儲介質(zhì)例如硬盤,固態(tài)驅(qū)動(dòng)器等中。
[0014]觀測器126也可以包括另外的網(wǎng)絡(luò)接ロ 208,用于通過網(wǎng)絡(luò)122實(shí)現(xiàn)在觀測器126和掃描儀128之間的通信。如上面指出的,兩個(gè)網(wǎng)絡(luò)接ロ 202和208可以使用相同的通信信道,例如相同的HTTP信道。在掃描儀128和觀測器126之間的通信可以通過定制的請求和響應(yīng)標(biāo)題的使用來實(shí)現(xiàn)。定制的標(biāo)題可以通過掃描儀128被添加到應(yīng)用程序請求,并且定制的標(biāo)題可以通過觀測器126被添加到應(yīng)用程序響應(yīng)。這樣,在掃描儀128和觀測器126之間的通信中的至少ー些可以在與AUT 124的正常通信上被捎帶(piggy-backed)。使用單一信道的通信除去了打開專用的,輔助信道的任何問題,并且加入HTTP標(biāo)題通常不干擾AUT 124的正常操作。
[0015]掃描儀128可以將ー個(gè)或多個(gè)定制的標(biāo)題加入到每個(gè)應(yīng)用程序請求,其中定制的標(biāo)題包括觀測器126可以用來診斷與進(jìn)行中的攻擊相關(guān)的漏洞的信息。在定制的標(biāo)題內(nèi)的信息可以包括掃描儀128的版本或者掃描儀128在攻擊中使用的有效負(fù)載。可以由觀測器126使用有效負(fù)載信息來確定攻擊是否成功。
[0016]掃描儀128也可以使用定制的請求標(biāo)題來生成把觀測器126作為目標(biāo)的請求以得到關(guān)于由AUT 124執(zhí)行的內(nèi)部過程的另外的信息,或者關(guān)于AUT,服務(wù)器120(圖1),或觀測器126的信息。把觀測器126作為目標(biāo)的請求可以被稱作服務(wù)請求,并且從觀測器126接收的響應(yīng)可以被稱作服務(wù)響應(yīng)。由觀測器126發(fā)出的服務(wù)響應(yīng)可以包括在服務(wù)響應(yīng)的主體中的補(bǔ)充信息,如下面進(jìn)ー步描述的。[0017]在實(shí)施例中,觀測器126被配置為接收從掃描儀128發(fā)送到AUT 124的應(yīng)用程序請求和服務(wù)請求。于是觀測器126可以分析標(biāo)題信息以確定請求是應(yīng)用程序請求還是服務(wù)請求。在接收到應(yīng)用程序請求時(shí),觀測器126可以分析標(biāo)題信息以獲得由觀測器126使用的關(guān)于特定應(yīng)用程序請求的數(shù)據(jù)。然后應(yīng)用程序請求可以由觀測器126傳遞到AUT 124用于根據(jù)AUT的編程由AUT 124來處理。當(dāng)AUT 124生成應(yīng)用程序響應(yīng)時(shí),觀測器126可以將ー個(gè)或多個(gè)定制的標(biāo)題加入到應(yīng)用程序響應(yīng)以將另外的信息發(fā)回到掃描儀128。加入到應(yīng)用程序請求和應(yīng)用程序響應(yīng)的定制的標(biāo)題可以被稱作每ー請求標(biāo)題并且在題為“每ー請求標(biāo)題”的部分中被進(jìn)ー步描述。
[0018]在接收到服務(wù)請求時(shí),觀測器126可以在未將服務(wù)請求傳遞到AUT 124的情況下處理請求。服務(wù)請求可以包括一個(gè)或多個(gè)定制的標(biāo)題,其包括被配置為請求觀測器126的具體服務(wù),例如被請求的服務(wù)的名稱的信息。觀測器126可以以在HTTP響應(yīng)的主體中被請求的信息來響應(yīng),在本文被稱作“服務(wù)響應(yīng)”。在實(shí)施例中,在服務(wù)響應(yīng)的主體中由觀測器126提供的信息可以使用Java腳本對象表示法(JSON)來被格式化并且可以是自識別JSON對象。如果觀測器126沒有發(fā)送的信息,響應(yīng)主體可以是空的。服務(wù)請求在題為“服務(wù)請求”的部分中被進(jìn)ー步描述。
[0019]每ー請求標(biāo)題
每ー請求標(biāo)題可以是定制的HTTP標(biāo)題,其可以包括定制的字段名,后面是被觀測器126和掃描儀128理解的ー個(gè)或多個(gè)字段值。定制的HTTP標(biāo)題被AUT 124忽略。將領(lǐng)會(huì)到在本文描述的字段名僅被用作字段名的示例,其可以在特定實(shí)施方式中使用并且不g在限制權(quán)利要求的范圍。
[0020]每ー請求標(biāo)題可以包括用來協(xié)調(diào)在掃描儀128和觀測器126之間的相互作用的版本標(biāo)題。觀測器126可以將版本標(biāo)題加入到每ー應(yīng)用程序響應(yīng)。掃描儀128可以使用版本標(biāo)題來驗(yàn)證觀測器126被安裝。作為示例,版本標(biāo)題可以被如下格式化:
X-WIPP-Version: <lanauage> / <version> / <vm_id>
在示例版本標(biāo)題中,詞頭“X-WIPP”將標(biāo)題標(biāo)識為由觀測器126使用的定制標(biāo)題。字段名“X-WIPP-VERS10N”是將定制的標(biāo)題唯一地標(biāo)識為版本標(biāo)題的字符串?!磍anguage〉字段值可以是由AUT 124使用來處理應(yīng)用程序請求的運(yùn)行時(shí)環(huán)境的名稱,例如Java或.NET等等。在一些情況下,AUT 124可以執(zhí)行兩個(gè)或更多個(gè)過程,其可以被不同的運(yùn)行時(shí)實(shí)例來處理。例如,AUT 124可以使用負(fù)載平衡器或者用于處理應(yīng)用程序請求的其它工作分配布置。掃描儀128可以使用字段值來標(biāo)識在AUT 124內(nèi)處理應(yīng)用程序請求的過程。例如,<vm_id>字段值可以是唯一地標(biāo)識處理應(yīng)用程序請求的運(yùn)行時(shí)實(shí)例(例如特定JVM實(shí)例(在JAVA的情況下),CLR實(shí)例(在.NET的情況下),或其它類型的運(yùn)行時(shí)實(shí)例)的名稱?!磛ersion〉字段值可以是標(biāo)識觀測器126的版本的數(shù)字或者字符串。如果觀測器的接ロ 208在觀測器軟件的版本之間變化,掃描儀128可以使用觀測器126的被標(biāo)識的版本來適當(dāng)?shù)貐f(xié)調(diào)與觀測器126的相互作用。
[0021]每ー請求標(biāo)題也可以包括由掃描儀128使用的文件未找到(FNF)標(biāo)題來識別文件未找到條件。在HTTP中,如果客戶請求不存在或者不能被找到的資源,Web應(yīng)用程序可以生成被稱作HTTP代碼404的標(biāo)準(zhǔn)錯(cuò)誤代碼。簡單的Web應(yīng)用程序經(jīng)常通過在HTTP響應(yīng)中返回HTTP代碼404來表示文件未找到條件。更加復(fù)雜的Web應(yīng)用程序可以“吞下”404代碼。換句話說,在HTTP響應(yīng)中不是僅返回HTTP代碼404錯(cuò)誤,而是代碼404可以觸發(fā)Web應(yīng)用程序?qū)⒖蛻糁囟ㄏ虻藉e(cuò)誤頁面,著陸頁,或者Web應(yīng)用程序的任何其它部分。在傳統(tǒng)的黑盒子測試中,將掃描儀128重定向到Web應(yīng)用程序的不同部分而不是僅報(bào)告錯(cuò)誤可能引起掃描儀128不正確地報(bào)告錯(cuò)誤肯定(false positive)。FNF標(biāo)題可被用來避免這種結(jié)果。因?yàn)橛^測器126在應(yīng)用程序內(nèi)操作,觀測器126可以檢測文件未找到錯(cuò)誤并且通過將FNF標(biāo)題加入到應(yīng)用程序響應(yīng)來報(bào)告文件未找到錯(cuò)誤。例如,如果應(yīng)用程序請求引發(fā)來自AUT 124的文件未找到響應(yīng),觀測器126可以將下面的標(biāo)題加入到應(yīng)用程序響應(yīng):
X-W1PP-FNF: 404
這樣,可以向掃描儀128報(bào)告文件未找到錯(cuò)誤,而不管由AUT 124提供的HTTP響應(yīng)。
[0022]每ー請求標(biāo)題也可以包括請求ID標(biāo)題。請求ID標(biāo)題可以被如下格式化:
X-WIPP-RequestiD: <request?jd>
如下面進(jìn)ー步被描述的,在題為“服務(wù)請求”部分下面,響應(yīng)于應(yīng)用程序請求,但在應(yīng)用程序響應(yīng)中不被報(bào)告,掃描儀128可以請求由觀測器126收集的另外的信息。另外的信息可以被包括在本文被稱作“蹤跡”的數(shù)據(jù)結(jié)構(gòu)中。在蹤跡中包括的信息描述AUT 124的操作,其由特定的應(yīng)用程序請求觸發(fā)。為了支持蹤跡請求服務(wù),觀測器126可以將請求ID標(biāo)題加入到每個(gè)應(yīng)用程序響應(yīng)以使得掃描儀128能夠?qū)⒈徽埱蟮嫩欅E與對應(yīng)于被請求的蹤跡的特定應(yīng)用程序響應(yīng)相關(guān)聯(lián)。在實(shí)施例中,〈requestjd〉字段值被掃描儀128分配并且被包括在應(yīng)用程序請求中。然后觀測器126可以在請求ID標(biāo)題中使用相同的requestjd值,其被加入到對應(yīng)的應(yīng)用程序響應(yīng)。在實(shí)施例中,掃描儀128不將請求ID標(biāo)題加入到應(yīng)用程序請求,在該情況下,觀測器126可以為requestjd生成唯一的值并且包括在請求ID標(biāo)題中被加入到應(yīng)用程序響應(yīng)的request_id。在任一1清況下,可以由掃描儀128使用相同的request-id值以從觀測器126請求對應(yīng)的蹤跡。
[0023]每ー請求標(biāo)題也可以包括由觀測器126使用的更新標(biāo)題以通知掃描儀128關(guān)于AUT 124的各種類型的變化。更新標(biāo)題可以被如下格式化:
X-WIPP-Updale: cservice—name」ist>
<service_name_list>值可以是逗號分開的服務(wù)名稱列表,其姆個(gè)指的是由觀測器126提供的服務(wù),由于在AUT 124中的變化,其可以提供新的信息。當(dāng)關(guān)于AUT 124的新的信息變得可用時(shí),觀測器126可以通過將更新標(biāo)題加入到應(yīng)用程序響應(yīng)來通知掃描儀128。這樣,更新標(biāo)題通知掃描儀128關(guān)于AUT 124的新的信息可用并且請求什么服務(wù)來得到信息。例如,如果觀測器126檢測到在AUT 124的安全測試期間已經(jīng)生成的另外的URL,觀測器126可以將更新標(biāo)題發(fā)送到掃描儀128,其中〈service_name_list>等于“攻擊表面”。在接收到更新標(biāo)題時(shí),掃描儀128可以將服務(wù)請求發(fā)送到感測器126,請求被識別的一種或多種服務(wù)。觀測器126可以在每個(gè)應(yīng)用程序響應(yīng)中繼續(xù)發(fā)送更新標(biāo)題直到掃描儀128為命名的ー種或多種服務(wù)發(fā)出服務(wù)請求為止。
[0024]服務(wù)請求ー蹤跡
響應(yīng)于應(yīng)用程序請求,觀測器126可以通過確定例如已經(jīng)由AUT 124執(zhí)行的代碼的特定行,已經(jīng)由AUT 124存取的文件,由AUT 124執(zhí)行的數(shù)據(jù)庫詢問,或者其它信息來確定應(yīng)用程序請求的效果。由觀測器126收集的數(shù)據(jù)可被存儲到在本文被稱作“蹤跡”的數(shù)據(jù)結(jié)構(gòu)。在實(shí)施例中,每個(gè)蹤跡可以被存儲到緩沖器210。每個(gè)蹤跡可以包括應(yīng)用程序請求的請求ID和與蹤跡對應(yīng)的應(yīng)用程序響應(yīng)。掃描儀128可以通過從觀測器126重新得到對應(yīng)的蹤跡來了解由特定的應(yīng)用程序請求觸發(fā)的AUT 124的內(nèi)部操作。為了重新得到蹤跡,掃描儀128可以向觀測器126發(fā)出服務(wù)請求,其包括標(biāo)題字段名/值對,所述標(biāo)題字段名/值對被配置為表示對應(yīng)于特定應(yīng)用程序請求或者響應(yīng)的蹤跡的請求。例如,用于請求蹤跡的字段名/值對可以被如下格式化:
TTrace=Cr 師 est—...W>
值〈requestjd〉是由掃描儀128或者觀測器126分配的值,其與和被請求的蹤跡相關(guān)聯(lián)的應(yīng)用程序請求和/或應(yīng)用程序響應(yīng)對應(yīng),如上面關(guān)于題為“每ー請求標(biāo)題”的部分描述的。在接收到蹤跡服務(wù)請求時(shí),觀測器126可以繞過AUT 124并且生成包括被請求的蹤跡的服務(wù)響應(yīng)。在實(shí)施例中,被請求的蹤跡可以通過觀測器126從緩沖器210重新得到并且被加入到服務(wù)響應(yīng)的主體,然后可以將其發(fā)送到掃描儀128。服務(wù)響應(yīng)標(biāo)題包括被請求的蹤跡的requestjd值,并且服務(wù)響應(yīng)的主體可以被格式化為JSON對象。
[0025]觀測器126可以在緩沖器210中保持多個(gè)蹤跡以便掃描儀128可以為已經(jīng)作出的任何應(yīng)用程序請求請求蹤跡。緩沖器210可以具有適合于特定實(shí)施方式的任何尺寸。在實(shí)施例中,如果緩沖器210變?yōu)闈M的,存儲到緩沖器210的蹤跡可以從緩沖器210中以先入先出的方式被去除。如果掃描儀128請求未知的請求ID,觀測器126可以返回錯(cuò)誤。如果其是無效的,從未被使用,或者已經(jīng)是由觀測器126保持的蹤跡的緩沖器210的過期的,請求ID可以是未知的。
[0026]在作出對應(yīng)的應(yīng)用程序請求并且從AUT 124接收到響應(yīng)之后,掃描儀128可以被配置為發(fā)送単獨(dú)的蹤跡服務(wù)請求。requestjd使得觀測器126能夠接收失序蹤跡請求,同時(shí)仍然能夠使接收到的蹤跡與適當(dāng)?shù)膽?yīng)用程序請求和響應(yīng)相關(guān)聯(lián)。部分地因?yàn)閽呙鑳x128可能具有發(fā)出應(yīng)用程序請求到AUT 124的多個(gè)執(zhí)行的線程,蹤跡請求可以是接收到的失序應(yīng)得物(due)。掃描儀128也可以被配置為中斷超時(shí)的應(yīng)用程序請求,在該情況下,掃描儀128可以從觀測器126重新得到不完整的蹤跡。為了在完整的和不完整的蹤跡之間區(qū)別,觀測器126可以被配置為將特殊節(jié)點(diǎn)加入到每個(gè)表明對應(yīng)于這種蹤跡請求的應(yīng)用程序請求被成功地完成的完成的蹤跡。例如,觀測器126可以在每個(gè)完成的蹤跡的末端處加入類型為“request_complete”的特殊節(jié)點(diǎn)?!皉equest_complete”節(jié)點(diǎn)的缺少可以向掃描儀128表明對應(yīng)的應(yīng)用程序請求失敗。
[0027]觀測器126可以監(jiān)控由AUT 124執(zhí)行的在應(yīng)用程序請求的情境之外發(fā)生的過程,例如通過由觀測器126注入的另外的監(jiān)控代碼啟動(dòng)的過程。為了避免招致性能開銷的不可接受的水平,觀測器126可以被配置為將與應(yīng)用程序請求無關(guān)的監(jiān)控過程的性能開銷最小化。例如,性能開銷可通過注入監(jiān)控代碼以選擇性地監(jiān)控特定API調(diào)用和AUT的用戶代碼的相關(guān)部分來被最小化。
[0028]返回到掃描儀128的蹤跡可以包括ー個(gè)或多個(gè)不同類型的蹤跡節(jié)點(diǎn)。每個(gè)蹤跡節(jié)點(diǎn)傳遞對應(yīng)于由AUT 124執(zhí)行的內(nèi)部過程的一些比特的信息。在實(shí)施例中,每個(gè)蹤跡節(jié)點(diǎn)包括類型屬性,其可以是唯一地標(biāo)識蹤跡節(jié)點(diǎn)的類型的任何合適的字符串。ー些蹤跡節(jié)點(diǎn)類型可以基于由AUT 124執(zhí)行的動(dòng)作的類型。[0029]在實(shí)施例中,觀測器126可以記錄關(guān)于由AUT 124使用的調(diào)用棧和集裝箱代碼的信息。調(diào)用棧是存儲關(guān)于計(jì)算機(jī)程序的動(dòng)態(tài)子程序的信息的數(shù)據(jù)結(jié)構(gòu)。例如,當(dāng)其完成執(zhí)行吋,調(diào)用??梢杂涗泟?dòng)態(tài)子程序應(yīng)將控制返回到其的一行代碼。調(diào)用棧也可以被用來傳遞參數(shù)到子程序,并且為子程序本地的變量分配存儲器,以及其它功能。調(diào)用棧可以包括代表當(dāng)前執(zhí)行的由AUT 124或AUT的集裝箱代碼調(diào)用的子程序的頂部??蚣堋m敳織?蚣芸梢园ㄎ募Q和標(biāo)識代碼的特定行的行編號。
[0030]每個(gè)蹤跡可以包括ー個(gè)或多個(gè)蹤跡節(jié)點(diǎn),其中每個(gè)蹤跡節(jié)點(diǎn)描述關(guān)于由AUT 124生成的特定調(diào)用棧的細(xì)節(jié)。蹤跡節(jié)點(diǎn)可以包括位置屬性,其在AUT 124集裝箱代碼中標(biāo)識在觀測器126外部的頂部??蚣艿奈募Q和行編號。如果這種??蚣芸梢员蛔R別,蹤跡節(jié)點(diǎn)也可以包括在AUT 124用戶代碼中給出用于頂部棧框架的文件名稱和行編號的“USer_COnteXt”屬性。情境屬性使得掃描儀128能夠?yàn)槁┒瓷砂ǜ驹蚍治龅穆┒磮?bào)告,并且使得掃描儀128能夠?qū)⑴c在代碼中相同位置相關(guān)聯(lián)的漏洞分組在一起。
[0031]在實(shí)施例中,觀測器126被配置為檢測漏洞。例如,掃描儀128可以以應(yīng)用程序請求的形式發(fā)送攻擊到AUT 124,所述應(yīng)用程序請求被配置為在文件系統(tǒng)204上生成任意的文件。應(yīng)用程序請求可以包括定制的標(biāo)題信息,其通知觀測器126關(guān)于攻擊的性質(zhì)。如果AUT 124是易受傷害的,觀測器126將遇到文件創(chuàng)建API調(diào)用,從而通知觀測器126文件上載攻擊是成功的并且已經(jīng)檢測到漏洞。
[0032]如果觀測器126檢測到漏洞,觀測器126可以生成在本文被稱作“漏洞蹤跡節(jié)點(diǎn)”的蹤跡節(jié)點(diǎn)。漏洞蹤跡節(jié)點(diǎn)可以包括ー個(gè)或多個(gè)棧蹤跡,其向掃描儀128提供代碼位置信息,例如下沉程序點(diǎn)和當(dāng)可用時(shí)的ー個(gè)或多個(gè)潛在的源程序點(diǎn)。源程序點(diǎn)是此處惡意輸入被AUT 124使用的代碼位置,并且下沉程序點(diǎn)是此處惡意輸入修改AUT 124的行為的代碼位置。例如,在跨站腳本漏洞的情況下,源程序點(diǎn)是從URL參數(shù)中讀取用戶供應(yīng)值的地方,并且下沉程序點(diǎn)是保留的參數(shù)值被寫入到HTML頁面的地方。棧蹤跡可以被削減使得它們不包括來自觀測器126的??蚣?。漏洞蹤跡節(jié)點(diǎn)可以包括與AUT 124代碼和集裝箱代碼兩者相關(guān)的棧框架,并且每個(gè)??蚣芸梢园?蚣芘c用戶代碼還是與集裝箱代碼相關(guān)的指示。由于由觀測器126提供的代碼位置信息,掃描儀128可以創(chuàng)建在AUT 124中準(zhǔn)確地確定(pinpoint)漏洞的位置的漏洞報(bào)告,并且可以將在AUT 124中相同位置處發(fā)生的漏洞分組,從而在由掃描儀128生成的漏洞報(bào)告中減少重復(fù)。代碼位置信息也給用戶提供對漏洞的性質(zhì)的深入了解并且因此減少用來修復(fù)問題的補(bǔ)救努力的量。
[0033]漏洞蹤跡節(jié)點(diǎn)也可以包括漏洞種類,例如“跨站腳本”或者“SQL注入”,和對應(yīng)于每個(gè)漏洞種類的標(biāo)準(zhǔn)漏洞標(biāo)識符,例如常見缺陷列舉(CWE)標(biāo)識符。漏洞蹤跡節(jié)點(diǎn)也可以包括關(guān)于漏洞的檢測的相關(guān)細(xì)節(jié)。例如,如果漏洞是SQL注入漏洞,漏洞蹤跡節(jié)點(diǎn)可以包括在由觀測器126進(jìn)行的漏洞檢測中涉及的SQL詢問。這樣,觀測器126能夠檢測并且向掃描儀128報(bào)告SQL注入漏洞,即使漏洞在返回到掃描儀128的應(yīng)用程序響應(yīng)中不顯現(xiàn)自身。
[0034]如果AUT 124執(zhí)行針對數(shù)據(jù)庫的詢問,例如SQL詢問,觀測器126也可以生成在本文被稱作“數(shù)據(jù)庫蹤跡節(jié)點(diǎn)”的蹤跡節(jié)點(diǎn)。數(shù)據(jù)庫蹤跡節(jié)點(diǎn)可以包括數(shù)據(jù)庫詢問的文本和在數(shù)據(jù)庫詢問中用于由AUT 124使用的綁定參數(shù)的值。其它類型的蹤跡節(jié)點(diǎn)可以包括用于源代碼文件的由AUT 124例如JAVA小服務(wù)程序,JAVA服務(wù)器頁面(JSP)等調(diào)用的開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)。開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)指的是在代表通過AUT 124的執(zhí)行流程的控制流結(jié)構(gòu)中的節(jié)點(diǎn)。開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)可以包括源代碼文件的文件名稱和傳遞到源代碼文件的參數(shù)。觀測器126也可以生成其它類型的蹤跡節(jié)點(diǎn)以代表例如由AUT 124執(zhí)行的文件系統(tǒng)204的讀取和寫入,由AUT 124執(zhí)行的Web服務(wù)調(diào)用,和由AUT 124執(zhí)行的網(wǎng)絡(luò)服務(wù)操作等等。
[0035]如上面所述,掃描儀128可以使用蹤跡信息來把重復(fù)的漏洞分組在一起。重復(fù)漏洞的分組可以通過由掃描儀128實(shí)施的去重復(fù)過程來執(zhí)行。在去重中,掃描儀128可以將散列算法應(yīng)用到漏洞蹤跡節(jié)點(diǎn)的各部分,例如uSer_COnteXt屬性和漏洞種類,以便為漏洞創(chuàng)建標(biāo)識符。從AUT 124的角度,具有相同標(biāo)識符的兩個(gè)漏洞可以被認(rèn)為是復(fù)制品。漏洞標(biāo)識符可以被用來通知用戶修補(bǔ)這些漏洞中的ー個(gè)將可能補(bǔ)救具有相同漏洞標(biāo)識符的其它漏洞。掃描儀的用戶界面可以被配置為將復(fù)制的漏洞提供到在一組中的用戶。
[0036]在實(shí)施例中,掃描儀128被配置為基于蹤跡信息優(yōu)化其發(fā)送到AUT 124的攻擊。例如,如果蹤跡顯示特定的應(yīng)用程序請求未訪問文件系統(tǒng)204,掃描儀可以被配置為省略與針對與文件系統(tǒng)204相關(guān)的漏洞的該應(yīng)用程序請求相關(guān)的類似的攻擊。類似地,如果蹤跡顯示特定的應(yīng)用程序請求未調(diào)用數(shù)據(jù)庫詢問,掃描儀可以被配置為省略與針對數(shù)據(jù)庫中的漏洞的該應(yīng)用程序請求相關(guān)的類似的攻擊,例如SQL注入。
[0037]在實(shí)施例中,來自數(shù)據(jù)庫蹤跡節(jié)點(diǎn)的數(shù)據(jù)庫詢問信息可以被用來識別更持久的跨站腳本漏洞。例如,由于應(yīng)用程序請求,把數(shù)據(jù)庫206作為目標(biāo)的應(yīng)用程序請求可以與由AUT 124訪問的數(shù)據(jù)庫表和列相關(guān)聯(lián)。掃描儀128可以使用這種信息來發(fā)送試圖在數(shù)據(jù)庫206中存儲數(shù)據(jù)的攻擊和將數(shù)據(jù)寫入到在數(shù)據(jù)庫206中的特定位置的應(yīng)用程序請求。掃描儀128可以通過發(fā)送從在數(shù)據(jù)庫206中的相同的位置讀取的應(yīng)用程序請求來確定攻擊的效果。
[0038]服務(wù)請求一服務(wù)器信息
觀測器126可以被配置為提供在本文被稱作“服務(wù)器信息服務(wù)”的服務(wù),其用來向掃描儀128告知服務(wù)器120。為了重新得到服務(wù)器信息,掃描儀128可以向觀測器126發(fā)出服務(wù)器信息服務(wù)請求,其包括被配置為表明服務(wù)器信息的請求的標(biāo)題字段名,例如“服務(wù)器”。在接收到服務(wù)器信息服務(wù)請求時(shí),觀測器126可以繞過AUT 124并且將被請求的服務(wù)器信息返回到掃描儀128。
[0039]被請求的服務(wù)器信息可以被返回在由觀測器126生成的服務(wù)響應(yīng)的主體中并且被格式化為例如JSON對象。在服務(wù)響應(yīng)中包括的服務(wù)器信息的示例可以包括主操作系統(tǒng)的名稱和版本,應(yīng)用程序服務(wù)器的名稱和版本,在沒有任何停機(jī)時(shí)間情況下應(yīng)用程序服務(wù)器已經(jīng)運(yùn)行的時(shí)間量,當(dāng)前被處理的線程的數(shù)目,和當(dāng)前使用的存儲器的量,以及其它信息。掃描儀128可以使用服務(wù)器信息來生成適于主管AUT 124的服務(wù)器120的攻擊。例如,如果主管AUT 124的服務(wù)器120正運(yùn)行Linux,掃描儀128可以被配置為避免將基于Microsoft?ffindows 的攻擊發(fā)送到 AUT 124。
[0040]服務(wù)請求一應(yīng)用程序信息
觀測器126可以被配置為提供在本文被稱作“應(yīng)用程序信息服務(wù)”的服務(wù),其被用來向掃描儀128告知AUT 124。為了重新得到應(yīng)用程序信息,掃描儀128可以向觀測器126發(fā)出應(yīng)用程序信息服務(wù)請求,其包括被配置為表明應(yīng)用程序信息的請求的字段名,例如“應(yīng)用程序”。在接收到應(yīng)用程序信息服務(wù)請求時(shí),觀測器126可以繞過AUT 124并且將被請求的應(yīng)用程序信息返回到掃描儀128。[0041]被請求的應(yīng)用程序信息可以被返回在由觀測器126生成的服務(wù)響應(yīng)的主體中并且被格式化為例如JSON對象。如果沒有可用的應(yīng)用程序信息被發(fā)送,服務(wù)響應(yīng)的主體可以是空的。由服務(wù)響應(yīng)返回的應(yīng)用程序信息的示例可以包括與AUT 124相互作用的所有數(shù)據(jù)庫的名稱和版本,由AUT 124使用的文件庫,Web服務(wù)子系統(tǒng),和與AUT 124相互作用的其它子系統(tǒng)和軟件框架,以及其它信息。掃描儀128可以使用應(yīng)用程序信息來更高效地生成攻擊。例如,正被AUT 124使用的關(guān)于數(shù)據(jù)庫的信息可以使得掃描儀128能夠生成適于被識別的數(shù)據(jù)庫的攻擊并且避免為未使用的數(shù)據(jù)庫生成攻擊。另外,掃描儀128可以避免將把MicrOSOft?SQL服務(wù)器作為目標(biāo)的攻擊發(fā)送到僅使用Oracle數(shù)據(jù)庫的AUT 124。
[0042]服務(wù)請求ー攻擊表面
觀測器126可以被配置為提供在本文被稱作“攻擊表面服務(wù)”的服務(wù),其用來識別可能不被簡單的網(wǎng)絡(luò)爬蟲檢測到的攻擊表面的組成部分。為了重新得到攻擊表面信息,掃描儀128可以發(fā)出包括被配置為表明攻擊表面信息的請求的標(biāo)題字段名(例如“攻擊表面”)的攻擊表面服務(wù)請求。在接收到應(yīng)用程序信息服務(wù)請求時(shí),觀測器126可以繞過AUT 124并且將被請求的攻擊表面信息返回到掃描儀128。攻擊表面信息可以被返回在由觀測器126生成的服務(wù)響應(yīng)的主體中并且被格式化為例如JSON對象。如果沒有可用的攻擊表面信息被發(fā)送,服務(wù)響應(yīng)的主體可以是空的。
[0043]AUT 124的攻擊表面包括可進(jìn)入掃描儀128的資源,例如諸如網(wǎng)頁鏈接。掃描儀128或者觀測器126可以被配置為分析AUT 124或者在AUT 124上“爬行”以發(fā)現(xiàn)這種網(wǎng)頁鏈接??蛇M(jìn)入掃描儀128的一些資源可以不與網(wǎng)頁鏈接相關(guān)聯(lián)并且在這種意義上是隱藏資源,其是不會(huì)通過在AUT 124上爬行被發(fā)現(xiàn)的。隱藏資源可以作為在文件系統(tǒng)204中的文件存在并且可以被可進(jìn)入文件系統(tǒng)204的觀測器126發(fā)現(xiàn)。另外,響應(yīng)于接收到的應(yīng)用程序請求,在運(yùn)行時(shí)間,換句話說在AUT 124的執(zhí)行期間,一些資源可以由AUT 124動(dòng)態(tài)地生成。動(dòng)態(tài)資源可以在運(yùn)行時(shí)間期間基于配置文件和映射文件(例如Web.xml文件)生成,所述映射文件是基于預(yù)定義規(guī)則將被請求的URL映射到在文件系統(tǒng)204上的資源的文件。動(dòng)態(tài)地生成的資源可以通過檢查映射和配置文件并且通過觀測AUT 124的執(zhí)行來被觀測器126發(fā)現(xiàn)以識別在運(yùn)行時(shí)間動(dòng)態(tài)綁定的統(tǒng)ー資源定位符(URL)。
[0044]可進(jìn)入掃描儀128的每個(gè)資源可以被稱作攻擊表面組成部分。被觀測器126發(fā)現(xiàn)的姆個(gè)攻擊表面組成部分可以在攻擊表面服務(wù)響應(yīng)的主體中被格式化為URL并且被報(bào)告給掃描儀128。每個(gè)攻擊表面組成部分也可以在攻擊表面服務(wù)響應(yīng)的主體內(nèi)被加標(biāo)記以將攻擊表面組成部分標(biāo)識成靜態(tài)的或者動(dòng)態(tài)的。通過探查文件系統(tǒng)204,包括位于文件系統(tǒng)204的根目錄及以下中的文件來發(fā)現(xiàn)的資源可以被標(biāo)記為靜態(tài)的。通過檢查映射和配置文件發(fā)現(xiàn)的資源可以標(biāo)記為動(dòng)態(tài)的。在不將Web應(yīng)用文檔(WAR)文件擴(kuò)展為運(yùn)行應(yīng)用程序的一部分的集裝箱(例如WebLogic)的情況下,觀測器126可以讓集裝箱代碼來處理從WAR文件提取資源的任務(wù)并且然后使用被提取資源的列表來定義攻擊表面。
[0045]錯(cuò)誤處理
在一些情況下,掃描儀128可以發(fā)出不能由觀測器126履行的服務(wù)請求。例如,掃描儀128可以發(fā)出不被觀測器126認(rèn)出的服務(wù)請求或者具有不被觀測器126認(rèn)出的標(biāo)題字段值的服務(wù)請求,例如具有未知的請求ID的蹤跡請求。如果觀測器126遇到不能被履行的服務(wù)請求,觀測器126可以在服務(wù)響應(yīng)或者應(yīng)用程序響應(yīng)的標(biāo)題中將錯(cuò)誤返回到掃描儀128。例如,觀測器126可以發(fā)出被如下格式化的服務(wù)響應(yīng):
X-WiPP-Erron《error......text.....string>
標(biāo)題字段值<error_text_string>可以是給出遇到的錯(cuò)誤的簡要描述的任何合適的文本串。描述錯(cuò)誤的文本串可以由掃描儀128存儲到可由用戶看見的錯(cuò)誤日志。此外,觀測器126可以保持錯(cuò)誤日志,其中每個(gè)錯(cuò)誤日志入口包括問題的更詳細(xì)的描述。由觀測器126保持的錯(cuò)誤日志可以記錄在觀測器126的操作期間遇到的任何錯(cuò)誤。
[0046]可以響應(yīng)于服務(wù)請求或者應(yīng)用程序請求標(biāo)題的包括g在把觀測器126作為目標(biāo)的信息的部分來由觀測器126生成錯(cuò)誤。如果響應(yīng)于服務(wù)請求生成錯(cuò)誤,可以在服務(wù)響應(yīng)中返回錯(cuò)誤消息,并且服務(wù)響應(yīng)的主體可以是空的。如果響應(yīng)于在應(yīng)用程序請求中包括的信息來生成錯(cuò)誤,可以在應(yīng)用程序響應(yīng)中返回錯(cuò)誤消息,并且應(yīng)用程序響應(yīng)的主體可以包含AUT 124根據(jù)其編程提供的任何數(shù)據(jù)。
[0047]圖3是概述根據(jù)實(shí)施例的執(zhí)行灰盒子安全測試的方法的過程流程圖。方法300可以被與AUT 124和126通信的掃描儀128來執(zhí)行,如參考圖2描述的。方法300可以在方框302處開始,其中應(yīng)用程序請求可以被發(fā)送到AUT 124。應(yīng)用程序請求可以被配置為暴露AUT 124的潛在的漏洞。如上面討論的,應(yīng)用程序請求可以包括被用來將信息傳送到觀測器126的定制的標(biāo)題。例如,掃描儀128可以將請求ID值加入到唯一地標(biāo)識對觀測器126的應(yīng)用程序請求的應(yīng)用程序請求的標(biāo)題。
[0048]在方框304處,掃描儀128可以根據(jù)AUT的編程從AUT 124接收到應(yīng)用程序響應(yīng)。如果掃描儀128被配置為將請求ID加入到每個(gè)應(yīng)用程序請求,觀測器126可以將相同的請求ID加入到應(yīng)用程序響應(yīng)的標(biāo)題。否則,掃描儀128可以生成唯一的請求ID并且將請求ID加入到應(yīng)用程序響應(yīng)的標(biāo)題。如上面描述的,觀測器126也可以將另外的信息加入到應(yīng)用程序響應(yīng)的標(biāo)題,例如文件未找到標(biāo)題,觀測器版本標(biāo)題,更新標(biāo)題等。
[0049]在方框306處,掃描儀128可以將服務(wù)請求發(fā)送到觀測器126。在實(shí)施例中,服務(wù)請求可以通過將另外的標(biāo)題信息加入到應(yīng)用程序請求來被包括在方框302的應(yīng)用程序請求中。在實(shí)施例中,服務(wù)請求可以是單獨(dú)的請求,換句話說,沒有與應(yīng)用程序請求結(jié)合。服務(wù)請求由觀測器126來處理并且不被傳遞到AUT 124。服務(wù)請求可以被配置為請求信息,例如攻擊表面信息,服務(wù)器或應(yīng)用程序信息,和與AUT 124的內(nèi)部過程相關(guān)的蹤跡信息等等。掃描儀128可以將請求ID加入到服務(wù)請求的標(biāo)題以得到對應(yīng)于特定應(yīng)用程序響應(yīng)的蹤跡信息。
[0050]在方框308處,掃描儀128可以從觀測器126接收服務(wù)響應(yīng)。服務(wù)響應(yīng)可以包括關(guān)于由于應(yīng)用程序請求由AUT 124執(zhí)行的過程的信息。例如,服務(wù)響應(yīng)可以包括標(biāo)識由于應(yīng)用程序請求由AUT 124執(zhí)行的過程的棧蹤跡信息。服務(wù)響應(yīng)可以包括漏洞蹤跡節(jié)點(diǎn),其包含對應(yīng)于由觀測器126檢測的漏洞的代碼位置。服務(wù)響應(yīng)也可以包括對應(yīng)于由于應(yīng)用程序請求由AUT 124執(zhí)行的數(shù)據(jù)庫詢問的信息。在實(shí)施例中,服務(wù)響應(yīng)可以包括關(guān)于AUT 124的信息,例如AUT 124的編程語言,AUT 124的名稱和版本,和包括靜態(tài)和動(dòng)態(tài)URL的AUT124的攻擊表面以及其它信息。服務(wù)響應(yīng)也可以包括關(guān)于觀測器126的信息,例如操作系統(tǒng)名稱和版本,應(yīng)用程序服務(wù)器名稱和版本,線程的數(shù)目,存儲器使用率,和在沒有任何停機(jī)時(shí)間的情況下服務(wù)器120已經(jīng)運(yùn)行的量以及其它信息。[0051]將領(lǐng)會(huì)到方法300只是用來解釋本技術(shù)的實(shí)施例的示例過程流程,并且實(shí)際的過程流程可以根據(jù)特定的實(shí)施方式變化。例如,掃描儀128可以不為每個(gè)應(yīng)用程序請求發(fā)出服務(wù)請求。另外,掃描儀128可以在發(fā)送與應(yīng)用程序響應(yīng)中的特定的一個(gè)應(yīng)用程序響應(yīng)相關(guān)的服務(wù)請求之前發(fā)送和接收多個(gè)應(yīng)用程序請求和響應(yīng)。
[0052]在方框310處,掃描儀128可以基于從AUT 124和觀測器126接收到的信息來生成漏洞報(bào)告。漏洞報(bào)告可以基于在方框308處接收到的包括在蹤跡節(jié)點(diǎn)中的代碼位置信息將檢測到的漏洞分組。漏洞報(bào)告可以通過由掃描儀128提供的用戶界面被呈現(xiàn)給用戶。漏洞報(bào)告也可以被存儲到存儲器,被打印等。
[0053]圖4是示出根據(jù)實(shí)施例的存儲被配置為進(jìn)行灰盒子安全測試的代碼的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)的框圖。由參考數(shù)字400指代該非暫時(shí)性機(jī)器可讀介質(zhì)。非暫時(shí)性機(jī)器可讀介質(zhì)400可以包括RAM,硬盤驅(qū)動(dòng)器,硬盤驅(qū)動(dòng)器陣列,光學(xué)驅(qū)動(dòng)器,光學(xué)驅(qū)動(dòng)器陣列,非易失性存儲器,通用串行總線(USB)驅(qū)動(dòng)器,數(shù)字通用盤(DVD),致密盤(⑶)等。非暫時(shí)性機(jī)器可讀介質(zhì)900可以通過通信路徑904由處理器902訪問。
[0054]如在圖4中所示,本文討論的各種部件可以被存儲在非暫時(shí)性,機(jī)器可讀介質(zhì)400上。在非暫時(shí)性機(jī)器可讀介質(zhì)400上的區(qū)域406可以包括被配置為將應(yīng)用程序請求發(fā)送到AUT 124的應(yīng)用程序接ロ,其中應(yīng)用程序請求被配置為暴露AUT 124的潛在的漏洞。應(yīng)用程序接ロ也可以從AUT 124接收應(yīng)用程序響應(yīng),其中應(yīng)用程序響應(yīng)根據(jù)AUT的編程由AUT124生成。區(qū)域408可以包括被配置為將服務(wù)請求發(fā)送到觀測器126的觀測器接ロ。觀測器接ロ也接收服務(wù)響應(yīng),其包含例如對應(yīng)于由于應(yīng)用程序請求由AUT 124執(zhí)行的過程的信息,關(guān)于AUT 124的信息,或者關(guān)于主管AUT 124的服務(wù)器120的信息。區(qū)域410可以包括漏洞報(bào)告生成器,其被配置為分析從AUT 124和觀測器126接收到的數(shù)據(jù)并且基于該分析生成漏洞報(bào)告。
【權(quán)利要求】
1.一種系統(tǒng),包括: 主管被測試的應(yīng)用程序(AUT)的服務(wù)器; 觀測器,其被配置為監(jiān)控由所述AUT執(zhí)行的指令;和 計(jì)算裝置,其通過公共的通信信道被通信地耦合到所述AUT和所述觀測器,所述計(jì)算裝置包括處理器和用于存儲計(jì)算機(jī)可讀指令的存儲器裝置,所述計(jì)算機(jī)可讀指令被配置為指示所述處理器: 發(fā)送應(yīng)用程序請求到所述AUT,其中所述應(yīng)用程序請求被配置為暴露所述AUT的潛在的漏洞; 根據(jù)AUT的編程從所述AUT接收應(yīng)用程序響應(yīng); 發(fā)送服務(wù)請求到所述觀測器;并且 從所述觀測器接收服務(wù)響應(yīng),其包含對應(yīng)于由于所述應(yīng)用程序請求由所述AUT執(zhí)行的指令的信息,關(guān)于所述AUT的信息,或者關(guān)于主管所述AUT的服務(wù)器的信息。
2.權(quán)利要求1的系統(tǒng),其中所述觀測器被配置為生成標(biāo)識由于所述應(yīng)用程序請求由所述AUT執(zhí)行的指令的蹤跡,并且在所述服務(wù)響應(yīng)的主體中發(fā)送所述蹤跡到所述計(jì)算裝置。
3.權(quán)利要求1的系統(tǒng),其中所述觀測器被配置為至少部分地通過將定制的標(biāo)題添加到所述應(yīng)用程序響應(yīng)來與所述計(jì)算裝置通信。
4.權(quán)利要求1的系統(tǒng),所述存儲器裝置包括計(jì)算機(jī)可讀指令,其被配置為指示所述處理器從所述觀測器接收蹤跡信息,所述蹤跡信息包括多個(gè)漏洞蹤跡節(jié)點(diǎn),每個(gè)漏洞蹤跡節(jié)點(diǎn)包含對應(yīng)于由所述觀測器檢測`的漏洞的代碼位置。
5.權(quán)利要求4的系統(tǒng),所述存儲器裝置包括計(jì)算機(jī)可讀指令,其被配置為基于包含相同代碼位置的漏洞蹤跡節(jié)點(diǎn)來指示所述處理器將所述多個(gè)漏洞蹤跡節(jié)點(diǎn)分組。
6.權(quán)利要求1的系統(tǒng),其中所述觀測器被配置為監(jiān)控所述AUT以識別新的在所述AUT的運(yùn)行時(shí)間期間動(dòng)態(tài)地生成的統(tǒng)ー資源定位符(URL),并且在所述應(yīng)用程序響應(yīng)的標(biāo)題中返回更新字段,所述更新字段被配置為通知所述計(jì)算裝置所述AUT的攻擊表面已經(jīng)改變。
7.權(quán)利要求1的系統(tǒng),其中所述觀測器被配置為: 從所述計(jì)算裝置接收請求并且分析所述請求的標(biāo)題; 基于所述標(biāo)題的分析來識別所述請求為所述應(yīng)用程序請求還是所述服務(wù)請求; 將所述應(yīng)用程序請求傳遞到所述AUT ;并且 在不將所述服務(wù)請求傳遞到所述AUT的情況下處理所述服務(wù)請求。
8.ー種方法,包括: 發(fā)送應(yīng)用程序請求到被測試的應(yīng)用程序(AUT),其中所述應(yīng)用程序請求被配置為暴露所述AUT的潛在的漏洞; 根據(jù)所述AUT的編程從所述AUT接收應(yīng)用程序響應(yīng); 發(fā)送服務(wù)請求到監(jiān)控由所述AUT執(zhí)行的指令的觀測器;并且 從所述觀測器接收服務(wù)響應(yīng),其包含對應(yīng)于由于所述應(yīng)用程序請求由所述AUT執(zhí)行的指令的信息,關(guān)于所述AUT的信息,或者關(guān)于主管所述AUT的服務(wù)器的信息; 其中所述應(yīng)用程序請求,應(yīng)用程序響應(yīng),服務(wù)請求,和服務(wù)響應(yīng)通過相同的網(wǎng)絡(luò)信道被傳送。
9.權(quán)利要求8的方法,包括在所述應(yīng)用程序響應(yīng)中接收文件未找到標(biāo)題,通過所述觀測器將所述文件未找到標(biāo)題添加到所述應(yīng)用程序響應(yīng)以表明由所述AUT產(chǎn)生文件未找到錯(cuò)誤。
10.權(quán)利要求8的方法,其中所述服務(wù)請求是蹤跡服務(wù)請求,所述方法包括在從所述觀測器接收的所述服務(wù)響應(yīng)的主體中接收棧蹤跡。
11.權(quán)利要求8的方法,包括在所述服務(wù)響應(yīng)的所述主體中接收漏洞蹤跡節(jié)點(diǎn),其中所述漏洞蹤跡節(jié)點(diǎn)標(biāo)識由所述觀測器檢測到的漏洞。
12.權(quán)利要求8的方法,其中所述服務(wù)請求是攻擊表面服務(wù)請求,所述方法包括在所述服務(wù)響應(yīng)的主體中接收關(guān)于所述AUT的所述攻擊表面的信息,所述攻擊表面包括在運(yùn)行時(shí)間期間由所述AUT生成的靜態(tài)URL和動(dòng)態(tài)URL。
13.一種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),包括代碼,其被配置為指示處理器: 發(fā)送應(yīng)用程序請求到被測試的應(yīng)用程序(AUT),其中所述應(yīng)用程序請求被配置為暴露所述AUT的潛在的漏洞; 根據(jù)所述AUT的編程從所述AUT接收應(yīng)用程序響應(yīng); 發(fā)送服務(wù)請求到觀測器,所述觀測器監(jiān)控由所述AUT執(zhí)行的指令;并且從所述觀測器接收服務(wù)響應(yīng),其包含對應(yīng)于由于所述應(yīng)用程序請求由所述AUT執(zhí)行的指令的信息,關(guān)于所述AUT的信息,或者關(guān)于主管所述AUT的服務(wù)器的信息; 其中所述應(yīng)用程序請求,應(yīng)用程序響應(yīng),服務(wù)請求,和服務(wù)響應(yīng)通過相同的網(wǎng)絡(luò)信道被傳送。
14.權(quán)利要求13的非暫時(shí)性計(jì)算`機(jī)可讀介質(zhì),包括被配置為指示所述處理器將請求ID添加到所述應(yīng)用程序請求的標(biāo)題的代碼,所述標(biāo)題唯一地標(biāo)識所述應(yīng)用程序請求,其中從所述觀測器接收的所述服務(wù)響應(yīng)包括所述請求ID。
15.權(quán)利要求13的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其中所述服務(wù)響應(yīng)包括數(shù)據(jù)庫蹤跡節(jié)點(diǎn),其包括對應(yīng)于由于所述應(yīng)用程序請求由所述AUT執(zhí)行的數(shù)據(jù)庫詢問的信息。
【文檔編號】G06F11/36GK103562923SQ201180071281
【公開日】2014年2月5日 申請日期:2011年5月31日 優(yōu)先權(quán)日:2011年5月31日
【發(fā)明者】B.V.徹斯, I.拉戈勒, P.E.哈默, R.A.斯皮特勒, S.P.費(fèi), P.S.賈格達(dá)爾 申請人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)