基于動態(tài)污點的安全性掃描的制作方法
【專利說明】基于動態(tài)污點的安全性掃描
【背景技術(shù)】
[0001] 軟件安全性測試用來標(biāo)識應(yīng)用(諸如網(wǎng)絡(luò)應(yīng)用)中的弱點。針對基于網(wǎng)絡(luò)軟件的傳 統(tǒng)黑盒安全性測試通過使用安全性測試應(yīng)用來工作,安全性測試應(yīng)用通常被稱為掃描器, 其裝作是攻擊者。在黑盒方法中,掃描器通過作出超文本傳輸協(xié)議(HTTP)請求并且評估 HTTP響應(yīng)或者其不足來探索被測試應(yīng)用(AUT)以便發(fā)現(xiàn)其中該AUT接受輸入的所有URL。 其中AUT接受輸入的URL可以被稱為AUT的攻擊面(attacksurface)。掃描器隨后基于攻 擊面和可能的弱點類別來創(chuàng)建攻擊。掃描器通過評估程序的HTTP響應(yīng)來應(yīng)用攻擊以診斷 弱點的存在或者不存在。在黑盒方法中,掃描器無法洞悉AUT的內(nèi)部工作。
【附圖說明】
[0002] 以下的具體描述參考各圖,其中: 圖1是按照一個示例的能夠基于來自動態(tài)污點模塊的弱點列表來執(zhí)行安全性攻擊的 系統(tǒng)的方框圖; 圖2A和2B是按照各種示例的能夠基于由動態(tài)污點模塊生成的弱點列表來攻擊應(yīng)用的 應(yīng)用安全性掃描器的方框圖; 圖3是按照一個示例的被測試應(yīng)用的網(wǎng)絡(luò)應(yīng)用接口的圖; 圖4是按照一個示例的用于基于掃描策略來攻擊應(yīng)用的方法的流程圖,其中掃描策略 是基于由動態(tài)污點模塊生成的弱點列表的;以及 圖5是按照一個示例的能夠基于弱點列表來生成對網(wǎng)絡(luò)應(yīng)用的攻擊的計算設(shè)備的方 框圖。
【具體實施方式】
[0003] 本文描述的實施例提供用于執(zhí)行對應(yīng)用(諸如網(wǎng)絡(luò)應(yīng)用)進(jìn)行測試的技術(shù)。當(dāng)一個 公司希望知道該公司正投入生產(chǎn)的或者將要投入生產(chǎn)的網(wǎng)絡(luò)應(yīng)用有多么安全時,該公司通 常使用安全性測試解決方案,諸如穿透測試解決方案(例如,掃描器的使用)。公司可能希望 將投入生產(chǎn)的應(yīng)用的副本用作是被測試的應(yīng)用(AUT)。在質(zhì)量保證階段使用將投入生產(chǎn)的 應(yīng)用的AUT確保了生產(chǎn)中使用的應(yīng)用已經(jīng)被測試過。
[0004] 網(wǎng)絡(luò)應(yīng)用安全性掃描器是用于找到應(yīng)用(諸如網(wǎng)絡(luò)應(yīng)用)中的安全性弱點的方法。 在一些場景下,爬行器(crawler)首先人工地或者自動地確定攻擊面。對一些應(yīng)用而言,攻 擊面可以是大的。
[0005]隨后,掃描器仔細(xì)檢查攻擊面列表,并且對于在攻擊面列表中的每個入口 (entry),可以執(zhí)行擴(kuò)展的大量攻擊來確定是否會有弱點發(fā)生。從攻擊面中確定弱點是有挑 戰(zhàn)性的,因為掃描器可能對在應(yīng)用中執(zhí)行的代碼具有有限的能見度(visibility)。由于有 限的能見度,所以對每個攻擊面入口執(zhí)行一組攻擊。進(jìn)一步地,在某些場景中,被執(zhí)行的少 數(shù)攻擊發(fā)現(xiàn)了弱點。照此,執(zhí)行了許多攻擊而只有少數(shù)攻擊是成功的。這導(dǎo)致掃描器測試 是耗費時間的。對于大型網(wǎng)站,掃描可能會花費數(shù)小時或者甚至數(shù)天來完成。用戶和顧客 可能希望較快速的掃描時間。
[0006] 關(guān)于應(yīng)用的附加洞察力信息可以幫助掃描器作出更加智能的決策,其關(guān)于應(yīng)該執(zhí) 行什么攻擊以及哪些攻擊是不值得考慮的。降低攻擊的數(shù)量直接改進(jìn)了掃描時間。
[0007] 相應(yīng)地,提供方法來通過使用動態(tài)污點分析以向掃描器報告可能的弱點類別從而 加速掃描過程。隨后,掃描器可以基于由動態(tài)污點分析所確定的弱點類別來選擇性地掃描 應(yīng)用。因此,可以通過將攻擊面上的掃描限制為基于動態(tài)污點分析所確定的特定弱點來降 低將被實行的測試數(shù)量。照此,總體的掃描可以比不使用來自動態(tài)污點分析的信息要更快。
[0008]圖1是按照一個示例的能夠基于來自動態(tài)污點模塊的弱點列表來執(zhí)行安全性攻 擊的系統(tǒng)的方框圖。系統(tǒng)100可以包括應(yīng)用安全性掃描器102和被測試應(yīng)用(AUT)104。AUT 104可以在一個或者多個計算設(shè)備上實施,諸如服務(wù)器(例如,Java2平臺、企業(yè)版本(J2EE) 應(yīng)用服務(wù)器、互聯(lián)網(wǎng)信息服務(wù)器等等)。進(jìn)一步地,AUT104可以包括動態(tài)污點模塊110。
[0009]AUT104可以以任何適當(dāng)?shù)幕诰W(wǎng)絡(luò)的計算機(jī)語言(除了別的之外,諸如JAVA或 者.NET)來編碼。AUT104可以在適當(dāng)?shù)能浖蚣軆?nèi)操作,除了別的以外,諸如Struts、 Struts2、ASP.NETMVC、甲骨文應(yīng)用服務(wù)器(OracleWebLogic)和SpringMVC。軟件框架包 括提供泛化的功能性的一組共用代碼模塊,其可以選擇性地被用戶代碼覆蓋(override)或 者專門化以提供具體的功能性。AUT104可以被配置用來執(zhí)行Java虛擬機(jī)(JVM)、共用語 言運(yùn)行時間(CLR)和/或用于處理來自掃描器102的請求的其它運(yùn)行時間中的一個或者多 個實例。由軟件框架或者運(yùn)行時間的共用代碼模塊提供的編程指令可以被稱為容器代碼。 特定于AUT104的定制的編程指令可以被稱為用戶代碼。
[0010] 掃描器102可以被認(rèn)為是可由計算設(shè)備執(zhí)行的程序,該計算設(shè)備通過諸如網(wǎng)絡(luò)接 口那樣的前端與AUT104進(jìn)行通信以便例如通過執(zhí)行黑盒測試來標(biāo)識AUT104的潛在安全 性弱點和架構(gòu)劣勢。
[0011]AUT104包括用于使能通過網(wǎng)絡(luò)在掃描器102和AUT104之間進(jìn)行通信的網(wǎng)絡(luò)接 口(未示出)。當(dāng)AUT104是可得到的以用于一般使用時,網(wǎng)絡(luò)接口暴露了AUT104的攻擊 面并且是將最終被用來提供對AUT104的訪問的相同接口。通過網(wǎng)絡(luò)接口在掃描器102和 AUT104之間的通信可以通過從掃描器102發(fā)布給AUT104的應(yīng)用(例如,經(jīng)由HTTP)請求 和從AUT104發(fā)布給掃描器102的HTTP響應(yīng)來實行。針對AUT104的請求可以被稱為應(yīng) 用請求,而從AUT104接收的響應(yīng)可以被稱為應(yīng)用響應(yīng)。由掃描器102所生成的應(yīng)用請求 可以被配置成暴露AUT104的潛在弱點、響應(yīng)于由AUT104所引起的測試等等。
[0012] 網(wǎng)絡(luò)可以包括例如公共數(shù)據(jù)網(wǎng)絡(luò),諸如互聯(lián)網(wǎng)、局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、城域 網(wǎng)(MAN)、電纜網(wǎng)絡(luò)、光纖網(wǎng)絡(luò)、其組合等等。在某些示例中,無線網(wǎng)絡(luò)可以包括蜂窩網(wǎng)絡(luò)、衛(wèi) 星通信、無線LAN等等。
[0013] 在一種用于對AUT104實行安全性測試的方法中,掃描器102可以在安全性測試 的爬行階段期間從動態(tài)污點模塊110接收信息。在一個示例中,動態(tài)污點模塊110是特殊 的運(yùn)行時間模塊,用來在AUT104的程序執(zhí)行期間監(jiān)測安全性弱點。動態(tài)污點模塊110類 似于程序調(diào)試器一樣工作,其在預(yù)定義的程序點(例如,與調(diào)試器中的斷點相似)處截獲程 序的執(zhí)行并且執(zhí)行安全性檢查。動態(tài)污點分析發(fā)現(xiàn)安全性弱點,其通過以下完成:首先將不 受信任的用戶輸入標(biāo)記為可能的污點源并且隨后跟蹤用戶輸入來確定來自用戶輸入的任 何數(shù)據(jù)是否可能被用在任何危險的功能調(diào)用中。危險的功能調(diào)用的示例包括直接數(shù)據(jù)庫查 詢(例如,直接結(jié)構(gòu)化查詢語言(SQL)查詢、文件打開、文件刪除、向超文本標(biāo)記語言響應(yīng)流 的寫入功能、殼(shell)命令執(zhí)行、直接可擴(kuò)展標(biāo)記語言(XML)查詢、用來向日志文件寫入 錯誤消息的功能、直接用戶目錄查詢等等??梢酝ㄟ^用特殊庫編譯AUT104來將動態(tài)污點 模塊110添加到應(yīng)用或者通