分析web應用程序的結構的制作方法
【專利說明】
【背景技術】
[0001]使用軟件安全測試來確定諸如web應用程序的應用程序中的漏洞。基于網絡的軟件工作的傳統的黑盒安全測試通過利用偽裝成攻擊者的、通常被稱為掃描器的安全測試應用程序,而發揮作用。掃描器通過發出HTTP請求并分析HTTP響應或缺乏HTTP響應來探宄被測應用程序(AUT),以便發現所有AUT接受輸入的URL。AUT接受輸入的URL可以被稱為AUT的受攻擊面。然后,掃描器根據受攻擊面和可能的漏洞類別來創建攻擊。掃描器應用程序攻擊來通過評估程序的HTTP響應以診斷漏洞的存在或不存在。
【附圖說明】
[0002]下面的詳細說明參照附圖,附圖中:
[0003]圖1為根據一個示例的用于分析web應用程序的結構的計算系統的框圖;
[0004]圖2A和圖2B為根據各種示例的規則和令牌的框圖;
[0005]圖3為根據一個示例的用于分析web應用程序的結構的方法的流程圖;和
[0006]圖4為根據一個示例的能夠分析web應用程序的結構的裝置的框圖。
【具體實施方式】
[0007]本發明描述的實施例提供用于對諸如web應用程序的應用程序進行測試的技術。當公司想要知道公司所擁有的生產中的或將要投產的web應用程序有多安全時,公司經常采用諸如滲透測試解決方案(例如,使用掃描器)、模糊測試、漏洞測試、軟件安全測試、網站安全測試、它們的組合等的安全測試解決方案。公司可能希望使用生產中的應用程序的副本作為被測應用程序(AUT)。
[0008]自動動態web應用程序安全掃描器在攻擊AUT之前,先探宄AUT。這一過程可以被稱為“爬行”。爬行AUT可以通過分析web應用程序的超文本標記語言(HTML)和在諸如嵌入到web應用程序掃描器中的網絡瀏覽器布局引擎的網絡瀏覽器布局引擎的受控環境中執行AUT的代碼來完成。
[0009]由于使用Web 2.0應用程序的增長,它們復雜的結構妨礙了 HTML頁面分析并使得瀏覽器級別的處理變得復雜。許多Web2.0應用程序具有最小引導的HTML代碼,最小引導的HTML代碼下載主代碼,例如,直接運行于瀏覽器文檔對象模型(DOM)和JavaScript(JS)結構上的JS代碼、異步JS和XML(AJAX)調用、動態創建的鏈接、DOM事件等等。有時,由于運行了 JS代碼,因此其它HTML文檔不在應用程序的周期內取出。
[0010]一種爬行這樣嚴重地基于JS的應用程序的方法是允許在標準瀏覽器引擎中執行應用程序,然后通過把鼠標和鍵盤事件發送到Web應用程序的用戶界面(UI)元素來模擬用戶動作,征求對JS代碼的評價,這可能會改變Web應用程序的狀態并可能提供有關Web應用程序的攻擊媒介的信息。但是,這種方法是非常耗時、不可靠的,而且容易“掃描失控”。一個“掃描失控”的示例是掃描在頁面上發現的“日歷”控件:盡管日歷中所有日期都是掃描器生成事件的有效目標,但是對可能的日歷日期的嘗試點擊會導致基本上是無限的掃描時間。因此,高級JS框架可以廣泛地利用“事件冒泡”來鞏固事件處理程序,防止系統找到合適的事件目標,并且最復雜的部件(例如日歷、時間表、樹、表格等)可能呈現對于爬蟲在可管理的時間中進行遍歷來說,太多的可操作元素。
[0011]此外,通過與所有是用戶事件的潛在目標的Π部件交互,以進行窮盡的Π級的爬行是低效率的。應用程序內的某些UI元素,由于事件處理程序屬于應用程序的結構內的其它元素(例如,自下而上檢測或現代瀏覽器內的DOM事件的冒泡)不能被識別為事件的有效目標。進一步地,通過發送鼠標和鍵盤事件的應用程序的DOM元素的完全飽和是很耗時的,可能會破壞應用程序邏輯,因此是行不通的。此外,缺少關于應用程序的邏輯的認識不允許與復雜Π控件的正確交互。如此,這些挑戰阻止了通過基于Π的爬行而正確發現應用程序面,這大大削弱了自動動態web應用程序掃描的質量。
[0012]因此,本發明中公開的各種實施例涉及遵照一套區別處理以具體方式寫成的應用程序的預定義規則,簡化應用程序的結構以列出(例如,圖或樹)可操作的元件。利用這種方法,可以提供對附加的框架(例如,jQuery、Dojo等)的支持,從而實現對應用程序的更高質量的掃描并發現先前被隱藏的應用程序狀態中的漏洞。
[0013]該方案的優點包括創建應用程序的結構的簡化但是準確的表示。使用用于描述對特定類型的應用程序和具體的JS框架的分析過程的良好定義的規則語言來實現對應用程序的高覆蓋。
[0014]為了發現應用程序受攻擊面,web應用程序掃描器在web應用程序的UI元素上模擬用戶動作。DOM分析器利用圖2A中進一步詳細說明的規則來遍歷應用程序的結構,并把復雜的DOM轉換為圖2B中進一步詳細說明的簡明列表可操作的令牌。在某些示例中,令牌表示為鼠標或鍵盤事件的有效目標的DOM元素,或可能被調用、評價、或以任何其它方式修改的JS實體。
[0015]每條規則可以包括用于檢查該規則是否應該在web應用程序的具體框架上激活的規則相關屬性,或由其組成。在一些示例中,規則可以是JS框架專用的,包括所使用的JS的版本。在一個示例中,如果規則是活躍的,那么該規則的所有選擇器都被調用。然后,每個選擇器都被用在對web應用程序的DOM和JS結構的遍歷中,以返回令牌的列表。在另一示例中,如果規則是活躍的,那么可以根據對web應用程序的進一步分析(例如,根據web應用程序的緩存)來確定選擇器。在這里詳細說明上述進一步分析。
[0016]在一些示例中,選擇器是用來識別感興趣的DOM中的元素的技術或機制。在一些示例中,選擇器可以被內置到用于描述應用程序的語言中,例如層疊樣式表(CSS)具有內置的選擇器。在CSS的示例中,可以用來選擇類,而“#”可以用來選擇id。利用這一方法,“.role”可以用來選擇具有類“ι.ο1θ”的DOM中的每一個元素。在其它示例中,選擇器可以由規則產生。例如,規則可以編寫JavaScript或其它腳本/代碼以返回作為令牌的、一組選定的元素。
[0017]在某些示例中,令牌表示為鼠標或鍵盤事件的有效目標的DOM元素,或可能被調用、評價、或以任何其它方式修改的JS實體。令牌包括可以被用來檢索元件和DOM或JS實體的允許動作的列表的定位器(例如,定位器可以是簡單的XPath、TruClient特定的定位器等)。
[0018]可以識別有關的規則,然后可以啟用相關的選擇器。于是,可以利用選擇器分析web應用程序的DOM以產生令牌。這擴大了應用程序的抓取范圍,并在應用程序中發現較短的業務流程路徑。令牌可以被發送給掃描器以掃描web應用程序。在掃描過程中,令牌可以由web應用程序掃描器使用來定位有關DOM對象/JS實體并激活它們。這可以被用來確定漏洞和關于web應用程序的其它消息。
[0019]圖1為根據一個示例的用于分析web應用程序的結構的計算系統的框圖。在此示例中,計算系統100可以包括用于在web應用程序104的用戶界面元素上模擬用戶動作的掃描器102。web應用程序104可以被加載到瀏覽器布局引擎106中,并由文檔分析器108根據一組規則110進行分析。計算系統100的一個或多個部件可以利用至少一個處理器和存儲器實現。進一步地,一個或多個計算機可以被用來實現部件中的每一個部件,或者部件中的每一個部件都可以被實現在單個計算系統中。
[0020]掃描器102可以發送web應用程序104的定位器或標識符(例如,統一資源定位符(URL))給瀏覽器布局引擎106。瀏覽器布局引擎106可以加載web應用程序104,例如,根據URL加載web應用程序104。在一些示例中,瀏覽器布局引擎106可以是被配置來作為掃描器計算系統100的部分而起作用的、網絡瀏覽器或修改的瀏覽器。web應用程序104的示例包括日歷應用程序、電子郵件界面、新聞網頁、諸如視頻流的其它內容資源、生產應用程序等等。
[0021]然后,掃描器102可以在web應用程序104的用戶界面元素上模擬用戶動作。模擬可以是隨機的,或基于預定的組。模擬可以當文檔分析器108遍歷web應用程序104的結構時發生。模擬可以被用來幫助文檔分析器108確定要激活一條或多條規則來產生可操作的令牌。如此,文檔分析器108根據規則遍歷web應用程序