欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于自動(dòng)化檢測(cè)輸入和輸出驗(yàn)證和資源管理漏洞的系統(tǒng)和方法與流程

文檔序號(hào):11935254閱讀:544來(lái)源:國(guó)知局
用于自動(dòng)化檢測(cè)輸入和輸出驗(yàn)證和資源管理漏洞的系統(tǒng)和方法與流程

本申請(qǐng)要求于2014年6月24日提交的美國(guó)臨時(shí)申請(qǐng)No.61/998,318的權(quán)益。上述申請(qǐng)的全部教導(dǎo)通過引用并且入本文。



背景技術(shù):

測(cè)試甚至簡(jiǎn)單的商業(yè)計(jì)算機(jī)應(yīng)用可能是非常復(fù)雜的,因?yàn)橐獪y(cè)試的獨(dú)立代碼路徑的數(shù)目可能非常大。這些代碼路徑中的每個(gè)又由非常大量的單獨(dú)函數(shù)組成,函數(shù)可以由使得測(cè)試進(jìn)一步復(fù)雜的非相鄰指令的一個(gè)或多個(gè)塊組成。在計(jì)算機(jī)行業(yè)中需要一種以有效的方式執(zhí)行這樣的復(fù)雜測(cè)試的方法。



技術(shù)實(shí)現(xiàn)要素:

本公開涉及自動(dòng)化檢測(cè)輸入/輸出驗(yàn)證(例如,測(cè)試)和輸出資源管理漏洞的系統(tǒng)和方法。系統(tǒng)和方法可以分析計(jì)算機(jī)例程的集合。分析可以包括確定針對(duì)集合中的一個(gè)或多個(gè)計(jì)算機(jī)例程的意外行為的漏洞的可能性。基于分析,系統(tǒng)和方法可以標(biāo)識(shí)集合中具有漏洞的可能性的一個(gè)或多個(gè)計(jì)算機(jī)例程。系統(tǒng)和方法可以通過測(cè)試技術(shù)來(lái)異步并且動(dòng)態(tài)地操縱一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè)。系統(tǒng)和方法可以確定一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè)的意外行為。

在一些實(shí)施例中,一種系統(tǒng)和方法可以部署一個(gè)或多個(gè)補(bǔ)丁以校正一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè)的意外行為。在一些實(shí)施例中,系統(tǒng)和方法可以分析計(jì)算機(jī)例程的集合和集合中的計(jì)算機(jī)例程的至少一個(gè)對(duì)應(yīng)序列。

在系統(tǒng)和方法的一些實(shí)施例中,分析還可以包括以下中的至少一項(xiàng):提取包括與集合中的至少一個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的使用頻率的直方圖,確定與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的一個(gè)或多個(gè)緩沖器(例如,存儲(chǔ)器分段)讀取或?qū)懭胗?jì)算機(jī)操作的大小,確定與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的一個(gè)或多個(gè)對(duì)應(yīng)堆棧的大小,基于檢查對(duì)應(yīng)循環(huán)大小來(lái)確定一個(gè)或多個(gè)存儲(chǔ)器讀取或?qū)懭氩僮鞯拇笮?,以及?zhí)行集合中的至少一個(gè)計(jì)算機(jī)例程的污染分析。直方圖可以包括但不限于以下中的至少一項(xiàng):日志文件、圖表、表格、其他用戶顯示和其他類型的顯示。一些實(shí)施例可以包括一個(gè)或多個(gè)計(jì)算機(jī)線程。一些實(shí)施例可以包括兩個(gè)或更多個(gè)計(jì)算機(jī)線程(例如,多線程)。在一些實(shí)施例中,計(jì)算機(jī)線程(例如,計(jì)算機(jī)執(zhí)行線程)可以表示可以由調(diào)度器獨(dú)立管理的編程指令的最小序列(例如,資源被分配以完成工作的方法),調(diào)度器可以是計(jì)算機(jī)操作系統(tǒng)的一部分。在一些實(shí)施例中,計(jì)算機(jī)線程可以包括計(jì)算機(jī)例程的序列,計(jì)算機(jī)例程可以包括函數(shù)調(diào)用和系統(tǒng)調(diào)用中的至少一個(gè)(例如,一個(gè)或多個(gè))。根據(jù)一些實(shí)施例,直方圖可以描繪計(jì)算機(jī)應(yīng)用的計(jì)算機(jī)線程的給定函數(shù)或系統(tǒng)調(diào)用被執(zhí)行多少次。

在系統(tǒng)和方法的一些實(shí)施例中,一個(gè)或多個(gè)計(jì)算機(jī)例程可以包括以下中的至少一項(xiàng)(或多項(xiàng)):函數(shù)和系統(tǒng)調(diào)用。系統(tǒng)和方法的一些實(shí)施例可以通過以下中的至少一項(xiàng)來(lái)操縱一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè):修改與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的數(shù)據(jù),數(shù)據(jù)超過對(duì)應(yīng)緩沖器(例如,存儲(chǔ)器分段)大小,以及修改在與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的(例如,由一個(gè)或多個(gè)計(jì)算機(jī)例程訪問的)存儲(chǔ)器區(qū)域中聲明的值。

系統(tǒng)和方法的一些實(shí)施例可以確定一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè)的意外行為,包括確定與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的線程的控制流作為操縱的結(jié)果而已經(jīng)改變,確定導(dǎo)致線程改變其控制流的失敗狀況,以及顯示失敗狀況。

在系統(tǒng)和方法的一些實(shí)施例中,對(duì)于一個(gè)或多個(gè)計(jì)算機(jī)例程的至少一個(gè)函數(shù),計(jì)算機(jī)測(cè)試技術(shù)可以向至少一個(gè)函數(shù)的輸入、至少一個(gè)函數(shù)內(nèi)的邏輯和至少一個(gè)函數(shù)的輸出中的至少一項(xiàng)提供無(wú)效、意外和隨機(jī)數(shù)據(jù)中的至少一項(xiàng)。在系統(tǒng)和方法的一些實(shí)施例中,對(duì)于一個(gè)或多個(gè)計(jì)算機(jī)例程的至少一個(gè)系統(tǒng)調(diào)用,計(jì)算機(jī)測(cè)試技術(shù)可以向與至少一個(gè)系統(tǒng)調(diào)用相關(guān)聯(lián)的系統(tǒng)調(diào)用參數(shù)提供無(wú)效、意外和隨機(jī)數(shù)據(jù)中的至少一項(xiàng)。

在系統(tǒng)和方法的一些實(shí)施例中,系統(tǒng)調(diào)用參數(shù)可以與以下中的至少一項(xiàng)相關(guān)聯(lián):線程同步、進(jìn)程同步、線程調(diào)度、進(jìn)程調(diào)度、存儲(chǔ)器、存儲(chǔ)器分配、存儲(chǔ)器解除分配、存儲(chǔ)器寫入、存儲(chǔ)器讀取、網(wǎng)絡(luò)套接字、網(wǎng)絡(luò)套接字的創(chuàng)建、網(wǎng)絡(luò)套接字輸入、網(wǎng)絡(luò)套接字輸出、管道創(chuàng)建、系統(tǒng)輸入、系統(tǒng)輸出、共享存儲(chǔ)器先入先出(fifo)創(chuàng)建、終端輸入、終端輸出、文件處理、文件創(chuàng)建、文件寫入、文件讀取、磁盤輸入和磁盤輸出。

在一些實(shí)施例中,一種系統(tǒng)可以包括分析引擎。系統(tǒng)還可以包括可以被通信地耦合至分析引擎的驗(yàn)證引擎(例如,正被檢查的線程和過程)。系統(tǒng)還可以包括可以被通信地耦合至分析引擎和驗(yàn)證引擎中的至少一項(xiàng)的儀器化引擎。

在一些實(shí)施例中,分析引擎和驗(yàn)證引擎可以包括包含一個(gè)或多個(gè)處理器的處理器結(jié)構(gòu)。在一些實(shí)施例中,分析引擎、驗(yàn)證引擎和儀器化引擎可以包括包含一個(gè)或多個(gè)處理器的處理器結(jié)構(gòu)。

附圖說(shuō)明

根據(jù)如附圖中所示的本公開的示例實(shí)施例的以下更具體的描述,前述內(nèi)容將很清楚,在附圖中,相同的附圖標(biāo)記在不同的視圖中指代相同的部分。附圖不一定是按比例的,重點(diǎn)在于示出本公開的實(shí)施例。

圖1A示出了在本公開的實(shí)施例中的可以包括功能并且還可以包括錯(cuò)誤處理能力的給定函數(shù)。

圖1B示出了根據(jù)本公開的實(shí)施例的給定函數(shù)的狀態(tài)。

圖2示出了在本公開的實(shí)施例中的創(chuàng)建一個(gè)或多個(gè)線程的計(jì)算機(jī)應(yīng)用的執(zhí)行,一個(gè)或多個(gè)線程又可以執(zhí)行一個(gè)或多個(gè)函數(shù)。

圖3示出了在本公開的實(shí)施例中的用于自動(dòng)化檢測(cè)輸入/輸出驗(yàn)證和輸出資源管理漏洞的示例方法(和系統(tǒng))的流程圖。

圖4A示出了計(jì)算機(jī)應(yīng)用中的一個(gè)或多個(gè)特征可以如何包括一個(gè)或多個(gè)獨(dú)立代碼路徑,這些代碼路徑又可以在本公開的實(shí)施例中執(zhí)行一個(gè)或多個(gè)不同的函數(shù)集合。

圖4B示出了根據(jù)本公開的實(shí)施例的計(jì)算機(jī)應(yīng)用的示例操作環(huán)境(例如,應(yīng)用環(huán)境)。

圖4C示出了根據(jù)本公開的實(shí)施例的不同類型的系統(tǒng)資源。

圖5A示出了根據(jù)本公開的實(shí)施例的直方圖。

圖5B示出了根據(jù)本公開的實(shí)施例的可以在其上執(zhí)行壓力測(cè)試的系統(tǒng)資源列表和攻擊向量列表。

圖6示出了根據(jù)本公開的實(shí)施例的儀表板上的壓力測(cè)試的結(jié)果。

圖7A示出了在本公開的實(shí)施例中的客戶端和分析引擎的示例框圖。

圖7B示出了用于在圖7A的客戶端與分析引擎之間傳輸數(shù)據(jù)的示例協(xié)議數(shù)據(jù)單元(PDU)。

