利用計算機(jī)網(wǎng)絡(luò)為測試計算機(jī)軟件應(yīng)用優(yōu)化測試數(shù)據(jù)有效載荷的選擇的制作方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明總體上涉及計算機(jī)軟件測試。
【背景技術(shù)】
[0002] 動態(tài)分析工具經(jīng)常被計算機(jī)軟件開發(fā)人員用來測試計算機(jī)軟件應(yīng)用,通常的做法 是,首先,探索計算機(jī)軟件應(yīng)用來發(fā)現(xiàn)它的接口,包括通過其可向應(yīng)用提供數(shù)據(jù)的那些接 口;然后,與應(yīng)用的接口交互,并監(jiān)視應(yīng)用對這樣的交互的響應(yīng)。在一種動態(tài)分析中,通過向 應(yīng)用提供帶有已知的惡意屬性的測試數(shù)據(jù),然后觀察應(yīng)用的行為,測試計算機(jī)軟件應(yīng)用的 安全漏洞。例如,通過采用在一臺計算機(jī)上運(yùn)行的"黑盒測試儀",所述"黑盒測試儀"經(jīng)由 計算機(jī)網(wǎng)絡(luò)向另一計算機(jī)托管的網(wǎng)絡(luò)應(yīng)用發(fā)送HTTP請求,動態(tài)分析可被用于測試通過計 算機(jī)網(wǎng)絡(luò)(比如因特網(wǎng))訪問的網(wǎng)絡(luò)應(yīng)用。所述HTTP請求配置有從測試數(shù)據(jù)有效載荷庫 抽取的惡意測試數(shù)據(jù)有效載荷,該惡意測試數(shù)據(jù)有效載荷被設(shè)計用來測試比如SQL注入、 跨站點腳本、以及命令注入的安全漏洞。
[0003] "黑盒測試儀"可以向計算機(jī)軟件應(yīng)用發(fā)送所有可能的測試數(shù)據(jù)有效載荷以便測 試所有可能的安全漏洞。然而,由于經(jīng)由計算機(jī)網(wǎng)絡(luò)發(fā)送許多HTTP請求在時間和寬帶方面 的成本高,經(jīng)由計算機(jī)網(wǎng)絡(luò)測試網(wǎng)絡(luò)應(yīng)用的商業(yè)黑盒測試儀通常對每個被測試的HTTP參 數(shù)僅發(fā)送幾十個測試有效載荷以便控制這種成本。不幸的是,這往往意味著一些安全漏洞 被漏測。
【發(fā)明內(nèi)容】
[0004] 根據(jù)第一方面,提供了用于測試計算機(jī)軟件應(yīng)用的方法,所述方法包括配置第一 計算機(jī)以便執(zhí)行由在第二計算機(jī)的計算機(jī)軟件應(yīng)用使用的數(shù)據(jù)檢查軟件的副本,使用在所 述第一計算機(jī)的所述數(shù)據(jù)檢查軟件處理測試數(shù)據(jù)有效載荷的第一副本,其中所述測試數(shù)據(jù) 有效載荷被配置為測試相關(guān)安全漏洞,確定所述測試數(shù)據(jù)有效載荷的所述第一副本被在所 述第一計算機(jī)的數(shù)據(jù)檢查軟件認(rèn)可用于進(jìn)一步處理,并經(jīng)由計算機(jī)網(wǎng)絡(luò)向在所述第二計算 機(jī)的所述計算機(jī)軟件應(yīng)用發(fā)送所述測試數(shù)據(jù)有效載荷的第二副本用于處理威脅(threat)。
[0005] 優(yōu)選地,所述方法進(jìn)一步包括識別由所述計算機(jī)軟件應(yīng)用使用的所述數(shù)據(jù)檢查 軟件。更優(yōu)選地,所述識別包括確定所述數(shù)據(jù)檢查軟件是消毒劑(sanitizer)和驗證器 (validator)中的任意一個。更優(yōu)選地,所述方法進(jìn)一步包括裝備所述計算機(jī)軟件應(yīng)用以便 執(zhí)行所述識別。
[0006] 優(yōu)選地,所述測試數(shù)據(jù)有效載荷被儲存在所述第一計算機(jī)。更優(yōu)選地,所述測試數(shù) 據(jù)有效載荷包括被設(shè)計為利用所述安全漏洞的惡意有效載荷。更優(yōu)選地,所述確定包括確 定所述測試數(shù)據(jù)有效載荷的所述第一副本被配置為在被所述第一計算機(jī)的所述數(shù)據(jù)檢查 軟件處理后測試其相關(guān)安全漏洞。更優(yōu)選地,執(zhí)行所述配置、處理、確定和發(fā)送,其中所述計 算機(jī)軟件應(yīng)用包括網(wǎng)絡(luò)應(yīng)用。
[0007] 根據(jù)第二方面,提供了用于測試計算機(jī)軟件應(yīng)用的系統(tǒng),所述系統(tǒng)包括:可配置 的有效載荷測試儀,配置第一計算機(jī)執(zhí)行由在第二計算機(jī)的計算機(jī)軟件應(yīng)用使用的數(shù)據(jù)檢 查軟件副本,使用在所述第一計算機(jī)的所述數(shù)據(jù)檢查軟件處理測試數(shù)據(jù)有效載荷的第一副 本,其中所述測試數(shù)據(jù)有效載荷可配置為測試相關(guān)的安全漏洞,并確定所述測試數(shù)據(jù)有效 載荷的所述第一副本被在所述第一計算機(jī)的所述數(shù)據(jù)檢查軟件認(rèn)可用于進(jìn)一步處理;以及 應(yīng)用測試儀,可配置為利用計算機(jī)網(wǎng)絡(luò)向在所述第二計算機(jī)的所述計算機(jī)軟件應(yīng)用發(fā)送所 述測試數(shù)據(jù)有效載荷的第二副本用于處理威脅。
[0008] 根據(jù)第三方面,提供了用于測試計算機(jī)軟件應(yīng)用的計算機(jī)程序產(chǎn)品,所述計算機(jī) 程序產(chǎn)品包括:非暫時的、計算機(jī)可讀存儲介質(zhì)和包含于所述計算機(jī)可讀存儲介質(zhì)中的計 算機(jī)可讀程序代碼,其中所述計算機(jī)可讀程序代碼是可配置的,其配置第一計算機(jī)以便執(zhí) 行由在第二計算機(jī)的計算機(jī)軟件應(yīng)用使用的數(shù)據(jù)檢查軟件副本,使用在所述第一計算機(jī)的 所述數(shù)據(jù)檢查軟件處理測試數(shù)據(jù)有效載荷的第一副本,其中所述測試數(shù)據(jù)有效載荷被配置 為測試相關(guān)安全漏洞,確定所述測試數(shù)據(jù)有效載荷的所述第一副本被在所述第一計算機(jī)的 所述數(shù)據(jù)檢查軟件認(rèn)可用于進(jìn)一步處理,以及利用計算機(jī)網(wǎng)絡(luò)向在所述第二計算機(jī)的所述 計算機(jī)網(wǎng)絡(luò)應(yīng)用發(fā)送所述測試數(shù)據(jù)有效載荷的第二副本用于處理威脅。
【附圖說明】
[0009] 現(xiàn)在將僅通過示例的方式,參考如下附圖來描述本發(fā)明的優(yōu)選實施例:
[0010] 圖1是根據(jù)本發(fā)明實施例構(gòu)成和實施的用于測試計算機(jī)軟件應(yīng)用的系統(tǒng)的簡化 的概念圖;
[0011] 圖2是根據(jù)本發(fā)明實施例實施的圖1的系統(tǒng)的示例性操作方法的簡化的流程圖; 以及
[0012] 圖3是根據(jù)本發(fā)明實施例構(gòu)成和實施的計算系統(tǒng)的示例性硬件實現(xiàn)的簡化的框 圖。
【具體實施方式】
[0013] 現(xiàn)在在一個或多個實施例的上下文內(nèi)描述本發(fā)明,盡管所述描述旨在作為整體說 明本發(fā)明,并不意圖被解釋為將本發(fā)明限制到所示實施例。可以理解,雖然這里沒有具體示 出,然而對于本領(lǐng)域技術(shù)人員來說可以想到的不同的修改,都在本發(fā)明的保護(hù)范圍內(nèi)。
[0014] 所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算 機(jī)程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、 完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實施方 式,這里可以統(tǒng)稱為"電路"、"模塊"或"系統(tǒng)"。此外,在一些實施例中,本發(fā)明的各個方面 還可以實現(xiàn)為在一個或多個計算機(jī)可讀介質(zhì)中的計算機(jī)程序產(chǎn)品的形式,該計算機(jī)可讀介 質(zhì)中包含計算機(jī)可讀的程序代碼。
[0015] 可以采用一個或多個計算機(jī)可讀介質(zhì)的任意組合。計算機(jī)可讀介質(zhì)可以是計算 機(jī)可讀信號介質(zhì)或者計算機(jī)可讀存儲介質(zhì)。計算機(jī)可讀存儲介質(zhì)例如可以是一一但不限 于一一電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算 機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便 攜式計算機(jī)盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器 (EPROM或閃存)、光纖、便攜式緊湊盤只讀存儲器(⑶-ROM)、光數(shù)據(jù)存儲器件、磁數(shù)據(jù)存儲 器件、或者上述的任意合適的組合。在本文件中,計算機(jī)可讀存儲介質(zhì)可以是任何包含或存 儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0016] 計算機(jī)可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號, 其中承載了計算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括一一但 不限于一一電磁信號、光信號或上述的任意合適的組合。計算機(jī)可讀的信號介質(zhì)還可以是 計算機(jī)可讀存儲介質(zhì)以外的任何計算機(jī)可讀介質(zhì),該計算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者 傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0017] 計算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一一但不限 于一一無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0018] 可以以一種或多種程序設(shè)計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的計算 機(jī)程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如Java、Smalltalk、C++ 等,還包括常規(guī)的過程式程序設(shè)計語言一諸如"C"語言或類似的程序設(shè)計語言。程序代碼可 以完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨立的軟件包執(zhí)行、 部分在用戶計算機(jī)上部分在遠(yuǎn)程計算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。 在涉及遠(yuǎn)程計算機(jī)的情形中,遠(yuǎn)程計算機(jī)可以通過任意種類的網(wǎng)絡(luò)一一包括局域網(wǎng)(LAN) 或廣域網(wǎng)(WAN)-連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利用因特網(wǎng)服務(wù) 提供商來通過因特網(wǎng)連接)。
[0019] 下面將參照根據(jù)本發(fā)明實施例所要求保護(hù)的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn) 品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖 和/或框圖中各方框的組合,都可以由計算機(jī)程序指令實現(xiàn)。這些計算機(jī)程序指令可以提 供給通用計算機(jī)、專用計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器, 使得這些計算機(jī)程序指令在通過計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生 了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0020] 也可以把這些計算機(jī)程序指令存儲在計算機(jī)可讀介質(zhì)中,這些指令使得計算機(jī)、 其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,