新四季網

應用程式安全測試的製作方法

2023-05-16 18:49:06

應用程式安全測試的製作方法
【專利摘要】本公開提供一種系統,其包括主管被測試的應用程式(AUT)的伺服器,被配置為監控由AUT執行的指令的觀測器,和通過公共的通信信道被通信地耦合到AUT和觀測器的計算裝置。計算裝置可以被配置為發送應用程式請求到AUT,其中應用程式請求被配置為暴露AUT的潛在的漏洞。計算裝置可以根據AUT的編程從AUT接收應用程式響應。計算裝置可以發送服務請求到觀測器,並且從觀測器接收服務響應,其包含對應於由於應用程式請求由AUT執行的指令的信息,關於AUT的信息,或者關於主管AUT的伺服器的信息。
【專利說明】應用程式安全測試
【背景技術】
[0001]軟體安全測試被用來識別應用程式(例如Web應用程式)中的漏洞。用於基於Web的軟體的傳統黑盒子安全測試通過使用安全測試應用程式來工作,經常被稱作掃描儀,其偽裝成攻擊者。在黑盒子方法中,掃描儀通過作出HTTP請求並估計HTTP響應來探查被測試的應用程式(AUT)以便找到所有URL(在此處AUT接受輸入)。AUT在此處接受輸入的URL可以涉及AUT的攻擊表面。於是掃描儀基於攻擊表面和可能的漏洞類別生成攻擊。掃描儀通過估計程序的HTTP響應來應用攻擊以診斷漏洞的存在或不存在。在黑盒子方法中,掃描儀對AUT的內部工作不具有任何洞察力。
[0002]黑盒子漏洞測試在概念上是易懂的,但是在實踐中其提出ー些挑戰。例如,探査AUT可能不掲示所有攻擊表面,因此掃描儀可能不對AUT易受傷害的所有地方發起攻擊。另夕卜,一些漏洞不能通過在HTTP響應中返回的信息被準確地識別。如果掃描儀未發現漏洞,掃描儀就不能提供關於漏洞在AUT的代碼內何處的信息。此外,掃描儀可以報告都與在AUT中相同潛在的問題相關的幾個漏洞,引起程式設計師設法修補漏洞以完成大量的重複工作。
【專利附圖】