圖8示出了其中可以實(shí)現(xiàn)本公開的實(shí)施例的計(jì)算機(jī)網(wǎng)絡(luò)或類似的數(shù)字處理環(huán)境。

圖9示出了圖8的計(jì)算機(jī)系統(tǒng)中的計(jì)算機(jī)(例如,客戶端處理器/設(shè)備或服務(wù)器計(jì)算機(jī))的示例性內(nèi)部結(jié)構(gòu)的圖。

具體實(shí)施方式

以下是本公開的示例實(shí)施例的描述。

本文中引用的所有專利、公開的申請(qǐng)和參考文獻(xiàn)的教導(dǎo)通過引用整體被合并。

一些實(shí)施例可以幫助不僅提高軟件(例如,計(jì)算機(jī)應(yīng)用)的基本功能的魯棒性而且提高軟件錯(cuò)誤處理功能的魯棒性,并且還可以試驗(yàn)當(dāng)執(zhí)行被設(shè)計(jì)以試驗(yàn)和測(cè)試應(yīng)用的功能的測(cè)試套件時(shí)難以到達(dá)的那些代碼路徑。在一些實(shí)施例中,這樣的軟件測(cè)試可以以用戶友好的方式被自動(dòng)化。在一些實(shí)施例中,可以向開發(fā)被測(cè)軟件的公司的測(cè)試者、開發(fā)者和管理顯示軟件測(cè)試的狀態(tài)。

多態(tài)壓力和計(jì)算機(jī)應(yīng)用執(zhí)行:

圖1A是根據(jù)本公開的實(shí)施例的包括給定函數(shù)106的實(shí)施例100的圖示,給定函數(shù)106可以包括功能102并且還可以包括錯(cuò)誤處理能力104。單獨(dú)的函數(shù)106可以包括用于基本功能102的計(jì)算機(jī)代碼(也稱為“代碼”)以及用于錯(cuò)誤處理場(chǎng)景104的代碼。計(jì)算機(jī)應(yīng)用可以使用多個(gè)內(nèi)部但獨(dú)立的代碼路徑來(lái)構(gòu)建,這些代碼路徑可以聯(lián)合實(shí)現(xiàn)由給定計(jì)算機(jī)應(yīng)用提供的功能。函數(shù)可以包括實(shí)現(xiàn)基本功能102的代碼、或?qū)崿F(xiàn)錯(cuò)誤處理104能力的代碼、或兩種類型的代碼的組合。一些計(jì)算機(jī)代碼可以意圖用于基本功能102(例如,被稱為“光明面(sunny side)”代碼或基本功能代碼),而不是專門用于處理錯(cuò)誤。相比之下,錯(cuò)誤處理代碼104可以實(shí)現(xiàn)在基本功能代碼遇到意外的運(yùn)行時(shí)情況時(shí)進(jìn)行恢復(fù)的功能,包括但不限于缺少資源和/或意外的大的輸入數(shù)據(jù)。

測(cè)試計(jì)算機(jī)例程(包括但不限于函數(shù)、系統(tǒng)調(diào)用和其他類型的計(jì)算機(jī)例程)以檢測(cè)和處理錯(cuò)誤可能是復(fù)雜的。圈(Cyclomatic)復(fù)雜度是通過計(jì)算機(jī)應(yīng)用的源代碼的線性獨(dú)立路徑(例如,獨(dú)立代碼路徑)的數(shù)目的度量。一些計(jì)算機(jī)應(yīng)用可能非常復(fù)雜,并且更加難以進(jìn)行壓力測(cè)試。因此,較大的計(jì)算機(jī)應(yīng)用中的錯(cuò)誤處理是非常重要的。因此,一些實(shí)施例試驗(yàn)和檢查計(jì)算機(jī)例程(包括但不限于函數(shù)或系統(tǒng)調(diào)用)的錯(cuò)誤處理功能(例如,能力)。

圖1B示出了根據(jù)本公開的實(shí)施例的計(jì)算機(jī)例程(包括但不限于函數(shù)、API調(diào)用和系統(tǒng)調(diào)用)的狀態(tài)。如圖1B所示,在一些實(shí)施例中,在每個(gè)獨(dú)立代碼路徑上的計(jì)算機(jī)例程170(包括但不限于函數(shù)和系統(tǒng)調(diào)用)可以在以下三個(gè)狀態(tài)中的一個(gè)或多個(gè)處經(jīng)受壓力(例如,壓力測(cè)試或計(jì)算機(jī)例程的操縱):(1)在獨(dú)立代碼路徑上的計(jì)算機(jī)例程的開始172處,(2)在獨(dú)立代碼路徑上的計(jì)算機(jī)例程的主體174(或中間)中,以及(3)在獨(dú)立代碼路徑上的計(jì)算機(jī)例程的執(zhí)行的結(jié)束176處。

在一些實(shí)施例中,狀態(tài)之間存在差異。在一些示例實(shí)施例中,(1)在輸入上應(yīng)用壓力可以幫助找到針對(duì)錯(cuò)誤(例如,壞的)輸入的函數(shù)或系統(tǒng)調(diào)用的漏洞。在一些示例實(shí)施例中,(2)改變函數(shù)主體中的數(shù)據(jù)可以用于試驗(yàn)函數(shù)中否則不容易被試驗(yàn)的代碼路徑。在一些示例實(shí)施例中,(3)人為地改變輸出值可以創(chuàng)建不尋常的條件,使得可以試驗(yàn)錯(cuò)誤條件和/或異常處理代碼。根據(jù)一些示例實(shí)施例,因此前兩個(gè)狀態(tài)(1)和(2)可以被認(rèn)為是“代碼試驗(yàn)測(cè)試”狀態(tài),并且第三狀態(tài)(3)可以被認(rèn)為是“負(fù)面(negative)測(cè)試”狀態(tài)。

然而,在一些實(shí)施例中,這樣的壓力(例如,壓力測(cè)試)不限于僅在三個(gè)狀態(tài)處被應(yīng)用,而是可以在四個(gè)或更多個(gè)狀態(tài)處被應(yīng)用。一些實(shí)施例可以包括可以是時(shí)間相關(guān)的第四狀態(tài)(4)。在一些示例實(shí)施例中,對(duì)于重復(fù)執(zhí)行的代碼,可以將壓力應(yīng)用于給定的調(diào)用實(shí)例。在示例實(shí)施例中,可以在第N個(gè)(例如,第一、第一百、或其他編號(hào))執(zhí)行實(shí)例上應(yīng)用壓力。

在應(yīng)用壓力測(cè)試之前,一些實(shí)施例可以標(biāo)識(shí)關(guān)鍵和高價(jià)值計(jì)算機(jī)例程中的至少一個(gè)(例如,函數(shù)、系統(tǒng)調(diào)用和其他計(jì)算機(jī)例程中的至少一個(gè))。因此,接下來(lái),本公開描述標(biāo)識(shí)關(guān)鍵和高價(jià)值函數(shù)中的至少一個(gè)并且然后使這些函數(shù)經(jīng)受上述三狀態(tài)壓力的方法(和系統(tǒng))。

圖2示出了在本公開的實(shí)施例中的計(jì)算機(jī)應(yīng)用執(zhí)行200,該計(jì)算機(jī)應(yīng)用執(zhí)行200可以創(chuàng)建一個(gè)或多個(gè)線程(統(tǒng)稱為210、220、230),這些線程又可以執(zhí)行一個(gè)或多個(gè)函數(shù)(統(tǒng)稱為212、214、216、218、222、224、226、228、232、234、236和238)。根據(jù)一些實(shí)施例,圖2可以被認(rèn)為表示用于線程(統(tǒng)稱為210、220、230)的函數(shù)調(diào)用堆棧集合。如上所述,被測(cè)計(jì)算機(jī)應(yīng)用可以包括若干獨(dú)立代碼路徑。一些實(shí)施例可以克服現(xiàn)有方法的缺陷,諸如難以以及時(shí)的方式測(cè)試多個(gè)期望的代碼路徑的缺陷。假定軟件產(chǎn)品供應(yīng)商可以在測(cè)試一定百分比的獨(dú)立代碼路徑時(shí)做出發(fā)布產(chǎn)品的商業(yè)決定,優(yōu)選地生成對(duì)于應(yīng)用的運(yùn)行關(guān)鍵的功能的優(yōu)先級(jí)排序列表。一些實(shí)施例至少測(cè)試這些關(guān)鍵功能,以使得軟件供應(yīng)商能夠降低軟件失敗的風(fēng)險(xiǎn)。在一些實(shí)施例中,還可以測(cè)試剩余的獨(dú)立代碼路徑,并且可以發(fā)布產(chǎn)品補(bǔ)丁。一些實(shí)施例可以執(zhí)行測(cè)試套件,然后可以通過確定哪些函數(shù)可以比其他函數(shù)更頻繁地執(zhí)行(或者哪些函數(shù)在測(cè)試套件運(yùn)行時(shí)占用更大百分比的時(shí)間)來(lái)提取關(guān)鍵功能列表。關(guān)鍵功能列表可以包括用于計(jì)算機(jī)應(yīng)用內(nèi)的一個(gè)或多個(gè)線程的調(diào)用圖的集合。調(diào)用圖可以包括來(lái)自所擁有的代碼以及來(lái)自第三方庫(kù)(諸如計(jì)算機(jī)應(yīng)用使用的運(yùn)行時(shí)和第三方庫(kù))的函數(shù)的一個(gè)或多個(gè)連續(xù)實(shí)時(shí)列表。調(diào)用圖還可以包括散布在由計(jì)算機(jī)應(yīng)用周期性地進(jìn)行的上述函數(shù)調(diào)用之間的系統(tǒng)調(diào)用的一個(gè)或多個(gè)連續(xù)實(shí)時(shí)列表。以這種方式,根據(jù)一些實(shí)施例,可以捕獲計(jì)算機(jī)應(yīng)用的每個(gè)線程的計(jì)算環(huán)境的完整實(shí)時(shí)狀態(tài)轉(zhuǎn)換列表。

檢測(cè)過程

圖3示出了在本公開的實(shí)施例中的用于自動(dòng)化檢測(cè)輸入/輸出驗(yàn)證和輸出資源管理漏洞的示例方法的流程圖。圖3中的流程圖示出了自動(dòng)化檢測(cè)輸入/輸出驗(yàn)證和輸出資源管理漏洞的方法(和系統(tǒng))300。方法(和系統(tǒng))300可以分析計(jì)算機(jī)例程的集合302。計(jì)算機(jī)例程可以包括函數(shù)、API調(diào)用、系統(tǒng)調(diào)用和其他類型的計(jì)算機(jī)例程中的至少一個(gè)。分析可以包括確定針對(duì)集合中的一個(gè)或多個(gè)計(jì)算機(jī)例程的意外行為的漏洞的可能性?;诜治觯椒?和系統(tǒng))300可以標(biāo)識(shí)304集合中具有漏洞的可能性的一個(gè)或多個(gè)計(jì)算機(jī)例程。例如,一些實(shí)施例可以標(biāo)識(shí)一個(gè)或多個(gè)計(jì)算機(jī)例程,包括但不限于標(biāo)識(shí)由一個(gè)或多個(gè)線程針對(duì)每個(gè)使用情況使用的函數(shù)和系統(tǒng)調(diào)用序列,以便映射計(jì)算機(jī)應(yīng)用的運(yùn)行時(shí)控制流。方法(和系統(tǒng))300可以通過測(cè)試技術(shù)306來(lái)異步地(例如,多線程地)操縱一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè)。方法(和系統(tǒng))300還可以通過測(cè)試技術(shù)306來(lái)動(dòng)態(tài)地(例如,在運(yùn)行時(shí),而不是在編譯時(shí))操縱一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè)。然而,方法(和系統(tǒng))不限于此,并且一些實(shí)施例可以同步地(例如,單線程)和/或靜態(tài)地(例如,在編譯時(shí),而不是在運(yùn)行時(shí))執(zhí)行操縱。

作為操縱的一部分,一些示例實(shí)施例可以使用大于緩沖器大小(例如存儲(chǔ)器分段大小)的數(shù)據(jù)來(lái)模糊(例如對(duì)計(jì)算機(jī)例程執(zhí)行模糊測(cè)試,包括但不限于向計(jì)算機(jī)例程的輸入提供無(wú)效、意外和隨機(jī)數(shù)據(jù))計(jì)算機(jī)例程(例如,包括但不限于函數(shù)或系統(tǒng)調(diào)用)以檢查其是否易受緩沖器錯(cuò)誤漏洞的影響。一些示例實(shí)施例可以使用大于堆棧大小的字符串輸入來(lái)執(zhí)行模糊。

一些示例實(shí)施例可以模糊在存儲(chǔ)器區(qū)域中聲明的數(shù)字(例如,其可以包括參數(shù)、輸入和輸出值),這些數(shù)字可以(或可以不)由用戶通過以下中的一項(xiàng)或多項(xiàng)來(lái)提供:(1)如果底層指令是數(shù)學(xué)運(yùn)算(包括但不限于加法、減法、乘法和/或除法運(yùn)算),則一些示例實(shí)施例可以將數(shù)字改變?yōu)榇笥诮o定架構(gòu)大小(諸如8/32/64位或N位架構(gòu)大小);(2)一些示例實(shí)施例可以改變這樣的數(shù)字的符號(hào);(3)如果反匯編(將程序從其可執(zhí)行形式轉(zhuǎn)換為人類可讀的匯編語(yǔ)言的形式)示出除法類型運(yùn)算和/或如果數(shù)字用作地址,則一些示例實(shí)施例可以將這些數(shù)字的值改變?yōu)榱?;?4)模糊數(shù)字的其他方法。數(shù)字可以包括整數(shù)和/或浮點(diǎn)數(shù)(包括但不限于單精度、雙精度、N位精度和/或其他類型的精度),并且可以包括對(duì)應(yīng)符號(hào)。

為了實(shí)現(xiàn)對(duì)一個(gè)或多個(gè)計(jì)算機(jī)例程的操縱(例如,模糊輸入和/或輸出值),一些實(shí)施例可以修改計(jì)算機(jī)存儲(chǔ)器中的一個(gè)或多個(gè)堆棧(例如,計(jì)算機(jī)堆棧陣列)。為了實(shí)現(xiàn)操縱,一些實(shí)施例可以修改堆棧指針和/或堆棧內(nèi)的值。為了實(shí)現(xiàn)操縱,一些實(shí)施例可以修改以下計(jì)算機(jī)寄存器中的一個(gè)或多個(gè):EAX(累加器寄存器)、EBX(基址寄存器)、ECX(計(jì)數(shù)器寄存器)、EDX(數(shù)據(jù)寄存器)、ESI(源索引寄存器)、EDI(目的地寄存器)、EBP(基址指針)和/或ESP(堆棧指針)、其他寄存器和其他指針。

方法(和/或系統(tǒng))300可以確定一個(gè)或多個(gè)計(jì)算機(jī)例程308中的至少一個(gè)的意外行為。一些示例實(shí)施例可以通過比較在函數(shù)或系統(tǒng)調(diào)用被攻擊和沒有被攻擊的情況下提取的控制流來(lái)檢查以查看線程的控制流是否作為模糊的結(jié)果而改變。一些示例實(shí)施例可以標(biāo)識(shí)導(dǎo)致線程改變其控制流的精確失敗。一些實(shí)施例可以以包括但不限于系統(tǒng)日志格式和/或其他格式的標(biāo)準(zhǔn)格式顯示的失敗狀況的形式向顯示器(例如,儀表板)報(bào)告意外行為。

在一些實(shí)施例中,用于模糊函數(shù)的技術(shù)可以包括提供偽(例如,假的或意外的)輸入并且讓該函數(shù)用被操縱的輸入執(zhí)行。在一些實(shí)施例中,系統(tǒng)調(diào)用可以正常執(zhí)行,但是在進(jìn)行系統(tǒng)調(diào)用的實(shí)體讀取系統(tǒng)調(diào)用的結(jié)果之前,模糊可以重寫系統(tǒng)調(diào)用的結(jié)果。因此,在一些實(shí)施例中,模糊的方法(和系統(tǒng))在函數(shù)和系統(tǒng)調(diào)用之間可以是不同的。

在一些實(shí)施例中,方法(和/或系統(tǒng))300可以可選地部署310一個(gè)或多個(gè)補(bǔ)丁,以校正一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè)的意外行為。在一些實(shí)施例中,方法(和/或系統(tǒng))可以分析計(jì)算機(jī)例程的集合和集合中的計(jì)算機(jī)例程的至少一個(gè)對(duì)應(yīng)序列。

在方法(和/或系統(tǒng))的一些實(shí)施例中,分析302還可以包括以下中的至少一項(xiàng)。一些實(shí)施例可以提取包括與集合中的至少一個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的使用頻率的直方圖。一些示例實(shí)施例可以提取最常用的函數(shù)和系統(tǒng)調(diào)用的直方圖。一些實(shí)施例可以確定與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的一個(gè)或多個(gè)緩沖器讀取或?qū)懭胗?jì)算機(jī)操作的大小。一些實(shí)施例可以確定與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的一個(gè)或多個(gè)對(duì)應(yīng)堆棧的大小。一些示例實(shí)施例可以標(biāo)識(shí)包括大的緩沖器讀取和/或?qū)懭氩僮骱?或在創(chuàng)建堆棧時(shí)其對(duì)應(yīng)堆棧大小的函數(shù)。一些實(shí)施例可以基于檢查對(duì)應(yīng)循環(huán)大小來(lái)確定一個(gè)或多個(gè)存儲(chǔ)器讀取或?qū)懭氩僮鞯拇笮?。一些?shí)施例可以執(zhí)行集合中的至少一個(gè)計(jì)算機(jī)程序的污染分析。一些實(shí)施例可以標(biāo)識(shí)與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的至少一個(gè)指令,至少一個(gè)指令執(zhí)行計(jì)算機(jī)操作,計(jì)算機(jī)操作包括以下中的至少一項(xiàng):遞增值,遞減值,添加值,減去值,乘以值,以及除以值。一些示例實(shí)施例可以標(biāo)識(shí)執(zhí)行數(shù)學(xué)運(yùn)算的計(jì)算機(jī)指令(例如,計(jì)算機(jī)例程),數(shù)學(xué)運(yùn)算包括但不限于兩個(gè)或更多個(gè)數(shù)字的遞增、遞減、加法、減法、乘法和/或除法。一些示例實(shí)施例可以通過執(zhí)行污染分析來(lái)確定兩個(gè)或更多個(gè)數(shù)字中的至少一個(gè)是否在用戶提供的輸入中。

在方法(和/或系統(tǒng))的一些實(shí)施例中,一個(gè)或多個(gè)計(jì)算機(jī)例程可以包括以下中的至少一項(xiàng):函數(shù)和系統(tǒng)調(diào)用。一些示例實(shí)施例可以標(biāo)識(shí)每個(gè)線程針對(duì)每個(gè)使用情況使用以映射應(yīng)用的運(yùn)行時(shí)控制流的函數(shù)和系統(tǒng)調(diào)用序列。

方法(和/或系統(tǒng))的一些實(shí)施例可以通過以下中的至少一項(xiàng)來(lái)操縱306一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè):修改與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的數(shù)據(jù),數(shù)據(jù)超過對(duì)應(yīng)緩沖器大小,以及修改在與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的存儲(chǔ)器區(qū)域中聲明的值。

方法(和/或系統(tǒng))的一些實(shí)施例可以確定一個(gè)或多個(gè)計(jì)算機(jī)例程中的至少一個(gè)的意外行為308,包括確定與一個(gè)或多個(gè)計(jì)算機(jī)例程相關(guān)聯(lián)的線程的控制流作為操縱的結(jié)果而已經(jīng)改變,確定導(dǎo)致線程改變其控制流的失敗狀況,以及顯示失敗狀況。

在方法(和/或系統(tǒng))的一些實(shí)施例中,對(duì)于一個(gè)或多個(gè)計(jì)算機(jī)例程的至少一個(gè)函數(shù),306中的計(jì)算機(jī)測(cè)試技術(shù)可以將無(wú)效、意外和隨機(jī)數(shù)據(jù)中的至少一項(xiàng)提供給以下中的至少一項(xiàng):至少一個(gè)函數(shù)的輸入、至少一個(gè)函數(shù)內(nèi)的邏輯、以及至少一個(gè)函數(shù)的輸出。在方法(和/或系統(tǒng))的一些實(shí)施例中,對(duì)于一個(gè)或多個(gè)計(jì)算機(jī)例程的至少一個(gè)系統(tǒng)調(diào)用,計(jì)算機(jī)測(cè)試技術(shù)可以向與至少一個(gè)系統(tǒng)調(diào)用相關(guān)聯(lián)的系統(tǒng)調(diào)用參數(shù)提供無(wú)效、意外和隨機(jī)數(shù)據(jù)中的至少一項(xiàng)。