【附圖說明】
[0003]在下面詳細的描述中並且參考附圖來描述某些實施例,其中:
圖1是根據實施例的可以被用來進行灰盒子安全測試的系統的框圖;
圖2是示出根據實施例的用於進行灰盒子安全測試的測試系統配置的框圖;
圖3是根據實施例的執行灰盒子安全測試的方法的過程流程圖;和圖4是示出根據實施例的存儲被配置為進行灰盒子安全測試的代碼的非暫時性計算機可讀介質的框圖。
【具體實施方式】
[0004]在本文描述的實施例提供用於執行Web應用程式的灰盒子安全測試的技術。在灰盒子安全測試中,在本文中被稱作觀測器的軟體程序被用來觀察由AUT執行的內部操作。觀測器使得掃描儀能夠確定AUT的操作和其響應攻擊如何表現。觀測器也使得掃描儀能夠確定AUT響應於正常應用程式請求的行為,掃描儀可以使用其來確定發送何種類型的攻擊。掃描儀繼續向AUT傳遞攻擊,並且掃描儀從觀測器接收AUT的內部工作的知識。這樣,掃描儀能找到更多漏洞並且產生更好的漏洞報告,從而提供基於web的應用程式的更加全面和詳細的軟體安全測試。
[0005]根據實施例,在觀測器和掃描儀之間提供通信信道。掃描儀使用這個通信信道來在其掃描期間深入了解AUT。可以通過使用已經由AUT使用的通信信道來實施在掃描儀和觀測器之間的通信信道。這樣,進行測試的人不必執行另外的配置或者設置工作,並且通信信道不幹擾AUT或者在其上運行AUT的計算機系統的正常操作。本發明的另外的益處可以參照下面提供的描述而被更好地理解。
[0006]圖1是根據實施例的可被用來進行灰盒子安全測試的系統的框圖。系統通常由參考數字100來指代。本領域普通技術人員將領會到在圖1中示出的功能塊和裝置可以包括包含電路的硬體元件,包含在非暫時性機器可讀介質上存儲的計算機代碼的軟體元件,或者硬體和軟體元件兩者的結合。此外,配置不局限於在圖1中示出的配置,因為在本發明的實施例中可以使用任何數目的功能塊和裝置。基於對具體電子裝置的涉及考慮,本領域普通技術人員將容易地能夠定義具體的功能塊。
[0007]如在圖1中所示,系統100可以包括計算裝置102,其通常將包括通過總線106連接到顯示器108的處理器104,鍵盤110,和一個或多個輸入裝置112,例如滑鼠,觸控螢幕,或鍵盤。在實施例中,計算裝置102是通用計算裝置,例如臺式計算機,膝上型計算機,伺服器等。計算裝置102也可以具有一種或多種類型的非暫時性計算機可讀介質,例如可以在各種操作程序(包括在本發明的實施例中使用的操作程序)的執行期間使用的存儲器114。存儲器114可以包括只讀存儲器(R0M),隨機存取存儲器(RAM)等。裝置102也可以包括其它非暫時性計算機可讀介質,例如用於操作程序和數據(包括在本發明的實施例中使用的操作程序和數據)的長期存儲的存儲系統116。
[0008]在實施例中,計算裝置102包括網絡接ロ控制器(NIC) 118,用於將裝置102連接到伺服器120。計算裝置102可以通過網絡122,例如網際網路,區域網(LAN),廣域網(WAN),或者其它網絡配置被通信地耦合到伺服器120。伺服器120可以具有非暫時性計算機可讀介質,例如存儲裝置,用於存儲數據,緩衝通信,和存儲伺服器120的操作程序。可以使用請求響應協議例如超文本傳輸協議(HTTP)來進行在裝置102和伺服器120之間的通信。
[0009]伺服器120可以是主管AUT 124的應用程式伺服器。伺服器120也包括在執行期間監控AUT 124的觀測器126。計算裝置102可以包括對AUT 124執行安全測試的掃描儀128。例如,掃描儀128可以通過網絡122發送HTTP請求到AUT 124,其中HTTP請求被配置為嘗試暴露AUT 124的漏洞。HTTP請求可以包括HTTPS請求,其將超文本傳輸協議與SSL(安全套接層)和TLS (傳輸層安全)協議結合以提供加密通信並且確保網絡Web伺服器的識另IJ。在由AUT 124的HTTP請求的處理期間,觀測器126監控由AUT 124執行的內部過程。例如,觀測器126可以識別由AUT 124執行的代碼的行,被存取的文件,被執行的資料庫詢問等。觀測器126和AUT 124兩者可以被配置為通過相同的HTTP信道與掃描儀128通信。如進ー步參照圖2描述的,從掃描儀128發送到伺服器120的一些請求可以根據其編程把AUT 124作為目標以從AUT 124引起響應。從掃描儀128發送到伺服器120的其它請求可以把觀測器126作為目標以得到關於具體請求對由AUT 124執行的操作所具有的效果的附加的信息,或者與AUT 124,觀測器126,或者主管AUT 124的伺服器120相關的其它信息。響應於應用程式請求和服務請求由掃描儀128接收的數據可以被掃描儀128使用以生成漏洞報告。可以通過由掃描儀128提供的用戶界面來將漏洞報告顯示給用戶。
[0010]圖2是示出根據實施例的用於進行灰盒子安全測試的測試系統配置的框圖。系統200可以包括掃描儀128,AUT 124,和觀測器126。AUT 124可以用任何合適的基於Web的計算機語言,例如JAVA,或.NET等等來編碼。AUT 124可以在合適的軟體框架,例如Struts,Struts2, ASP.NET MVC, Oracle WebLogicJPSpring MVC 等等內來操作。軟體框架包括提供通用功能的ー組共用代碼模塊,其可以由用戶代碼選擇性地重寫(overridden)或專門化以提供特定的功能。AUT 124可以被配置為執行Java虛擬機(JVM),公共語言運行時(CLR),用於處理來自掃描儀128的請求的其它運行時環境中的ー個或多個實例。由軟體框架或者運行時環境的共用代碼模塊提供的編程指令可以被稱作貨櫃代碼。對AUT 124特定的定製的編程指令可以被稱作用戶代碼。
[0011]AUT 124包括網絡接ロ 202,用於通過網絡122實現在掃描儀128和AUT 124之間的通信。當AUT 124被使得可用於一般用途時,網絡接ロ 202暴露AUT 124的攻擊表面並且是將最終被用來提供對AUT 124存取的相同的接ロ。可以通過從掃描儀128發出到AUT124的HTTP請求和從AUT 124發出到掃描儀128的HTTP響應來進行在掃描儀128和AUT124之間的通過網絡接ロ 202的通信。把AUT 124作為目標的請求可以被稱作應用程式請求,並且從AUT 124接收的響應可以被稱作應用程式響應。由掃描儀128生成的應用程式請求可以被配置為暴露AUT 124的潛在的漏洞。
[0012]AUT 124可以被耦合到文件系統204,資料庫206,和由AUT 124使用的其它資源。資料庫206可以包括多種用戶信息,例如諸如用來允許存取AUT 124的各種資源的用戶名和密碼的表格。文件系統204可以包括由AUT 124使用的數據和程序,以及可由用戶請求的數據,例如HTTP頁面,軟體程序,媒體文件等。
[0013]觀測器126在AUT 124的執行環境內操作並且可以使用由AUT 124執行的內部操作。例如,觀測器可以通過在各種程序點處注入另外的代碼,例如JAVA類來修改AUT 124的字節碼。注入的代碼充當觀測AUT 124的監控器。注入的監控器代碼可以被定位在AUT124中的戰略程序點處,例如在執行特定操作諸如讀取URL參數或者寫入到文件系統204的應用程式編程接ロ(API)調用處。無論何時執行AUT 124中的這種程序點,監控器都調入由觀測器126提供的服務以記錄由AUT 124執行的操作。觀測器126可以被耦合到緩衝器210,用於存儲已經被收集的關於AUT 124的內部操作的信息。緩衝器210可以被用來存儲已經被收集但還未被報告到掃描儀128的數據。緩衝器210可以被存儲在非易失性存儲介質例如硬碟,固態驅動器等中。
[0014]觀測器126也可以包括另外的網絡接ロ 208,用於通過網絡122實現在觀測器126和掃描儀128之間的通信。如上面指出的,兩個網絡接ロ 202和208可以使用相同的通信信道,例如相同的HTTP信道。在掃描儀128和觀測器126之間的通信可以通過定製的請求和響應標題的使用來實現。定製的標題可以通過掃描儀128被添加到應用程式請求,並且定製的標題可以通過觀測器126被添加到應用程式響應。這樣,在掃描儀128和觀測器126之間的通信中的至少ー些可以在與AUT 124的正常通信上被捎帶(piggy-backed)。使用單一信道的通信除去了打開專用的,輔助信道的任何問題,並且加入HTTP標題通常不幹擾AUT 124的正常操作。
[0015]掃描儀128可以將ー個或多個定製的標題加入到每個應用程式請求,其中定製的標題包括觀測器126可以用來診斷與進行中的攻擊相關的漏洞的信息。在定製的標題內的信息可以包括掃描儀128的版本或者掃描儀128在攻擊中使用的有效負載。可以由觀測器126使用有效負載信息來確定攻擊是否成功。
[0016]掃描儀128也可以使用定製的請求標題來生成把觀測器126作為目標的請求以得到關於由AUT 124執行的內部過程的另外的信息,或者關於AUT,伺服器120(圖1),或觀測器126的信息。把觀測器126作為目標的請求可以被稱作服務請求,並且從觀測器126接收的響應可以被稱作服務響應。由觀測器126發出的服務響應可以包括在服務響應的主體中的補充信息,如下面進ー步描述的。[0017]在實施例中,觀測器126被配置為接收從掃描儀128發送到AUT 124的應用程式請求和服務請求。於是觀測器126可以分析標題信息以確定請求是應用程式請求還是服務請求。在接收到應用程式請求時,觀測器126可以分析標題信息以獲得由觀測器126使用的關於特定應用程式請求的數據。然後應用程式請求可以由觀測器126傳遞到AUT 124用於根據AUT的編程由AUT 124來處理。當AUT 124生成應用程式響應時,觀測器126可以將ー個或多個定製的標題加入到應用程式響應以將另外的信息發回到掃描儀128。加入到應用程式請求和應用程式響應的定製的標題可以被稱作每ー請求標題並且在題為「每ー請求標題」的部分中被進ー步描述。
[0018]在接收到服務請求時,觀測器126可以在未將服務請求傳遞到AUT 124的情況下處理請求。服務請求可以包括一個或多個定製的標題,其包括被配置為請求觀測器126的具體服務,例如被請求的服務的名稱的信息。觀測器126可以以在HTTP響應的主體中被請求的信息來響應,在本文被稱作「服務響應」。在實施例中,在服務響應的主體中由觀測器126提供的信息可以使用Java腳本對象表示法(JSON)來被格式化並且可以是自識別JSON對象。如果觀測器126沒有發送的信息,響應主體可以是空的。服務請求在題為「服務請求」的部分中被進ー步描述。
[0019]每ー請求標題
每ー請求標題可以是定製的HTTP標題,其可以包括定製的欄位名,後面是被觀測器126和掃描儀128理解的ー個或多個欄位值。定製的HTTP標題被AUT 124忽略。將領會到在本文描述的欄位名僅被用作欄位名的示例,其可以在特定實施方式中使用並且不g在限制權利要求的範圍。
[0020]每ー請求標題可以包括用來協調在掃描儀128和觀測器126之間的相互作用的版本標題。觀測器126可以將版本標題加入到每ー應用程式響應。掃描儀128可以使用版本標題來驗證觀測器126被安裝。作為示例,版本標題可以被如下格式化:
X-WIPP-Version: / /
在示例版本標題中,詞頭「X-WIPP」將標題標識為由觀測器126使用的定製標題。欄位名「X-WIPP-VERS10N」是將定製的標題唯一地標識為版本標題的字符串。〈language〉欄位值可以是由AUT 124使用來處理應用程式請求的運行時環境的名稱,例如Java或.NET等等。在一些情況下,AUT 124可以執行兩個或更多個過程,其可以被不同的運行時實例來處理。例如,AUT 124可以使用負載平衡器或者用於處理應用程式請求的其它工作分配布置。掃描儀128可以使用欄位值來標識在AUT 124內處理應用程式請求的過程。例如,欄位值可以是唯一地標識處理應用程式請求的運行時實例(例如特定JVM實例(在JAVA的情況下),CLR實例(在.NET的情況下),或其它類型的運行時實例)的名稱。〈version〉欄位值可以是標識觀測器126的版本的數字或者字符串。如果觀測器的接ロ 208在觀測器軟體的版本之間變化,掃描儀128可以使用觀測器126的被標識的版本來適當地協調與觀測器126的相互作用。
[0021]每ー請求標題也可以包括由掃描儀128使用的文件未找到(FNF)標題來識別文件未找到條件。在HTTP中,如果客戶請求不存在或者不能被找到的資源,Web應用程式可以生成被稱作HTTP代碼404的標準錯誤代碼。簡單的Web應用程式經常通過在HTTP響應中返回HTTP代碼404來表示文件未找到條件。更加複雜的Web應用程式可以「吞下」404代碼。換句話說,在HTTP響應中不是僅返回HTTP代碼404錯誤,而是代碼404可以觸發Web應用程式將客戶重定向到錯誤頁面,著陸頁,或者Web應用程式的任何其它部分。在傳統的黑盒子測試中,將掃描儀128重定向到Web應用程式的不同部分而不是僅報告錯誤可能引起掃描儀128不正確地報告錯誤肯定(false positive)。FNF標題可被用來避免這種結果。因為觀測器126在應用程式內操作,觀測器126可以檢測文件未找到錯誤並且通過將FNF標題加入到應用程式響應來報告文件未找到錯誤。例如,如果應用程式請求引發來自AUT 124的文件未找到響應,觀測器126可以將下面的標題加入到應用程式響應:
X-W1PP-FNF: 404
這樣,可以向掃描儀128報告文件未找到錯誤,而不管由AUT 124提供的HTTP響應。
[0022]每ー請求標題也可以包括請求ID標題。請求ID標題可以被如下格式化:
X-WIPP-RequestiD:
如下面進ー步被描述的,在題為「服務請求」部分下面,響應於應用程式請求,但在應用程式響應中不被報告,掃描儀128可以請求由觀測器126收集的另外的信息。另外的信息可以被包括在本文被稱作「蹤跡」的數據結構中。在蹤跡中包括的信息描述AUT 124的操作,其由特定的應用程式請求觸發。為了支持蹤跡請求服務,觀測器126可以將請求ID標題加入到每個應用程式響應以使得掃描儀128能夠將被請求的蹤跡與對應於被請求的蹤跡的特定應用程式響應相關聯。在實施例中,〈requestjd〉欄位值被掃描儀128分配並且被包括在應用程式請求中。然後觀測器126可以在請求ID標題中使用相同的requestjd值,其被加入到對應的應用程式響應。在實施例中,掃描儀128不將請求ID標題加入到應用程式請求,在該情況下,觀測器126可以為requestjd生成唯一的值並且包括在請求ID標題中被加入到應用程式響應的request_id。在任一1清況下,可以由掃描儀128使用相同的request-id值以從觀測器126請求對應的蹤跡。
[0023]每ー請求標題也可以包括由觀測器126使用的更新標題以通知掃描儀128關於AUT 124的各種類型的變化。更新標題可以被如下格式化:
X-WIPP-Updale: cservice—name」ist>
值可以是逗號分開的服務名稱列表,其姆個指的是由觀測器126提供的服務,由於在AUT 124中的變化,其可以提供新的信息。當關於AUT 124的新的信息變得可用時,觀測器126可以通過將更新標題加入到應用程式響應來通知掃描儀128。這樣,更新標題通知掃描儀128關於AUT 124的新的信息可用並且請求什麼服務來得到信息。例如,如果觀測器126檢測到在AUT 124的安全測試期間已經生成的另外的URL,觀測器126可以將更新標題發送到掃描儀128,其中〈service_name_list>等於「攻擊表面」。在接收到更新標題時,掃描儀128可以將服務請求發送到感測器126,請求被識別的一種或多種服務。觀測器126可以在每個應用程式響應中繼續發送更新標題直到掃描儀128為命名的ー種或多種服務發出服務請求為止。
[0024]服務請求ー蹤跡
響應於應用程式請求,觀測器126可以通過確定例如已經由AUT 124執行的代碼的特定行,已經由AUT 124存取的文件,由AUT 124執行的資料庫詢問,或者其它信息來確定應用程式請求的效果。由觀測器126收集的數據可被存儲到在本文被稱作「蹤跡」的數據結構。在實施例中,每個蹤跡可以被存儲到緩衝器210。每個蹤跡可以包括應用程式請求的請求ID和與蹤跡對應的應用程式響應。掃描儀128可以通過從觀測器126重新得到對應的蹤跡來了解由特定的應用程式請求觸發的AUT 124的內部操作。為了重新得到蹤跡,掃描儀128可以向觀測器126發出服務請求,其包括標題欄位名/值對,所述標題欄位名/值對被配置為表示對應於特定應用程式請求或者響應的蹤跡的請求。例如,用於請求蹤跡的欄位名/值對可以被如下格式化:
TTrace=Cr 師 est—...W>
值〈requestjd〉是由掃描儀128或者觀測器126分配的值,其與和被請求的蹤跡相關聯的應用程式請求和/或應用程式響應對應,如上面關於題為「每ー請求標題」的部分描述的。在接收到蹤跡服務請求時,觀測器126可以繞過AUT 124並且生成包括被請求的蹤跡的服務響應。在實施例中,被請求的蹤跡可以通過觀測器126從緩衝器210重新得到並且被加入到服務響應的主體,然後可以將其發送到掃描儀128。服務響應標題包括被請求的蹤跡的requestjd值,並且服務響應的主體可以被格式化為JSON對象。
[0025]觀測器126可以在緩衝器210中保持多個蹤跡以便掃描儀128可以為已經作出的任何應用程式請求請求蹤跡。緩衝器210可以具有適合於特定實施方式的任何尺寸。在實施例中,如果緩衝器210變為滿的,存儲到緩衝器210的蹤跡可以從緩衝器210中以先入先出的方式被去除。如果掃描儀128請求未知的請求ID,觀測器126可以返回錯誤。如果其是無效的,從未被使用,或者已經是由觀測器126保持的蹤跡的緩衝器210的過期的,請求ID可以是未知的。
[0026]在作出對應的應用程式請求並且從AUT 124接收到響應之後,掃描儀128可以被配置為發送単獨的蹤跡服務請求。requestjd使得觀測器126能夠接收失序蹤跡請求,同時仍然能夠使接收到的蹤跡與適當的應用程式請求和響應相關聯。部分地因為掃描儀128可能具有發出應用程式請求到AUT 124的多個執行的線程,蹤跡請求可以是接收到的失序應得物(due)。掃描儀128也可以被配置為中斷超時的應用程式請求,在該情況下,掃描儀128可以從觀測器126重新得到不完整的蹤跡。為了在完整的和不完整的蹤跡之間區別,觀測器126可以被配置為將特殊節點加入到每個表明對應於這種蹤跡請求的應用程式請求被成功地完成的完成的蹤跡。例如,觀測器126可以在每個完成的蹤跡的末端處加入類型為「request_complete」的特殊節點。「request_complete」節點的缺少可以向掃描儀128表明對應的應用程式請求失敗。
[0027]觀測器126可以監控由AUT 124執行的在應用程式請求的情境之外發生的過程,例如通過由觀測器126注入的另外的監控代碼啟動的過程。為了避免招致性能開銷的不可接受的水平,觀測器126可以被配置為將與應用程式請求無關的監控過程的性能開銷最小化。例如,性能開銷可通過注入監控代碼以選擇性地監控特定API調用和AUT的用戶代碼的相關部分來被最小化。
[0028]返回到掃描儀128的蹤跡可以包括ー個或多個不同類型的蹤跡節點。每個蹤跡節點傳遞對應於由AUT 124執行的內部過程的一些比特的信息。在實施例中,每個蹤跡節點包括類型屬性,其可以是唯一地標識蹤跡節點的類型的任何合適的字符串。ー些蹤跡節點類型可以基於由AUT 124執行的動作的類型。[0029]在實施例中,觀測器126可以記錄關於由AUT 124使用的調用棧和貨櫃代碼的信息。調用棧是存儲關於電腦程式的動態子程序的信息的數據結構。例如,當其完成執行吋,調用棧可以記錄動態子程序應將控制返回到其的一行代碼。調用棧也可以被用來傳遞參數到子程序,並且為子程序本地的變量分配存儲器,以及其它功能。調用棧可以包括代表當前執行的由AUT 124或AUT的貨櫃代碼調用的子程序的頂部棧框架。頂部棧框架可以包括文件名稱和標識代碼的特定行的行編號。
[0030]每個蹤跡可以包括ー個或多個蹤跡節點,其中每個蹤跡節點描述關於由AUT 124生成的特定調用棧的細節。蹤跡節點可以包括位置屬性,其在AUT 124貨櫃代碼中標識在觀測器126外部的頂部棧框架的文件名稱和行編號。如果這種棧框架可以被識別,蹤跡節點也可以包括在AUT 124用戶代碼中給出用於頂部棧框架的文件名稱和行編號的「USer_COnteXt」屬性。情境屬性使得掃描儀128能夠為漏洞生成包括根本原因分析的漏洞報告,並且使得掃描儀128能夠將與在代碼中相同位置相關聯的漏洞分組在一起。
[0031]在實施例中,觀測器126被配置為檢測漏洞。例如,掃描儀128可以以應用程式請求的形式發送攻擊到AUT 124,所述應用程式請求被配置為在文件系統204上生成任意的文件。應用程式請求可以包括定製的標題信息,其通知觀測器126關於攻擊的性質。如果AUT 124是易受傷害的,觀測器126將遇到文件創建API調用,從而通知觀測器126文件上載攻擊是成功的並且已經檢測到漏洞。
[0032]如果觀測器126檢測到漏洞,觀測器126可以生成在本文被稱作「漏洞蹤跡節點」的蹤跡節點。漏洞蹤跡節點可以包括ー個或多個棧蹤跡,其向掃描儀128提供代碼位置信息,例如下沉程序點和當可用時的ー個或多個潛在的源程序點。源程序點是此處惡意輸入被AUT 124使用的代碼位置,並且下沉程序點是此處惡意輸入修改AUT 124的行為的代碼位置。例如,在跨站腳本漏洞的情況下,源程序點是從URL參數中讀取用戶供應值的地方,並且下沉程序點是保留的參數值被寫入到HTML頁面的地方。棧蹤跡可以被削減使得它們不包括來自觀測器126的棧框架。漏洞蹤跡節點可以包括與AUT 124代碼和貨櫃代碼兩者相關的棧框架,並且每個棧框架可以包括棧框架與用戶代碼還是與貨櫃代碼相關的指示。由於由觀測器126提供的代碼位置信息,掃描儀128可以創建在AUT 124中準確地確定(pinpoint)漏洞的位置的漏洞報告,並且可以將在AUT 124中相同位置處發生的漏洞分組,從而在由掃描儀128生成的漏洞報告中減少重複。代碼位置信息也給用戶提供對漏洞的性質的深入了解並且因此減少用來修復問題的補救努力的量。
[0033]漏洞蹤跡節點也可以包括漏洞種類,例如「跨站腳本」或者「SQL注入」,和對應於每個漏洞種類的標準漏洞標識符,例如常見缺陷列舉(CWE)標識符。漏洞蹤跡節點也可以包括關於漏洞的檢測的相關細節。例如,如果漏洞是SQL注入漏洞,漏洞蹤跡節點可以包括在由觀測器126進行的漏洞檢測中涉及的SQL詢問。這樣,觀測器126能夠檢測並且向掃描儀128報告SQL注入漏洞,即使漏洞在返回到掃描儀128的應用程式響應中不顯現自身。
[0034]如果AUT 124執行針對資料庫的詢問,例如SQL詢問,觀測器126也可以生成在本文被稱作「資料庫蹤跡節點」的蹤跡節點。資料庫蹤跡節點可以包括資料庫詢問的文本和在資料庫詢問中用於由AUT 124使用的綁定參數的值。其它類型的蹤跡節點可以包括用於原始碼文件的由AUT 124例如JAVA小服務程序,JAVA伺服器頁面(JSP)等調用的開始節點和結束節點。開始節點和結束節點指的是在代表通過AUT 124的執行流程的控制流結構中的節點。開始節點和結束節點可以包括原始碼文件的文件名稱和傳遞到原始碼文件的參數。觀測器126也可以生成其它類型的蹤跡節點以代表例如由AUT 124執行的文件系統204的讀取和寫入,由AUT 124執行的Web服務調用,和由AUT 124執行的網絡服務操作等等。
[0035]如上面所述,掃描儀128可以使用蹤跡信息來把重複的漏洞分組在一起。重複漏洞的分組可以通過由掃描儀128實施的去重複過程來執行。在去重中,掃描儀128可以將散列算法應用到漏洞蹤跡節點的各部分,例如uSer_COnteXt屬性和漏洞種類,以便為漏洞創建標識符。從AUT 124的角度,具有相同標識符的兩個漏洞可以被認為是複製品。漏洞標識符可以被用來通知用戶修補這些漏洞中的ー個將可能補救具有相同漏洞標識符的其它漏洞。掃描儀的用戶界面可以被配置為將複製的漏洞提供到在一組中的用戶。
[0036]在實施例中,掃描儀128被配置為基於蹤跡信息優化其發送到AUT 124的攻擊。例如,如果蹤跡顯示特定的應用程式請求未訪問文件系統204,掃描儀可以被配置為省略與針對與文件系統204相關的漏洞的該應用程式請求相關的類似的攻擊。類似地,如果蹤跡顯示特定的應用程式請求未調用資料庫詢問,掃描儀可以被配置為省略與針對資料庫中的漏洞的該應用程式請求相關的類似的攻擊,例如SQL注入。
[0037]在實施例中,來自資料庫蹤跡節點的資料庫詢問信息可以被用來識別更持久的跨站腳本漏洞。例如,由於應用程式請求,把資料庫206作為目標的應用程式請求可以與由AUT 124訪問的資料庫表和列相關聯。掃描儀128可以使用這種信息來發送試圖在資料庫206中存儲數據的攻擊和將數據寫入到在資料庫206中的特定位置的應用程式請求。掃描儀128可以通過發送從在資料庫206中的相同的位置讀取的應用程式請求來確定攻擊的效果。
[0038]服務請求一伺服器信息
觀測器126可以被配置為提供在本文被稱作「伺服器信息服務」的服務,其用來向掃描儀128告知伺服器120。為了重新得到伺服器信息,掃描儀128可以向觀測器126發出伺服器信息服務請求,其包括被配置為表明伺服器信息的請求的標題欄位名,例如「伺服器」。在接收到伺服器信息服務請求時,觀測器126可以繞過AUT 124並且將被請求的伺服器信息返回到掃描儀128。
[0039]被請求的伺服器信息可以被返回在由觀測器126生成的服務響應的主體中並且被格式化為例如JSON對象。在服務響應中包括的伺服器信息的示例可以包括主作業系統的名稱和版本,應用程式伺服器的名稱和版本,在沒有任何停機時間情況下應用程式伺服器已經運行的時間量,當前被處理的線程的數目,和當前使用的存儲器的量,以及其它信息。掃描儀128可以使用伺服器信息來生成適於主管AUT 124的伺服器120的攻擊。例如,如果主管AUT 124的伺服器120正運行Linux,掃描儀128可以被配置為避免將基於Microsoft?ffindows 的攻擊發送到 AUT 124。
[0040]服務請求一應用程式信息
觀測器126可以被配置為提供在本文被稱作「應用程式信息服務」的服務,其被用來向掃描儀128告知AUT 124。為了重新得到應用程式信息,掃描儀128可以向觀測器126發出應用程式信息服務請求,其包括被配置為表明應用程式信息的請求的欄位名,例如「應用程式」。在接收到應用程式信息服務請求時,觀測器126可以繞過AUT 124並且將被請求的應用程式信息返回到掃描儀128。[0041]被請求的應用程式信息可以被返回在由觀測器126生成的服務響應的主體中並且被格式化為例如JSON對象。如果沒有可用的應用程式信息被發送,服務響應的主體可以是空的。由服務響應返回的應用程式信息的示例可以包括與AUT 124相互作用的所有資料庫的名稱和版本,由AUT 124使用的文件庫,Web服務子系統,和與AUT 124相互作用的其它子系統和軟體框架,以及其它信息。掃描儀128可以使用應用程式信息來更高效地生成攻擊。例如,正被AUT 124使用的關於資料庫的信息可以使得掃描儀128能夠生成適於被識別的資料庫的攻擊並且避免為未使用的資料庫生成攻擊。另外,掃描儀128可以避免將把MicrOSOft?SQL伺服器作為目標的攻擊發送到僅使用Oracle資料庫的AUT 124。
[0042]服務請求ー攻擊表面
觀測器126可以被配置為提供在本文被稱作「攻擊表面服務」的服務,其用來識別可能不被簡單的網絡爬蟲檢測到的攻擊表面的組成部分。為了重新得到攻擊表面信息,掃描儀128可以發出包括被配置為表明攻擊表面信息的請求的標題欄位名(例如「攻擊表面」)的攻擊表面服務請求。在接收到應用程式信息服務請求時,觀測器126可以繞過AUT 124並且將被請求的攻擊表面信息返回到掃描儀128。攻擊表面信息可以被返回在由觀測器126生成的服務響應的主體中並且被格式化為例如JSON對象。如果沒有可用的攻擊表面信息被發送,服務響應的主體可以是空的。
[0043]AUT 124的攻擊表面包括可進入掃描儀128的資源,例如諸如網頁連結。掃描儀128或者觀測器126可以被配置為分析AUT 124或者在AUT 124上「爬行」以發現這種網頁連結。可進入掃描儀128的一些資源可以不與網頁連結相關聯並且在這種意義上是隱藏資源,其是不會通過在AUT 124上爬行被發現的。隱藏資源可以作為在文件系統204中的文件存在並且可以被可進入文件系統204的觀測器126發現。另外,響應於接收到的應用程式請求,在運行時間,換句話說在AUT 124的執行期間,一些資源可以由AUT 124動態地生成。動態資源可以在運行時間期間基於配置文件和映射文件(例如Web.xml文件)生成,所述映射文件是基於預定義規則將被請求的URL映射到在文件系統204上的資源的文件。動態地生成的資源可以通過檢查映射和配置文件並且通過觀測AUT 124的執行來被觀測器126發現以識別在運行時間動態綁定的統ー資源定位符(URL)。
[0044]可進入掃描儀128的每個資源可以被稱作攻擊表面組成部分。被觀測器126發現的姆個攻擊表面組成部分可以在攻擊表面服務響應的主體中被格式化為URL並且被報告給掃描儀128。每個攻擊表面組成部分也可以在攻擊表面服務響應的主體內被加標記以將攻擊表面組成部分標識成靜態的或者動態的。通過探查文件系統204,包括位於文件系統204的根目錄及以下中的文件來發現的資源可以被標記為靜態的。通過檢查映射和配置文件發現的資源可以標記為動態的。在不將Web應用文檔(WAR)文件擴展為運行應用程式的一部分的貨櫃(例如WebLogic)的情況下,觀測器126可以讓貨櫃代碼來處理從WAR文件提取資源的任務並且然後使用被提取資源的列表來定義攻擊表面。
[0045]錯誤處理
在一些情況下,掃描儀128可以發出不能由觀測器126履行的服務請求。例如,掃描儀128可以發出不被觀測器126認出的服務請求或者具有不被觀測器126認出的標題欄位值的服務請求,例如具有未知的請求ID的蹤跡請求。如果觀測器126遇到不能被履行的服務請求,觀測器126可以在服務響應或者應用程式響應的標題中將錯誤返回到掃描儀128。例如,觀測器126可以發出被如下格式化的服務響應:
X-WiPP-Erron《error......text.....string>
標題欄位值可以是給出遇到的錯誤的簡要描述的任何合適的文本串。描述錯誤的文本串可以由掃描儀128存儲到可由用戶看見的錯誤日誌。此外,觀測器126可以保持錯誤日誌,其中每個錯誤日誌入口包括問題的更詳細的描述。由觀測器126保持的錯誤日誌可以記錄在觀測器126的操作期間遇到的任何錯誤。
[0046]可以響應於服務請求或者應用程式請求標題的包括g在把觀測器126作為目標的信息的部分來由觀測器126生成錯誤。如果響應於服務請求生成錯誤,可以在服務響應中返回錯誤消息,並且服務響應的主體可以是空的。如果響應於在應用程式請求中包括的信息來生成錯誤,可以在應用程式響應中返回錯誤消息,並且應用程式響應的主體可以包含AUT 124根據其編程提供的任何數據。
[0047]圖3是概述根據實施例的執行灰盒子安全測試的方法的過程流程圖。方法300可以被與AUT 124和126通信的掃描儀128來執行,如參考圖2描述的。方法300可以在方框302處開始,其中應用程式請求可以被發送到AUT 124。應用程式請求可以被配置為暴露AUT 124的潛在的漏洞。如上面討論的,應用程式請求可以包括被用來將信息傳送到觀測器126的定製的標題。例如,掃描儀128可以將請求ID值加入到唯一地標識對觀測器126的應用程式請求的應用程式請求的標題。
[0048]在方框304處,掃描儀128可以根據AUT的編程從AUT 124接收到應用程式響應。如果掃描儀128被配置為將請求ID加入到每個應用程式請求,觀測器126可以將相同的請求ID加入到應用程式響應的標題。否則,掃描儀128可以生成唯一的請求ID並且將請求ID加入到應用程式響應的標題。如上面描述的,觀測器126也可以將另外的信息加入到應用程式響應的標題,例如文件未找到標題,觀測器版本標題,更新標題等。
[0049]在方框306處,掃描儀128可以將服務請求發送到觀測器126。在實施例中,服務請求可以通過將另外的標題信息加入到應用程式請求來被包括在方框302的應用程式請求中。在實施例中,服務請求可以是單獨的請求,換句話說,沒有與應用程式請求結合。服務請求由觀測器126來處理並且不被傳遞到AUT 124。服務請求可以被配置為請求信息,例如攻擊表面信息,伺服器或應用程式信息,和與AUT 124的內部過程相關的蹤跡信息等等。掃描儀128可以將請求ID加入到服務請求的標題以得到對應於特定應用程式響應的蹤跡信息。
[0050]在方框308處,掃描儀128可以從觀測器126接收服務響應。服務響應可以包括關於由於應用程式請求由AUT 124執行的過程的信息。例如,服務響應可以包括標識由於應用程式請求由AUT 124執行的過程的棧蹤跡信息。服務響應可以包括漏洞蹤跡節點,其包含對應於由觀測器126檢測的漏洞的代碼位置。服務響應也可以包括對應於由於應用程式請求由AUT 124執行的資料庫詢問的信息。在實施例中,服務響應可以包括關於AUT 124的信息,例如AUT 124的程式語言,AUT 124的名稱和版本,和包括靜態和動態URL的AUT124的攻擊表面以及其它信息。服務響應也可以包括關於觀測器126的信息,例如作業系統名稱和版本,應用程式伺服器名稱和版本,線程的數目,存儲器使用率,和在沒有任何停機時間的情況下伺服器120已經運行的量以及其它信息。[0051]將領會到方法300隻是用來解釋本技術的實施例的示例過程流程,並且實際的過程流程可以根據特定的實施方式變化。例如,掃描儀128可以不為每個應用程式請求發出服務請求。另外,掃描儀128可以在發送與應用程式響應中的特定的一個應用程式響應相關的服務請求之前發送和接收多個應用程式請求和響應。
[0052]在方框310處,掃描儀128可以基於從AUT 124和觀測器126接收到的信息來生成漏洞報告。漏洞報告可以基於在方框308處接收到的包括在蹤跡節點中的代碼位置信息將檢測到的漏洞分組。漏洞報告可以通過由掃描儀128提供的用戶界面被呈現給用戶。漏洞報告也可以被存儲到存儲器,被列印等。
[0053]圖4是示出根據實施例的存儲被配置為進行灰盒子安全測試的代碼的非暫時性計算機可讀介質的框圖。由參考數字400指代該非暫時性機器可讀介質。非暫時性機器可讀介質400可以包括RAM,硬碟驅動器,硬碟驅動器陣列,光學驅動器,光學驅動器陣列,非易失性存儲器,通用串行總線(USB)驅動器,數字通用盤(DVD),緻密盤(⑶)等。非暫時性機器可讀介質900可以通過通信路徑904由處理器902訪問。
[0054]如在圖4中所示,本文討論的各種部件可以被存儲在非暫時性,機器可讀介質400上。在非暫時性機器可讀介質400上的區域406可以包括被配置為將應用程式請求發送到AUT 124的應用程式接ロ,其中應用程式請求被配置為暴露AUT 124的潛在的漏洞。應用程式接ロ也可以從AUT 124接收應用程式響應,其中應用程式響應根據AUT的編程由AUT124生成。區域408可以包括被配置為將服務請求發送到觀測器126的觀測器接ロ。觀測器接ロ也接收服務響應,其包含例如對應於由於應用程式請求由AUT 124執行的過程的信息,關於AUT 124的信息,或者關於主管AUT 124的伺服器120的信息。區域410可以包括漏洞報告生成器,其被配置為分析從AUT 124和觀測器126接收到的數據並且基於該分析生成漏洞報告。
【權利要求】
1.一種系統,包括: 主管被測試的應用程式(AUT)的伺服器; 觀測器,其被配置為監控由所述AUT執行的指令;和 計算裝置,其通過公共的通信信道被通信地耦合到所述AUT和所述觀測器,所述計算裝置包括處理器和用於存儲計算機可讀指令的存儲器裝置,所述計算機可讀指令被配置為指示所述處理器: 發送應用程式請求到所述AUT,其中所述應用程式請求被配置為暴露所述AUT的潛在的漏洞; 根據AUT的編程從所述AUT接收應用程式響應; 發送服務請求到所述觀測器;並且 從所述觀測器接收服務響應,其包含對應於由於所述應用程式請求由所述AUT執行的指令的信息,關於所述AUT的信息,或者關於主管所述AUT的伺服器的信息。
2.權利要求1的系統,其中所述觀測器被配置為生成標識由於所述應用程式請求由所述AUT執行的指令的蹤跡,並且在所述服務響應的主體中發送所述蹤跡到所述計算裝置。
3.權利要求1的系統,其中所述觀測器被配置為至少部分地通過將定製的標題添加到所述應用程式響應來與所述計算裝置通信。
4.權利要求1的系統,所述存儲器裝置包括計算機可讀指令,其被配置為指示所述處理器從所述觀測器接收蹤跡信息,所述蹤跡信息包括多個漏洞蹤跡節點,每個漏洞蹤跡節點包含對應於由所述觀測器檢測`的漏洞的代碼位置。
5.權利要求4的系統,所述存儲器裝置包括計算機可讀指令,其被配置為基於包含相同代碼位置的漏洞蹤跡節點來指示所述處理器將所述多個漏洞蹤跡節點分組。
6.權利要求1的系統,其中所述觀測器被配置為監控所述AUT以識別新的在所述AUT的運行時間期間動態地生成的統ー資源定位符(URL),並且在所述應用程式響應的標題中返回更新欄位,所述更新欄位被配置為通知所述計算裝置所述AUT的攻擊表面已經改變。
7.權利要求1的系統,其中所述觀測器被配置為: 從所述計算裝置接收請求並且分析所述請求的標題; 基於所述標題的分析來識別所述請求為所述應用程式請求還是所述服務請求; 將所述應用程式請求傳遞到所述AUT ;並且 在不將所述服務請求傳遞到所述AUT的情況下處理所述服務請求。
8.ー種方法,包括: 發送應用程式請求到被測試的應用程式(AUT),其中所述應用程式請求被配置為暴露所述AUT的潛在的漏洞; 根據所述AUT的編程從所述AUT接收應用程式響應; 發送服務請求到監控由所述AUT執行的指令的觀測器;並且 從所述觀測器接收服務響應,其包含對應於由於所述應用程式請求由所述AUT執行的指令的信息,關於所述AUT的信息,或者關於主管所述AUT的伺服器的信息; 其中所述應用程式請求,應用程式響應,服務請求,和服務響應通過相同的網絡信道被傳送。
9.權利要求8的方法,包括在所述應用程式響應中接收文件未找到標題,通過所述觀測器將所述文件未找到標題添加到所述應用程式響應以表明由所述AUT產生文件未找到錯誤。
10.權利要求8的方法,其中所述服務請求是蹤跡服務請求,所述方法包括在從所述觀測器接收的所述服務響應的主體中接收棧蹤跡。
11.權利要求8的方法,包括在所述服務響應的所述主體中接收漏洞蹤跡節點,其中所述漏洞蹤跡節點標識由所述觀測器檢測到的漏洞。
12.權利要求8的方法,其中所述服務請求是攻擊表面服務請求,所述方法包括在所述服務響應的主體中接收關於所述AUT的所述攻擊表面的信息,所述攻擊表面包括在運行時間期間由所述AUT生成的靜態URL和動態URL。
13.一種非暫時性計算機可讀介質,包括代碼,其被配置為指示處理器: 發送應用程式請求到被測試的應用程式(AUT),其中所述應用程式請求被配置為暴露所述AUT的潛在的漏洞; 根據所述AUT的編程從所述AUT接收應用程式響應; 發送服務請求到觀測器,所述觀測器監控由所述AUT執行的指令;並且從所述觀測器接收服務響應,其包含對應於由於所述應用程式請求由所述AUT執行的指令的信息,關於所述AUT的信息,或者關於主管所述AUT的伺服器的信息; 其中所述應用程式請求,應用程式響應,服務請求,和服務響應通過相同的網絡信道被傳送。
14.權利要求13的非暫時性計算`機可讀介質,包括被配置為指示所述處理器將請求ID添加到所述應用程式請求的標題的代碼,所述標題唯一地標識所述應用程式請求,其中從所述觀測器接收的所述服務響應包括所述請求ID。
15.權利要求13的非暫時性計算機可讀介質,其中所述服務響應包括資料庫蹤跡節點,其包括對應於由於所述應用程式請求由所述AUT執行的資料庫詢問的信息。
【文檔編號】G06F11/36GK103562923SQ201180071281
【公開日】2014年2月5日 申請日期:2011年5月31日 優先權日:2011年5月31日
【發明者】B.V.徹斯, I.拉戈勒, P.E.哈默, R.A.斯皮特勒, S.P.費, P.S.賈格達爾 申請人:惠普發展公司,有限責任合夥企業

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