在一些實(shí)施例中,系統(tǒng)調(diào)用參數(shù)可以包括系統(tǒng)調(diào)用的返回值。因此,在一些實(shí)施例中,系統(tǒng)調(diào)用返回值可以被具有偽(假的或意外的)結(jié)果的已知系統(tǒng)調(diào)用參數(shù)(例如,系統(tǒng)調(diào)用返回值或系統(tǒng)調(diào)用錯(cuò)誤代碼)“重寫”。

在系統(tǒng)(和/或系統(tǒng))的一些實(shí)施例中,系統(tǒng)調(diào)用參數(shù)可以與以下中的至少一項(xiàng)相關(guān)聯(lián):線程同步、進(jìn)程同步、線程調(diào)度、進(jìn)程調(diào)度、存儲(chǔ)器、存儲(chǔ)器分配、存儲(chǔ)器解除分配、存儲(chǔ)器寫入、存儲(chǔ)器讀取、網(wǎng)絡(luò)套接字、網(wǎng)絡(luò)套接字的創(chuàng)建、網(wǎng)絡(luò)套接字輸入、網(wǎng)絡(luò)套接字輸出、管道創(chuàng)建、系統(tǒng)輸入、系統(tǒng)輸出、共享存儲(chǔ)器先入先出創(chuàng)建、終端輸入、終端輸出、文件處理、文件創(chuàng)建、文件寫入、文件讀取、磁盤輸入和磁盤輸出。

在一些實(shí)施例中,系統(tǒng)可以包括分析引擎。系統(tǒng)還可以包括可以被通信地耦合至分析引擎的驗(yàn)證引擎(例如,正被檢查的線程和過程)。系統(tǒng)還可以包括可以被通信地耦合至分析引擎和驗(yàn)證引擎中的至少一個(gè)的儀器化引擎。

計(jì)算機(jī)操作環(huán)境和資源:

圖4A示出了在本公開的實(shí)施例中的計(jì)算機(jī)應(yīng)用中的一個(gè)或多個(gè)特征410如何可以包括一個(gè)或多個(gè)獨(dú)立計(jì)算機(jī)代碼路徑(在圖4A中統(tǒng)稱為402、404、406),計(jì)算機(jī)代碼路徑又可以執(zhí)行一個(gè)或多個(gè)不同的計(jì)算機(jī)例程(在圖4A中統(tǒng)稱為412、414、416、420、422和424)的集合,計(jì)算機(jī)例程可以包括函數(shù)和/或系統(tǒng)調(diào)用。盡管在圖4A中示出了六個(gè)計(jì)算機(jī)例程(412、414、416、420、422和424)和三個(gè)代碼路徑(402、404和406),然而實(shí)施例不限于此,并且可以包括若干代碼路徑(例如,N個(gè)或更多個(gè)代碼路徑)和若干計(jì)算機(jī)例程(例如M個(gè)或更多計(jì)算機(jī)例程)。

在一些實(shí)施例中,計(jì)算機(jī)例程(在圖4A中統(tǒng)稱為412、414、416、420、422和424)可以以特定順序執(zhí)行,以便實(shí)現(xiàn)與計(jì)算機(jī)應(yīng)用的一個(gè)或多個(gè)使用情況相關(guān)聯(lián)的功能。在一些實(shí)施例中,可以通過檢查在給定時(shí)刻執(zhí)行的計(jì)算機(jī)例程的序列來(lái)確定計(jì)算機(jī)應(yīng)用的狀態(tài)。

在一些實(shí)施例中,軟件的測(cè)試可以通過試驗(yàn)獨(dú)立代碼路徑的手動(dòng)和/或自動(dòng)化方法的組合來(lái)實(shí)現(xiàn)。在一些實(shí)施例中,獨(dú)立代碼路徑的集合可以是非常大的向量空間。因此,要執(zhí)行的測(cè)試的數(shù)目可能非常大。假定大的向量空間的手動(dòng)測(cè)試可能是麻煩的,因?yàn)闇y(cè)試套件可能需要的依賴性的及時(shí)創(chuàng)建完全取決于測(cè)試器,一些實(shí)施例提供自動(dòng)化測(cè)試。因此,當(dāng)特征功能改變時(shí)以可重復(fù)的方式執(zhí)行測(cè)試套件可能是具有挑戰(zhàn)性的。

為了克服該挑戰(zhàn),一些實(shí)施例提供的優(yōu)點(diǎn)在于,一些實(shí)施例的自動(dòng)化測(cè)試方法(和系統(tǒng))不需要包括測(cè)試文件、輸入數(shù)據(jù)、系統(tǒng)資源、硬件的依賴性在啟動(dòng)測(cè)試套件之前被準(zhǔn)備。因此,一些實(shí)施例克服了現(xiàn)有方法需要依賴性可用以避免導(dǎo)致失敗的缺點(diǎn)。

圖4B示出了根據(jù)本公開的實(shí)施例的計(jì)算機(jī)應(yīng)用的示例操作環(huán)境430。如圖4B所示,在一些實(shí)施例中,當(dāng)計(jì)算機(jī)應(yīng)用執(zhí)行432時(shí),其可以與計(jì)算機(jī)應(yīng)用432的其他部分、計(jì)算機(jī)應(yīng)用434中的其他庫(kù)和/或內(nèi)核(和/或操作系統(tǒng))436交互。

當(dāng)測(cè)試套件執(zhí)行時(shí),應(yīng)用可能由于應(yīng)用操作的環(huán)境中的微小變化而經(jīng)歷壓力。在一些實(shí)施例中,操作環(huán)境430可以包括內(nèi)核436、由應(yīng)用使用的運(yùn)行時(shí)庫(kù)434和/或其他庫(kù)434以及呈現(xiàn)給應(yīng)用432的外部數(shù)據(jù)。為了測(cè)試計(jì)算機(jī)應(yīng)用432,一些實(shí)施例使用自動(dòng)化機(jī)制在操作環(huán)境中創(chuàng)建變化。

在一些實(shí)施例中,可以通過運(yùn)行時(shí)計(jì)算機(jī)例程(諸如API,函數(shù)或系統(tǒng)調(diào)用)對(duì)內(nèi)核436、庫(kù)434和原始應(yīng)用432計(jì)算機(jī)代碼的“掛接”來(lái)實(shí)時(shí)引入其他運(yùn)行時(shí)壓力。如計(jì)算機(jī)編程領(lǐng)域中已知的,“掛接”可以包括通過攔截在軟件部件(包括但不限于圖4A-4B所示的軟件部件)之間傳遞的計(jì)算機(jī)例程調(diào)用、消息和/或事件來(lái)改變應(yīng)用、操作系統(tǒng)和/或其他軟件部件的行為的一系列技術(shù)中的一個(gè)或多個(gè)。

在一些實(shí)施例中,可以通過以下方式來(lái)實(shí)時(shí)地引入外部數(shù)據(jù)輸入壓力:改變呈現(xiàn)給計(jì)算機(jī)例程的運(yùn)行時(shí)參數(shù)(包括但不限于API和/或函數(shù)和/或系統(tǒng)調(diào)用),和/或在運(yùn)行時(shí)改變給定計(jì)算機(jī)例程的主體,和/或甚至通過在運(yùn)行時(shí)改變給定庫(kù)和/或用戶功能的返回值而將外部數(shù)據(jù)輸入壓力向上滲透到調(diào)用堆棧中。

圖4C提供了根據(jù)本公開的實(shí)施例的可以與操作系統(tǒng)內(nèi)核464相關(guān)聯(lián)的不同類型的系統(tǒng)資源(統(tǒng)稱為452、454、456、458、460和462)的圖示。系統(tǒng)資源壓力可以通過系統(tǒng)調(diào)用接口經(jīng)由實(shí)時(shí)注入而被引入。這樣的實(shí)時(shí)注入可以包括對(duì)系統(tǒng)調(diào)用的一個(gè)或多個(gè)輸入和/或輸出和/或行為的操縱,但不限于此??梢员贿@樣操縱的系統(tǒng)資源功能450可以包括以下類型的系統(tǒng)資源功能450(通過系統(tǒng)調(diào)用和/或其他手段可訪問)中的一個(gè)或多個(gè),但不限于此:(1)線程和/或進(jìn)程同步462;(2)線程和/或進(jìn)程調(diào)度器460;(3)存儲(chǔ)器、存儲(chǔ)器寫入/讀取、存儲(chǔ)器分配/解除分配458;(4)網(wǎng)絡(luò)套接字創(chuàng)建、網(wǎng)絡(luò)套接字輸入和/或輸出456;(5)終端輸入和/或輸出454;(6)磁盤輸入和/或輸出452;和(7)管道創(chuàng)建、系統(tǒng)輸入/輸出、共享存儲(chǔ)器先入先出創(chuàng)建、文件處理、文件創(chuàng)建、文件寫入和/或文件讀取。

壓力測(cè)試顯示:

圖5A示出了根據(jù)本公開的實(shí)施例的直方圖500。直方圖500可以包括數(shù)值數(shù)據(jù)的分布的圖形表示。直方圖可以包括但不限于web儀表板、日志文件、圖表、表格和/或其它用戶顯示和/或其他類型的顯示。直方圖可以使得用戶能夠確定檢測(cè)到多少計(jì)算機(jī)例程(例如,API和/或函數(shù)和/或系統(tǒng)調(diào)用)失敗。根據(jù)一些實(shí)施例,直方圖500可以描繪計(jì)算機(jī)應(yīng)用的給定計(jì)算機(jī)線程510(圖5A的最左列,具有可以包括函數(shù)調(diào)用和/或系統(tǒng)調(diào)用的計(jì)算機(jī)例程的序列的線程)被執(zhí)行了多少次514。圖5A的中間列示出了與針對(duì)給定線程510的調(diào)用圖相關(guān)聯(lián)的計(jì)算機(jī)例程(函數(shù)和/或系統(tǒng)調(diào)用)之間的轉(zhuǎn)換。在一些實(shí)施例中,通過直方圖度量514(例如時(shí)間和/計(jì)數(shù),其可以包括數(shù)字和/或數(shù)值、和/或另一度量)來(lái)標(biāo)識(shí)最頻繁的執(zhí)行線程,測(cè)試器(例如,自動(dòng)化測(cè)試機(jī)和/或過程和/或終端用戶測(cè)試器)可以對(duì)測(cè)試努力進(jìn)行優(yōu)先級(jí)排序。

圖5B示出了根據(jù)本公開的實(shí)施例的對(duì)于一個(gè)或多個(gè)線程522可以對(duì)其執(zhí)行壓力測(cè)試的系統(tǒng)資源列表。圖5B中的表520的每一行可以表示特定攻擊向量。如圖5A中,在圖5B中,每個(gè)線程522(統(tǒng)稱為522a、522b、522c)可以具有相關(guān)聯(lián)的轉(zhuǎn)換524(統(tǒng)稱為524a、524b、524c)和直方圖度量526(統(tǒng)稱為526a、526b、526c)。在5B中,可以將底層壓力應(yīng)用到壓力類型532,包括但不限于資源(例如,系統(tǒng)資源或“資源”)和/或API(應(yīng)用編程接口和/或函數(shù)和/或“代碼試驗(yàn)程序(exerciser)”)。可以將壓力應(yīng)用到開始地址528(統(tǒng)稱為528a、528b、528c)和/或結(jié)束地址530(統(tǒng)稱為530a、530b、530c),其可以是計(jì)算機(jī)存儲(chǔ)器中的一個(gè)或多個(gè)地址(包括但不限于在一個(gè)或多個(gè)計(jì)算機(jī)堆棧上的存儲(chǔ)器地址和/或指針)?!靶螺斎搿绷?36可以表示一個(gè)或多個(gè)輸入值536b、和/或代碼主體值536c、和/或返回值536a,其中每個(gè)可以在壓力測(cè)試中被應(yīng)用。在圖5B所示的示例性實(shí)施例中,在與從函數(shù)Fz到函數(shù)Fr的函數(shù)轉(zhuǎn)換534a相關(guān)聯(lián)的下一動(dòng)作534期間,可以將0xDEADBEEF的返回值536a應(yīng)用到具有系統(tǒng)資源532a的壓力類型532。同樣如圖5B所示,可以將具有輸入值536b(0xAAAAAA和0xBBBBBB)的輸入?yún)?shù)534b應(yīng)用到具有代碼試驗(yàn)程序532b(包括但不限于函數(shù)試驗(yàn)程序)的壓力類型532。同樣如圖5B所示,可以將替換代碼536b應(yīng)用到代碼主體534c,作為代碼試驗(yàn)程序532c壓力測(cè)試中的下一動(dòng)作。在一些實(shí)施例中,測(cè)試器可以選擇在系統(tǒng)調(diào)用(和/或API和/或函數(shù)調(diào)用)534b的輸入級(jí)和/或系統(tǒng)調(diào)用534a的輸出級(jí)中應(yīng)用壓力。如圖5B所示,在系統(tǒng)資源壓力的情況下,測(cè)試器可以改變系統(tǒng)調(diào)用的返回值536a,以使計(jì)算機(jī)應(yīng)用的較高層解釋底層系統(tǒng)調(diào)用失敗。

因此,圖6示出了根據(jù)本公開的實(shí)施例的在計(jì)算機(jī)儀表板600(也稱為儀表板和/或web儀表板)上的壓力測(cè)試的通過/失敗結(jié)果614(614a、614b、614c)。在一些實(shí)施例中,計(jì)算機(jī)儀表板可以包括狀態(tài)和趨勢(shì)的實(shí)時(shí)、易于讀取和單頁(yè)圖形呈現(xiàn)。在一些實(shí)施例中,儀表板可以類似于報(bào)告和/或進(jìn)度報(bào)告。在一些實(shí)施例中,可以連續(xù)地更新和/或定期地更新儀表板。

如圖6所示,每行可以被認(rèn)為是攻擊向量,包括相應(yīng)線程602、轉(zhuǎn)換604、直方圖度量606、開始地址608、結(jié)束地址610、壓力類型612和通過或失敗結(jié)果614。如圖6所示,通過返回不同的失敗代碼,測(cè)試器可以模擬各種失敗狀況并且觀察計(jì)算機(jī)應(yīng)用如何響應(yīng)。如果計(jì)算機(jī)應(yīng)用線程602執(zhí)行如在下一動(dòng)作列中規(guī)定的下一轉(zhuǎn)換604,和/或如果計(jì)算機(jī)應(yīng)用采取處理的異常,則計(jì)算機(jī)應(yīng)用可以被標(biāo)記為適當(dāng)?shù)靥幚韺?shí)時(shí)壓力。另一方面,如果計(jì)算機(jī)應(yīng)用采取未處理的異常,則計(jì)算機(jī)應(yīng)用可能具有輸入驗(yàn)證和/或資源管理漏洞,在這種情況下,計(jì)算機(jī)應(yīng)用可以被標(biāo)記為不適當(dāng)?shù)靥幚韺?shí)時(shí)壓力。

一旦建立了目標(biāo)壓力列表,就可以使用測(cè)試套件來(lái)試驗(yàn)被測(cè)應(yīng)用。一些實(shí)施例可以導(dǎo)致在由測(cè)試器設(shè)置的壓力向量中的適當(dāng)壓力的執(zhí)行。對(duì)于壓力是負(fù)面壓力的情況,其測(cè)試代碼塊對(duì)無(wú)效輸入的處理和/或關(guān)于代碼塊的功能的意外行為(例如異常處理),一些實(shí)施例可以通過在測(cè)試之后觀察下一轉(zhuǎn)換來(lái)報(bào)告壓力向量的成功和/或失敗。導(dǎo)致應(yīng)用崩潰或掛起的負(fù)面壓力可以在儀表板和/或web門戶600上報(bào)告。對(duì)于代碼試驗(yàn)程序測(cè)試,正常測(cè)試可以繼續(xù),并且其他邏輯、性能、負(fù)載、運(yùn)行時(shí)、資源耗盡和安全測(cè)試可以繼續(xù)。

在一些實(shí)施例中,對(duì)于調(diào)用圖上的每個(gè)關(guān)鍵函數(shù)轉(zhuǎn)換,測(cè)試器可以使用圖形用戶界面或命令行來(lái)設(shè)置上述各種壓力。在一些實(shí)施例中,對(duì)于每個(gè)壓力實(shí)例,可以提供幾個(gè)固定參數(shù)。在一些實(shí)施例中,這些固定參數(shù)可以包括(a)函數(shù)轉(zhuǎn)換邊界、(b)線程數(shù)、(c)可以應(yīng)用壓力的實(shí)例計(jì)數(shù)、和/或(d)可以去除壓力的實(shí)例計(jì)數(shù)。在一些實(shí)施例中,測(cè)試器還可以指示壓力實(shí)例是否是代碼試驗(yàn)程序壓力和/或負(fù)面測(cè)試,其測(cè)試代碼塊對(duì)無(wú)效輸入的處理和/或關(guān)于代碼塊的功能的意外行為(例如,異常處理)。如果壓力是負(fù)面壓力(例如,與負(fù)面測(cè)試相關(guān)聯(lián)的壓力),則測(cè)試器還可以規(guī)定對(duì)于壓力測(cè)試通過以及對(duì)于壓力測(cè)試失敗可能發(fā)生的下一轉(zhuǎn)換。

根據(jù)一些實(shí)施例,以下指示壓力的每個(gè)可變參數(shù)可以如何反映在列表中,諸如圖6的儀表板。為了將系統(tǒng)資源壓力注入到目標(biāo)函數(shù)轉(zhuǎn)換中,測(cè)試器可以選擇表示特定資源失敗的返回值。例如,測(cè)試器可以選擇內(nèi)存不足、磁盤空間不足、套接字?jǐn)嚅_連接和/或文件不存在系統(tǒng)資源錯(cuò)誤類型。對(duì)于所擁有的或第三方應(yīng)用代碼壓力,測(cè)試器可以指示應(yīng)該應(yīng)用壓力的狀態(tài)。在一些實(shí)施例中,狀態(tài)類型可以包括:在目標(biāo)函數(shù)或API的輸入、主體和/或結(jié)束處。對(duì)于輸入?yún)?shù)壓力,其中數(shù)據(jù)類型是簡(jiǎn)單類型,用戶可以規(guī)定備選值。類似地,對(duì)于簡(jiǎn)單返回值,用戶可以規(guī)定備選返回值。對(duì)于復(fù)雜數(shù)據(jù)類型,測(cè)試器可以提供備選代碼主體。一些實(shí)施例可以實(shí)時(shí)地編譯和/或鏈接計(jì)算機(jī)代碼和/或?qū)⑵渥⑷氲竭M(jìn)程的地址空間中。當(dāng)調(diào)用目標(biāo)函數(shù)并且滿足計(jì)數(shù)實(shí)例條件時(shí),將調(diào)用注入的功能而不是原始功能。

在一些實(shí)施例中,每個(gè)所標(biāo)識(shí)的關(guān)鍵功能可以經(jīng)受各種壓力。當(dāng)可以窮盡地測(cè)試上述列表時(shí),可以針對(duì)關(guān)鍵功能的下一集合,直到逐漸地測(cè)試最后一個(gè)功能。在一些實(shí)施例中,上述實(shí)時(shí)代碼替換機(jī)制的一個(gè)優(yōu)點(diǎn)是它也可以用于返回錯(cuò)誤,這使得難以到達(dá)的獨(dú)立代碼路徑也能夠被試驗(yàn)。

監(jiān)測(cè)代理和分析引擎基礎(chǔ)設(shè)施

圖7A描繪了示例監(jiān)測(cè)代理和分析引擎基礎(chǔ)設(shè)施的高級(jí)框圖。該基礎(chǔ)設(shè)施可以在包括從智能手機(jī)、平板計(jì)算機(jī)、膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)到高端服務(wù)器的計(jì)算設(shè)備的各種硬件上被配置。如該圖所示,監(jiān)測(cè)代理702執(zhí)行的數(shù)據(jù)收集可以與分析引擎執(zhí)行的分析分離,以提高應(yīng)用性能?;A(chǔ)設(shè)施提供高的可用性,以防止黑客破壞其針對(duì)惡意軟件的保護(hù)。監(jiān)測(cè)代理702與應(yīng)用交互以收集加載時(shí)間和運(yùn)行時(shí)數(shù)據(jù)。應(yīng)用701的基礎(chǔ)設(shè)施包括進(jìn)程存儲(chǔ)器703、第三方庫(kù)704、內(nèi)核服務(wù)706和指令流水線707。監(jiān)測(cè)代理702的基礎(chǔ)設(shè)施包括工具和分析引擎(儀器化引擎)705、圖形用戶界面(GUI)711、客戶端守護(hù)進(jìn)程708、配置數(shù)據(jù)庫(kù)709以及流傳輸和壓縮引擎710以及中央處理單元(CPU)736。應(yīng)用701的本地或遠(yuǎn)程用戶738通過諸如鍵盤、鼠標(biāo)或類似I/O設(shè)備的設(shè)備或通過可以借助于管道、共享存儲(chǔ)器或套接字建立的通信信道在網(wǎng)絡(luò)上與應(yīng)用交互。作為響應(yīng),應(yīng)用進(jìn)程703將適當(dāng)?shù)闹噶罴峙傻街噶盍魉€707中以供執(zhí)行。應(yīng)用還可以利用其本身的或第三方庫(kù)704,諸如libc.so(Linux)或msvcrtxx.dll(Windows)。當(dāng)來(lái)自這些庫(kù)的功能被調(diào)用時(shí),來(lái)自這些庫(kù)的適當(dāng)指令也被插入到指令流水線707中以供執(zhí)行。另外,應(yīng)用可以利用來(lái)自內(nèi)核706的諸如存儲(chǔ)器、文件I/O等的系統(tǒng)資源。以時(shí)間排序順序放在一起的來(lái)自應(yīng)用、庫(kù)和內(nèi)核的這些指令序列提供給定用戶期望的應(yīng)用功能。

當(dāng)應(yīng)用的代碼開始加載到存儲(chǔ)器中時(shí),儀器化和分析引擎(即,儀器化引擎)705執(zhí)行若干不同的加載時(shí)間動(dòng)作。一旦所有模塊都已經(jīng)被加載,應(yīng)用的儀器化指令就會(huì)生成運(yùn)行時(shí)數(shù)據(jù)??蛻舳耸刈o(hù)進(jìn)程708通過從配置數(shù)據(jù)庫(kù)709讀取一個(gè)或多個(gè)配置文件來(lái)初始化在736處在CPU中的儀器化和分析引擎705、流傳輸引擎710和GUI 711進(jìn)程。它還初始化儀器化引擎、流傳輸引擎、GUI、儀器化和分析引擎705及其本身之間的相互通信管道??蛻舳耸刈o(hù)進(jìn)程還確保如果任何監(jiān)測(cè)代理進(jìn)程(包括其自身)變得無(wú)響應(yīng)或死亡,則它將被重新生成。這確保了監(jiān)測(cè)代理702是高可用性企業(yè)級(jí)產(chǎn)品。

儀器化和分析引擎705將從應(yīng)用收集的負(fù)載和運(yùn)行時(shí)數(shù)據(jù)推送到流傳輸引擎中。流傳輸引擎將來(lái)自監(jiān)測(cè)代理702的原始數(shù)據(jù)封裝到PDU中。然后,它在高帶寬、低等待時(shí)間通信信道712上將PDU推送到分析引擎728。如果監(jiān)測(cè)代理702和分析引擎728位于同一機(jī)器上,則該信道可以是存儲(chǔ)器總線。如果這些實(shí)體位于不同的硬件上但在相同的物理鄰域中,則信道可以是基于以太網(wǎng)或光纖的傳輸,其允許在實(shí)體之間建立遠(yuǎn)程連接,以跨互聯(lián)網(wǎng)傳輸負(fù)載和運(yùn)行時(shí)數(shù)據(jù)。

分析引擎728的基礎(chǔ)設(shè)施包括網(wǎng)絡(luò)接口卡(NIC)713、分組池714、時(shí)間戳引擎715、處理器結(jié)構(gòu)716、散列引擎717、TCAM引擎718、應(yīng)用映射數(shù)據(jù)庫(kù)719和線程上下文數(shù)據(jù)庫(kù)720,線程上下文數(shù)據(jù)庫(kù)720可以包含由執(zhí)行由系統(tǒng)監(jiān)測(cè)的應(yīng)用的用戶類使用的存儲(chǔ)器地址的表。分析引擎728的基礎(chǔ)設(shè)施還包括內(nèi)容分析引擎721、事件和事件鏈722、事件管理引擎723、事件日志724、應(yīng)用守護(hù)進(jìn)程725、分析引擎配置數(shù)據(jù)庫(kù)726、網(wǎng)絡(luò)接口727、儀表板或CMS 737、SMS/SMTP服務(wù)器729、OTP服務(wù)器730、升級(jí)客戶端731、軟件升級(jí)服務(wù)器732、軟件映像733、事件更新客戶端734和事件升級(jí)服務(wù)器735。

在網(wǎng)絡(luò)接口卡713處攔截PDU以及協(xié)議頭部,PDU從該網(wǎng)絡(luò)接口卡713被拉取并且放入分組池714中。PDU中的時(shí)間戳字段由時(shí)間戳引擎715填充。這有助于以確保沒有分組在分組池緩沖器中被保留非常長(zhǎng)的時(shí)間。

處理器結(jié)構(gòu)716從分組緩沖器中拉取分組,并且在分組中的適當(dāng)位置中對(duì)地址字段進(jìn)行散列和替換。該操作由散列引擎717執(zhí)行。然后,處理器結(jié)構(gòu)以它們到達(dá)的順序開始從分組緩沖器中移除分組。具有來(lái)自加載時(shí)間階段的信息的分組被處理,使得相關(guān)數(shù)據(jù)被提取并且存儲(chǔ)在應(yīng)用映射數(shù)據(jù)庫(kù)719中。具有來(lái)自運(yùn)行時(shí)階段的信息的分組根據(jù)圖5被處理。分析引擎728的效率可以基于處理器結(jié)構(gòu)中的處理器的數(shù)目而增加或減少。

轉(zhuǎn)換目標(biāo)數(shù)據(jù)被保存在線程上下文數(shù)據(jù)庫(kù)720中,線程上下文數(shù)據(jù)庫(kù)720具有用于每個(gè)線程的表。處理器結(jié)構(gòu)還利用TCAM引擎718來(lái)執(zhí)行轉(zhuǎn)換和存儲(chǔ)器區(qū)域搜索。由于處理器結(jié)構(gòu)使用散列執(zhí)行查找,所以使用的實(shí)際時(shí)間是可預(yù)測(cè)的并非常短。通過仔細(xì)地選擇結(jié)構(gòu)中的處理器數(shù)目,可以適當(dāng)?shù)馗淖兠總€(gè)分組的吞吐量。

當(dāng)分析引擎728執(zhí)行搜索時(shí),其可以不時(shí)地發(fā)現(xiàn)關(guān)鍵/管理函數(shù)或系統(tǒng)調(diào)用的無(wú)效轉(zhuǎn)換、無(wú)效操作,或者在不期望的位置上發(fā)現(xiàn)存儲(chǔ)器寫入。在這些情況的每個(gè)中,分析引擎728將事件和事件鏈數(shù)據(jù)庫(kù)722中存儲(chǔ)的策略所描述的編程嚴(yán)重性的事件分派給事件管理引擎723。原始事件日志被存儲(chǔ)在事件日志數(shù)據(jù)庫(kù)724中。儀表板/CMS 737還可以訪問事件日志并且顯示應(yīng)用狀態(tài)。

補(bǔ)救動(dòng)作還與事件和事件鏈數(shù)據(jù)庫(kù)722中的每個(gè)事件相關(guān)聯(lián)。用戶可以從在一個(gè)極端中忽略事件到在另一極端中終止線程的動(dòng)作的范圍內(nèi)設(shè)置補(bǔ)救動(dòng)作。可以使用事件更新客戶端734和事件升級(jí)服務(wù)器735向分析器推薦推薦的補(bǔ)救動(dòng)作。為了改變上述推薦的動(dòng)作,分析器可以相應(yīng)地使用儀表板/CMS 737。儀表板/CMS 737提供了GUI界面,其顯示每個(gè)被監(jiān)測(cè)應(yīng)用的狀態(tài),并且允許安全分析器對(duì)應(yīng)用進(jìn)行某種控制,例如啟動(dòng)和停止應(yīng)用。當(dāng)生成事件時(shí),事件鏈從正常狀態(tài)前進(jìn)到后續(xù)狀態(tài)。可以采取與新狀態(tài)相關(guān)聯(lián)的補(bǔ)救動(dòng)作。如果補(bǔ)救動(dòng)作涉及非忽略動(dòng)作,則使用和SMS或SMTP服務(wù)器729向安全分析器發(fā)送通知??梢允褂肔DAP或其他目錄協(xié)議來(lái)確定安全分析器的SMS/SMTP地址。從儀表板/CMS 737啟動(dòng)或停止應(yīng)用的過程需要提升的特權(quán),因此安全分析器必須使用OTP服務(wù)器730進(jìn)行認(rèn)證。

還可以創(chuàng)建新事件并且將其鏈接到事件和事件鏈數(shù)據(jù)庫(kù)722中,其中具有向分析器推薦的嚴(yán)重性和補(bǔ)救措施。這允許將在一個(gè)安裝處的針對(duì)新攻擊的唯一事件和事件鏈分派到其他安裝處。為此目的,將所有新事件和事件鏈加載到事件升級(jí)服務(wù)器735中。事件更新客戶端734周期性地連接到事件升級(jí)服務(wù)器735并且向事件升級(jí)服務(wù)器735進(jìn)行認(rèn)證以檢索新事件和事件鏈。然后,事件更新客戶端將這些新事件和事件鏈加載到事件和事件鏈數(shù)據(jù)庫(kù)722中。內(nèi)容分析引擎721可以開始跟蹤被封裝到新事件鏈中的針對(duì)新攻擊的應(yīng)用。

正如客戶端守護(hù)進(jìn)程一樣,設(shè)備守護(hù)進(jìn)程725負(fù)責(zé)啟動(dòng)在分析引擎728上運(yùn)行的各種進(jìn)程。為此,它必須從分析引擎配置數(shù)據(jù)庫(kù)726讀取配置信息。守護(hù)進(jìn)程還負(fù)責(zé)對(duì)分析引擎728中的所有進(jìn)程運(yùn)行心跳輪詢。這確保分析引擎生態(tài)系統(tǒng)中的所有設(shè)備始終處于最高工作條件。失去三個(gè)連續(xù)的心跳表明目標(biāo)進(jìn)程沒有反應(yīng)。如果任何進(jìn)程已經(jīng)過早退出,則守護(hù)進(jìn)程將恢復(fù)包括其本身在內(nèi)的進(jìn)程。

有時(shí),為了諸如修復(fù)軟件中的錯(cuò)誤的目的,可以在設(shè)備主機(jī)中或在分析引擎728或監(jiān)測(cè)代理702中升級(jí)軟件。為此,升級(jí)客戶端731不斷地與軟件升級(jí)服務(wù)器732進(jìn)行檢查,在軟件升級(jí)服務(wù)器732中最新軟件可用。如果客戶端發(fā)現(xiàn)分析引擎728或監(jiān)測(cè)代理702中的實(shí)體正在運(yùn)行較舊的映像,則它將允許分析器用來(lái)自軟件升級(jí)服務(wù)器732的新映像來(lái)升級(jí)舊映像。新映像被捆綁在一起作為系統(tǒng)映像733。這使得可以向設(shè)備或主機(jī)提供被測(cè)試的兼容映像。如果分析引擎728或監(jiān)測(cè)代理702中的子系統(tǒng)的映像之一與系統(tǒng)映像中的相同部件的映像不匹配,則所有映像將被滾動(dòng)到先前已知的良好系統(tǒng)映像。

PDU用于監(jiān)測(cè)代理和分析引擎通信

圖7B示出了用于在圖7A的監(jiān)測(cè)代理702和分析引擎728之間傳送數(shù)據(jù)的示例協(xié)議數(shù)據(jù)單元(PDU)。為了使監(jiān)測(cè)代理702和分析引擎728彼此有效地工作,它們使用PDU彼此通信。PDU可以具體地由監(jiān)測(cè)代理702使用以將提取的應(yīng)用的模型和/或收集的運(yùn)行時(shí)數(shù)據(jù)打包以傳輸?shù)椒治鲆?28。PDU包含要在監(jiān)測(cè)代理702和分析引擎728之間傳輸?shù)拿糠N類型的信息的字段。PDU被劃分為應(yīng)用提供數(shù)據(jù)部分、HW/CVE生成和內(nèi)容分析引擎或原始數(shù)據(jù)部分。

應(yīng)用提供數(shù)據(jù)部分包含來(lái)自各種寄存器的數(shù)據(jù)以及被放置在該部分的各個(gè)字段中的源地址和目標(biāo)地址。協(xié)議版本包含PDU 752的版本號(hào)。當(dāng)協(xié)議版本隨時(shí)間改變時(shí),源和目的地必須能夠繼續(xù)彼此通信。該8位字段描述由源實(shí)體生成的分組的版本號(hào)。在協(xié)議版本字段之后是當(dāng)前未使用的保留字段756。

應(yīng)用提供數(shù)據(jù)部分的下一字段是消息源/目的地標(biāo)識(shí)符757、753和754用于在如圖7所示的分析引擎基礎(chǔ)設(shè)施內(nèi)交換流量。有時(shí),圖7中所示的各種實(shí)體在它們本身之間交換流量。并非所有這些設(shè)備都具有或需要IP地址,并且因此兩個(gè)(硬件和主機(jī))查詢路由器引擎使用消息源和目的地字段內(nèi)部地路由流量。某些消息需要通過網(wǎng)絡(luò)到分析引擎中的實(shí)體。為此,實(shí)體被分配以下ID。給定的分析引擎設(shè)備可以具有多于一個(gè)加速器卡。每張卡都有唯一的IP地址;因此,各個(gè)實(shí)體將具有唯一的ID。上述基礎(chǔ)設(shè)施還可以運(yùn)行多于一個(gè)應(yīng)用。由于每個(gè)應(yīng)用服務(wù)器將具有唯一的IP地址,因此對(duì)應(yīng)的監(jiān)測(cè)代理側(cè)實(shí)體也將具有唯一的ID。

監(jiān)測(cè)代理側(cè)實(shí)體

1.GUI

2.儀器化和分析引擎

3.客戶端消息路由器

4.流傳輸引擎

5.客戶端側(cè)守護(hù)進(jìn)程

6.CLI引擎

7.客戶端看門狗(Watchdog)

8.客戶端壓縮塊

9.客戶端iWarp/RDMA/ROCE以太網(wǎng)驅(qū)動(dòng)器(100Mb/1Gb/10Gb)

每個(gè)PCI卡實(shí)體(開始地址=20+n*20)

20.分析引擎TOE塊

21.分析引擎PCI橋

22.解壓塊

23.消息驗(yàn)證塊

24.分組散列塊

25.時(shí)間戳塊

26.消息超時(shí)定時(shí)器塊

27.統(tǒng)計(jì)計(jì)數(shù)器塊

28.分析引擎查詢路由器引擎

29.分析引擎輔助

分析引擎主機(jī)實(shí)體

200.分析引擎PCIe驅(qū)動(dòng)器

201.主機(jī)路由引擎

202.內(nèi)容分析引擎

203.日志管理器

204.守護(hù)進(jìn)程

205.Web引擎

206.看門狗

207.IPC消息總線

208.配置數(shù)據(jù)庫(kù)

209.日志數(shù)據(jù)庫(kù)

SIEM連接器

220.SIEM連接器1-儀表板/CMS

221.SIEM連接器2-HP ArcSight

222.SIEM連接器3-IBM QRadar

223.SIEM連接器4-Alien Vault USM

分析引擎基礎(chǔ)設(shè)施實(shí)體

230.儀表板/CMS

231.SMTP服務(wù)器

232.LDAP服務(wù)器

233.SMS服務(wù)器

234.授權(quán)服務(wù)器

235.數(shù)據(jù)庫(kù)備份服務(wù)器

236.OTP客戶端

237.OTP服務(wù)器

238.校驗(yàn)和服務(wù)器

239.票務(wù)(Ticketing)服務(wù)器

240.事件鏈升級(jí)服務(wù)器

241.軟件更新服務(wù)器

所有用戶應(yīng)用

255.用戶應(yīng)用——應(yīng)用PID用于標(biāo)識(shí)發(fā)出查詢的應(yīng)用

應(yīng)用提供數(shù)據(jù)部分的另一字段是消息類型字段,其指示正在被傳輸?shù)臄?shù)據(jù)的類型755。在最高級(jí)別,存在在各個(gè)本地監(jiān)測(cè)代理側(cè)實(shí)體之間、在分析引擎設(shè)備側(cè)實(shí)體之間以及在監(jiān)測(cè)代理端和設(shè)備側(cè)實(shí)體之間流動(dòng)的三種不同類型的消息。此外,需要通過網(wǎng)絡(luò)傳送的消息必須符合OSI模型和其他協(xié)議。

應(yīng)用提供數(shù)據(jù)部分的以下字段是包含用于分組的序列標(biāo)識(shí)符的分組序列號(hào)字段779。流傳輸引擎將對(duì)丟失的分組執(zhí)行錯(cuò)誤恢復(fù)。為此,它需要唯一地標(biāo)識(shí)分組。遞增的有符號(hào)64位分組序列號(hào)由流傳輸引擎插入,并且簡(jiǎn)單地通過剩余的分析引擎基礎(chǔ)設(shè)施。如果序列號(hào)在64位邊界處完成(wrap),則其可以從0重新開始。在諸如心跳或日志消息等的非應(yīng)用分組的情況下,分組序列號(hào)可以是-1。

應(yīng)用提供數(shù)據(jù)部分還包含金絲雀(Canary)消息字段,其包含用于加密目的的金絲雀761。監(jiān)測(cè)代理702和分析引擎728知道如何從一些公共信息計(jì)算金絲雀,但是具有新鮮性質(zhì),諸如應(yīng)用啟動(dòng)時(shí)間、PID、許可證字符串和授權(quán)用戶名。

應(yīng)用提供數(shù)據(jù)部分還包含在所有消息中使用的通用字段。應(yīng)用源指令地址780、應(yīng)用目的地指令地址758、存儲(chǔ)器開始地址指針759、存儲(chǔ)器結(jié)束地址指針760、應(yīng)用PID 762、線程ID 763、分析引擎到達(dá)時(shí)間戳764和分析引擎離開時(shí)間戳765保存通用應(yīng)用數(shù)據(jù)。

PDU還包含HW/CAE生成部分。為了支持分析和維持固定時(shí)間預(yù)算,分析引擎在處理之前散列源和目的地地址字段并且更新PDU。PDU的HW/CAE生成部分是放置散列數(shù)據(jù)以供以后使用的地方。該部分包括散列應(yīng)用源指令地址766、散列應(yīng)用目的地指令地址767、散列存儲(chǔ)器開始地址768和散列存儲(chǔ)器結(jié)束地址769字段。HW/CAE生成部分另外包含與金絲雀771相關(guān)的其他字段,包括硬編碼內(nèi)容開始魔術(shù)(Magic)頭部、API名稱魔術(shù)頭部、調(diào)用上下文魔術(shù)頭部和調(diào)用原始數(shù)據(jù)魔術(shù)頭部,該其他字段存在于所有PDU分組中。

HW/CAE生成部分還包括用于標(biāo)識(shí)包括結(jié)果、配置位、操作模式、錯(cuò)誤代碼和操作模式數(shù)據(jù)的其它配置和錯(cuò)誤數(shù)據(jù)的字段770。字段的結(jié)果部分被分段以返回針對(duì)不同分析引擎查詢(轉(zhuǎn)換劇本(playbook)、代碼布局、存儲(chǔ)器(堆棧或堆)溢出和深度檢查查詢)的布爾結(jié)果。該字段的配置位部分指示何時(shí)設(shè)置壓縮標(biāo)志、演示標(biāo)志或同位標(biāo)志。該字段中的標(biāo)志的存在向分析引擎728指示該分組是否應(yīng)該在壓縮模式中被返回。演示標(biāo)志指示系統(tǒng)處于演示模式中,因?yàn)闆]有針對(duì)系統(tǒng)的有效許可證。在該模式中,日志和事件將不會(huì)整個(gè)可用。同位標(biāo)志指示應(yīng)用正在分析引擎728中運(yùn)行,使得主機(jī)查詢路由器引擎可以確定向哪里發(fā)送需要返回到應(yīng)用的分組。如果設(shè)置該標(biāo)志,則分組經(jīng)由PCI橋被發(fā)送,否則它們通過PCI卡上的以太網(wǎng)接口被發(fā)送。字段的操作模式部分指示系統(tǒng)處于偏執(zhí)(Paranoid)、監(jiān)測(cè)還是學(xué)習(xí)模式。這些模式將在該部分后面更詳細(xì)地討論。最后,字段的錯(cuò)誤代碼部分表示系統(tǒng)中的錯(cuò)誤。錯(cuò)誤代碼的前8位將對(duì)應(yīng)于消息源。剩余的12位將對(duì)應(yīng)于每個(gè)子系統(tǒng)報(bào)告的實(shí)際誤差。

PDU還包含內(nèi)容分析引擎或原始數(shù)據(jù)。所有變量數(shù)據(jù)、諸如OS庫(kù)調(diào)用和系統(tǒng)調(diào)用的參數(shù)和返回值都被放置在PDU的該部分中。該部分中的數(shù)據(jù)包含從應(yīng)用收集的數(shù)據(jù)的內(nèi)容,并且主要針對(duì)內(nèi)容分析引擎。該部分包含可變大小的API名稱或號(hào)772、調(diào)用內(nèi)容魔術(shù)頭部777、可變大小調(diào)用內(nèi)容774、調(diào)用原始數(shù)據(jù)魔術(shù)頭部778、可變大小的原始數(shù)據(jù)內(nèi)容776以及兩個(gè)保留的773和775字段。此外,這些字段可以針對(duì)管理消息被過載。

數(shù)字處理基礎(chǔ)設(shè)施

圖8示出了其中可以實(shí)現(xiàn)本公開的實(shí)施例的計(jì)算機(jī)網(wǎng)絡(luò)或類似的數(shù)字處理環(huán)境。

一個(gè)或多個(gè)客戶端計(jì)算機(jī)/設(shè)備50和一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)60提供執(zhí)行應(yīng)用程序等的處理、存儲(chǔ)和輸入/輸出設(shè)備。一個(gè)或多個(gè)客戶端計(jì)算機(jī)/設(shè)備50還可以通過通信網(wǎng)絡(luò)70鏈接到其他計(jì)算設(shè)備,包括其他客戶端設(shè)備/進(jìn)程50和一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)60。通信網(wǎng)絡(luò)70可以是遠(yuǎn)程接入網(wǎng)絡(luò)的一部分、全球網(wǎng)絡(luò)(例如,因特網(wǎng))、全球計(jì)算機(jī)集合、局域或廣域網(wǎng)以及當(dāng)前使用相應(yīng)協(xié)議(TCP/IP、等)來(lái)彼此通信的網(wǎng)關(guān)。其他電子設(shè)備/計(jì)算機(jī)網(wǎng)絡(luò)架構(gòu)是合適的。

客戶端計(jì)算機(jī)/設(shè)備50可以被配置有監(jiān)測(cè)代理。服務(wù)器計(jì)算機(jī)60可以被配置為與客戶端設(shè)備(即,監(jiān)測(cè)代理)50通信的分析引擎以用于檢測(cè)數(shù)據(jù)庫(kù)注入攻擊。服務(wù)器計(jì)算機(jī)60可以不是單獨(dú)的服務(wù)器計(jì)算機(jī),而是云網(wǎng)絡(luò)70的一部分。在一些實(shí)施例中,服務(wù)器計(jì)算機(jī)(例如,分析引擎)可以分析計(jì)算機(jī)例程的集合,并且標(biāo)識(shí)集合中的一個(gè)或多個(gè)計(jì)算機(jī)例程具有漏洞的可能性??蛻舳?監(jiān)測(cè)代理、和/或在一些實(shí)施例中的驗(yàn)證引擎)50可以通過測(cè)試技術(shù)將計(jì)算機(jī)例程的操縱傳達(dá)給服務(wù)器(分析引擎)60。在一些實(shí)施例中,客戶端50可以包括在客戶端(即,監(jiān)測(cè)代理、和/或在一些實(shí)施例中的驗(yàn)證引擎)50上執(zhí)行的的客戶端應(yīng)用或部件(例如,儀器化引擎),該客戶端應(yīng)用或部件用于啟動(dòng)測(cè)試以異步并且動(dòng)態(tài)地操縱計(jì)算機(jī)例程并且確定計(jì)算機(jī)例程的意外行為,并且客戶端50可以將該信息傳達(dá)給服務(wù)器(例如,分析引擎)60。

圖9是圖8的計(jì)算機(jī)系統(tǒng)中的計(jì)算機(jī)(例如,客戶端處理器/設(shè)備50或服務(wù)器計(jì)算機(jī)60)的示例內(nèi)部結(jié)構(gòu)的圖。每個(gè)計(jì)算機(jī)50、60包含系統(tǒng)總線79,其中總線是用于計(jì)算機(jī)或處理系統(tǒng)的部件間的數(shù)據(jù)傳輸?shù)囊唤M硬件線。系統(tǒng)總線79本質(zhì)上是連接計(jì)算機(jī)系統(tǒng)的不同元件(例如,處理器、磁盤存儲(chǔ)裝置、存儲(chǔ)器、輸入/輸出端口、網(wǎng)絡(luò)端口等)的共享導(dǎo)管,其使得能夠在元件之間傳輸信息。附接到系統(tǒng)總線79的是用于將各種輸入和輸出設(shè)備(例如,鍵盤、鼠標(biāo)、顯示器、打印機(jī)、揚(yáng)聲器等)連接到計(jì)算機(jī)50、60的I/O設(shè)備接口82。網(wǎng)絡(luò)接口86允許計(jì)算機(jī)連接到附接到網(wǎng)絡(luò)(例如,圖8的網(wǎng)絡(luò)70)的各種其他設(shè)備。存儲(chǔ)器90為用于實(shí)現(xiàn)本公開的實(shí)施例的計(jì)算機(jī)軟件指令92和數(shù)據(jù)94(例如,本文所描述的監(jiān)測(cè)代理、儀器化引擎和分析引擎元件)提供易失性存儲(chǔ)。磁盤存儲(chǔ)裝置95為用于實(shí)現(xiàn)本公開的實(shí)施例的計(jì)算機(jī)軟件指令92和數(shù)據(jù)94提供非易失性存儲(chǔ)。中央處理器單元84也連接到系統(tǒng)總線79并且提供用于計(jì)算機(jī)指令的執(zhí)行。

實(shí)施例或其方面可以以硬件(包括但不限于硬件電路)、固件或軟件的形式被實(shí)現(xiàn)。如果在軟件中被實(shí)現(xiàn),則軟件可以被存儲(chǔ)在被配置為使得處理器能夠加載軟件或其指令子集的任何非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)上。處理器然后執(zhí)行指令并且被配置為操作或?qū)е卵b置以如本文所描述的方式操作。

一些實(shí)施例可以通過在測(cè)試技術(shù)下異步并且動(dòng)態(tài)地操縱計(jì)算機(jī)例程中的至少一個(gè)來(lái)變換計(jì)算機(jī)例程的集合的行為和/或數(shù)據(jù)。測(cè)試技術(shù)可以包括與計(jì)算機(jī)例程中的一個(gè)或多個(gè)相關(guān)聯(lián)的值、輸入?yún)?shù)、返回值或代碼主體的修改,從而變換計(jì)算機(jī)例程的行為(和/或數(shù)據(jù))。

一些實(shí)施例可以通過借助測(cè)試技術(shù)檢測(cè)計(jì)算機(jī)應(yīng)用和/或計(jì)算機(jī)代碼中的錯(cuò)誤狀況和/或漏洞的不適當(dāng)處理來(lái)提供對(duì)計(jì)算機(jī)應(yīng)用、計(jì)算機(jī)程序功能性和/或計(jì)算機(jī)代碼的質(zhì)量的功能改進(jìn)。一些實(shí)施例可以通過比較在給定計(jì)算機(jī)例程正在和沒有被攻擊的情況下提取的控制流(通過攻擊向量)來(lái)檢查以查看線程的控制流是否作為操縱的結(jié)果(例如,模糊)而被改變。一些實(shí)施例可以部署代碼路徑以校正和/或替換計(jì)算機(jī)例程,以避免意外和/或不正確的行為。因此,一些實(shí)施例可以檢測(cè)和校正計(jì)算機(jī)代碼功能,從而提供實(shí)質(zhì)性的功能改進(jìn)。

一些實(shí)施例解決了軟件的基本功能及其錯(cuò)誤處理功能的魯棒性的技術(shù)問題(從而提供技術(shù)效果)。一些實(shí)施例還解決了在其他測(cè)試套件中試驗(yàn)太難以到達(dá)的代碼路徑的技術(shù)問題(從而提供技術(shù)效果)。一些實(shí)施例還向用戶提供顯示以報(bào)告測(cè)試的狀態(tài),從而提高測(cè)試的效率,并且因此也解決了測(cè)試中效率不足的技術(shù)問題(從而也提供技術(shù)效果)。

此外,硬件、固件、軟件、例程或指令在本文中可以被描述為執(zhí)行數(shù)據(jù)處理器的某些動(dòng)作和/或函數(shù)。然而,應(yīng)當(dāng)理解,本文中包含的這樣的描述僅僅是為了方便,并且這樣的動(dòng)作實(shí)際上從計(jì)算設(shè)備、處理器、控制器或執(zhí)行固件、軟件、例程、指令等的其他設(shè)備導(dǎo)致。

應(yīng)當(dāng)理解,流程圖、框圖和網(wǎng)絡(luò)圖可以包括不同地布置或者不同地表示的更多或更少的元件。但是還應(yīng)當(dāng)理解,某些實(shí)現(xiàn)可以規(guī)定塊和網(wǎng)絡(luò)圖以及示出以特定方式實(shí)現(xiàn)的實(shí)施例的執(zhí)行的塊和網(wǎng)絡(luò)圖的數(shù)目。

因此,另外的實(shí)施例還可以在各種計(jì)算機(jī)體系結(jié)構(gòu)、物理、虛擬、云計(jì)算機(jī)和/或其某種組合中實(shí)現(xiàn),因此,本文所描述的數(shù)據(jù)處理器僅用于說(shuō)明的目的,而不是作為實(shí)施例的限制。

雖然已經(jīng)參照本公開的示例實(shí)施例具體示出和描述了本公開,但是本領(lǐng)域技術(shù)人員將理解,在不脫離由所附權(quán)利要求包括的本公開的范圍的情況下,可以在其中進(jìn)行形式和細(xì)節(jié)上的各種改變。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
彩票| 蒲城县| 嘉祥县| 罗城| 常德市| 改则县| 淄博市| 睢宁县| 定安县| 浦东新区| 鹤壁市| 南乐县| 始兴县| 阿拉尔市| 含山县| 谢通门县| 临澧县| 定结县| 喜德县| 靖边县| 汉寿县| 福泉市| 新乡市| 额尔古纳市| 信丰县| 苏尼特右旗| 凭祥市| 封开县| 揭西县| 乐陵市| 开平市| 林甸县| 昭通市| 永寿县| 武平县| 乐东| 修水县| 吉林市| 永平县| 乌鲁木齐县| 香港|