本發(fā)明涉及網(wǎng)絡(luò)協(xié)議自動(dòng)化測(cè)試領(lǐng)域,更具體地說,本發(fā)明涉及一種網(wǎng)絡(luò)協(xié)議自動(dòng)模糊測(cè)試系統(tǒng)。
背景技術(shù):
1、網(wǎng)絡(luò)協(xié)議是計(jì)算機(jī)網(wǎng)絡(luò)中用于交換數(shù)據(jù)和控制信息的標(biāo)準(zhǔn)化規(guī)則和約定。然而,隨著網(wǎng)絡(luò)協(xié)議的日益復(fù)雜化和廣泛應(yīng)用,協(xié)議設(shè)計(jì)中的漏洞和缺陷成為嚴(yán)重的網(wǎng)絡(luò)安全隱患。此類缺陷可能被惡意用戶利用,通過遠(yuǎn)程網(wǎng)絡(luò)攻擊破壞系統(tǒng),甚至獲取未經(jīng)授權(quán)的訪問權(quán)限。網(wǎng)絡(luò)協(xié)議中存在的設(shè)計(jì)缺陷,尤其是協(xié)議狀態(tài)管理、消息處理等方面的問題,構(gòu)成了當(dāng)前網(wǎng)絡(luò)安全的最大挑戰(zhàn)之一。為此,評(píng)估網(wǎng)絡(luò)協(xié)議的安全性已成為確保系統(tǒng)可靠性和安全性的重要任務(wù)。評(píng)估過程通常涉及代碼審查、風(fēng)險(xiǎn)分析和模糊測(cè)試等多重步驟,其中模糊測(cè)試是一種有效的動(dòng)態(tài)分析技術(shù),旨在通過注入意外輸入來觸發(fā)協(xié)議的潛在缺陷。
2、傳統(tǒng)網(wǎng)絡(luò)協(xié)議測(cè)試方法依賴手動(dòng)編寫測(cè)試用例,測(cè)試人員需要為每個(gè)協(xié)議操作設(shè)計(jì)特定的輸入場景。然而,隨著協(xié)議復(fù)雜度的增加,手動(dòng)編寫測(cè)試用例變得愈加困難,不僅耗時(shí)耗力,而且容易出現(xiàn)遺漏。手動(dòng)測(cè)試往往只能覆蓋協(xié)議的部分行為路徑,難以發(fā)現(xiàn)隱藏的邊界條件和潛在的漏洞。此外,測(cè)試用例的編寫對(duì)協(xié)議的理解有較高要求,手動(dòng)操作容易出現(xiàn)不一致或偏差,導(dǎo)致測(cè)試的有效性和覆蓋范圍受限。
3、為應(yīng)對(duì)傳統(tǒng)測(cè)試的局限性,自動(dòng)化網(wǎng)絡(luò)協(xié)議模糊測(cè)試技術(shù)應(yīng)運(yùn)而生,利用計(jì)算機(jī)算法生成海量隨機(jī)和變異的測(cè)試用例。通過向協(xié)議提供無效、異?;蛞馔獾妮斎耄詣?dòng)化模糊測(cè)試能夠大幅提升測(cè)試覆蓋率,快速發(fā)現(xiàn)協(xié)議實(shí)現(xiàn)中的缺陷。該技術(shù)通過自動(dòng)化生成測(cè)試數(shù)據(jù)并廣泛覆蓋協(xié)議的各個(gè)方面,尤其是數(shù)據(jù)包結(jié)構(gòu)、字段值和狀態(tài)轉(zhuǎn)換序列,能夠大幅提高漏洞發(fā)現(xiàn)的效率。然而,現(xiàn)有的自動(dòng)化網(wǎng)絡(luò)協(xié)議模糊測(cè)試工具仍存在諸多不足。
4、現(xiàn)有技術(shù)缺點(diǎn)如下:
5、缺乏協(xié)議理解:現(xiàn)有的模糊測(cè)試器僅將輸入數(shù)據(jù)作為字節(jié)序列進(jìn)行隨機(jī)變異,未能理解協(xié)議的語義結(jié)構(gòu)與邏輯路徑。這導(dǎo)致生成的測(cè)試用例無法覆蓋協(xié)議的關(guān)鍵行為,難以觸發(fā)潛在的協(xié)議漏洞。
6、無法處理復(fù)雜協(xié)議:對(duì)于具有復(fù)雜狀態(tài)轉(zhuǎn)換和協(xié)商過程的協(xié)議,現(xiàn)有的模糊測(cè)試器缺乏處理能力,無法識(shí)別和保持協(xié)議狀態(tài)的正確性,導(dǎo)致測(cè)試覆蓋率低,測(cè)試器生成的請(qǐng)求和響應(yīng)序列難以有效測(cè)試協(xié)議行為。
7、測(cè)試用例生成效率低下:現(xiàn)有模糊測(cè)試器生成的測(cè)試用例缺乏多樣性與有效性,多數(shù)僅為隨機(jī)數(shù)據(jù)或模板化輸入,未能捕捉協(xié)議的邊界條件及關(guān)鍵特性,導(dǎo)致漏洞發(fā)現(xiàn)能力受限。
8、低效的測(cè)試過程:由于缺乏對(duì)協(xié)議的深入理解,現(xiàn)有模糊測(cè)試工具通常生成大量無效測(cè)試用例,浪費(fèi)大量時(shí)間和資源。同時(shí),缺乏智能的測(cè)試指導(dǎo)與控制,導(dǎo)致測(cè)試無法充分覆蓋協(xié)議的所有操作路徑。
9、缺乏靈活性和可擴(kuò)展性:現(xiàn)有模糊測(cè)試工具大多是為特定協(xié)議或應(yīng)用場景定制開發(fā),無法靈活適應(yīng)其他協(xié)議的測(cè)試需求,難以擴(kuò)展和推廣到不同的協(xié)議和環(huán)境。
10、為了解決上述問題,現(xiàn)提供一種技術(shù)方案。
技術(shù)實(shí)現(xiàn)思路
1、為了克服現(xiàn)有技術(shù)的上述缺陷,本發(fā)明的實(shí)施例提供一種網(wǎng)絡(luò)協(xié)議自動(dòng)模糊測(cè)試系統(tǒng),通過自動(dòng)化網(wǎng)絡(luò)協(xié)議模糊測(cè)試的全流程設(shè)計(jì),結(jié)合協(xié)議行為模型的精準(zhǔn)構(gòu)建和動(dòng)態(tài)測(cè)試函數(shù)的智能選擇,顯著提升了協(xié)議測(cè)試的覆蓋率和效率。首先,通過代理服務(wù)器捕獲并記錄完整的通信數(shù)據(jù),構(gòu)建協(xié)議的有限狀態(tài)自動(dòng)機(jī)(fsa),將協(xié)議狀態(tài)與其轉(zhuǎn)換過程精確映射,并通過生成通用消息序列(gms)對(duì)協(xié)議消息進(jìn)行聚類與關(guān)聯(lián)分析,建立起協(xié)議狀態(tài)與消息流轉(zhuǎn)的明確對(duì)應(yīng)關(guān)系,從而有效簡化了復(fù)雜協(xié)議的行為解析。其次,測(cè)試系統(tǒng)通過對(duì)協(xié)議狀態(tài)的穩(wěn)定性和消息序列差異性的動(dòng)態(tài)分析,能夠智能選擇確定性或非確定性測(cè)試函數(shù),廣泛覆蓋協(xié)議的各種行為場景。在測(cè)試過程中,所有輸入、輸出及狀態(tài)信息被實(shí)時(shí)記錄,并在出現(xiàn)異常狀態(tài)時(shí)自動(dòng)進(jìn)行狀態(tài)重置或回退,確保測(cè)試的持續(xù)性與可追溯性。通過這一全方位的自動(dòng)化測(cè)試機(jī)制,本發(fā)明能夠更全面地發(fā)現(xiàn)協(xié)議中的潛在安全漏洞,減少手動(dòng)編寫測(cè)試用例的工作量,提升測(cè)試的準(zhǔn)確性和有效性,確保網(wǎng)絡(luò)協(xié)議的安全性與健壯性,以解決上述背景技術(shù)中提出的問題。
2、為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
3、一種網(wǎng)絡(luò)協(xié)議自動(dòng)模糊測(cè)試系統(tǒng),包括:協(xié)議跟蹤記錄模塊、協(xié)議行為模型構(gòu)建模塊、通用消息序列提取模塊、模糊測(cè)試函數(shù)應(yīng)用模塊和狀態(tài)追蹤單元;
4、協(xié)議跟蹤記錄模塊:通過代理服務(wù)器捕獲并記錄客戶端與服務(wù)端之間的每條應(yīng)用層通信數(shù)據(jù),將所有通信數(shù)據(jù)完整存儲(chǔ),作為協(xié)議行為模型構(gòu)建模塊的輸入;
5、協(xié)議行為模型構(gòu)建模塊:利用記錄的通信數(shù)據(jù),生成協(xié)議的fsa,將協(xié)議的狀態(tài)與對(duì)應(yīng)的轉(zhuǎn)換過程映射,形成完整的狀態(tài)轉(zhuǎn)換模型;
6、通用消息序列提取模塊:基于從協(xié)議行為模型構(gòu)建模塊獲取的fsa模型,應(yīng)用抽象函數(shù)對(duì)輸入消息進(jìn)行聚類,生成相似消息的gms,并通過序列比對(duì)算法將gms與狀態(tài)轉(zhuǎn)換關(guān)聯(lián);
7、模糊測(cè)試函數(shù)應(yīng)用模塊:從通用消息序列提取模塊獲取gms與狀態(tài)轉(zhuǎn)換的關(guān)聯(lián)信息,模糊測(cè)試引擎根據(jù)gms與狀態(tài)轉(zhuǎn)換的關(guān)聯(lián),結(jié)合協(xié)議狀態(tài)的穩(wěn)定性和消息序列的差異性,選擇確定性函數(shù)向gms指定字段插入預(yù)定義異常數(shù)據(jù),或選擇非確定性函數(shù)隨機(jī)修改gms的動(dòng)態(tài)字段,生成通信測(cè)試數(shù)據(jù);
8、狀態(tài)追蹤單元:在測(cè)試過程中,記錄所有輸入、輸出及狀態(tài)信息,實(shí)時(shí)更新測(cè)試狀態(tài),當(dāng)測(cè)試過程中協(xié)議狀態(tài)出現(xiàn)異?;驙顟B(tài)轉(zhuǎn)換無法繼續(xù)時(shí),重置測(cè)試狀態(tài)為fsa的初始狀態(tài)。
9、在一個(gè)優(yōu)選的實(shí)施方式中,協(xié)議跟蹤記錄模塊的運(yùn)行過程包括以下內(nèi)容:
10、s1.1,代理服務(wù)器配置為中間人模式,處于客戶端和服務(wù)端之間,接收并轉(zhuǎn)發(fā)雙方的通信流量;代理服務(wù)器設(shè)置捕獲規(guī)則,以監(jiān)聽和記錄傳輸過程中所有應(yīng)用層的通信數(shù)據(jù);通過過濾器定義所需記錄的協(xié)議類型及數(shù)據(jù)包結(jié)構(gòu);
11、s1.2,在代理服務(wù)器上同時(shí)開啟客戶端到服務(wù)端以及服務(wù)端到客戶端的雙向數(shù)據(jù)捕獲機(jī)制,確保完整收集雙方的請(qǐng)求和響應(yīng);實(shí)時(shí)分析每一個(gè)數(shù)據(jù)包的協(xié)議類型、結(jié)構(gòu)及內(nèi)容,并提取出完整的應(yīng)用層消息;
12、s1.3,將解析后的每個(gè)應(yīng)用層數(shù)據(jù)包逐條記錄,包含消息的原始字段、數(shù)據(jù)內(nèi)容及消息頭信息;數(shù)據(jù)存儲(chǔ)按照通信會(huì)話進(jìn)行分組;
13、s1.4,對(duì)已捕獲的應(yīng)用層數(shù)據(jù)進(jìn)行格式化處理,將其轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)格式;數(shù)據(jù)經(jīng)過序列化處理后保存至本地或遠(yuǎn)程存儲(chǔ),所有通信數(shù)據(jù)按照協(xié)議類型、通信方向和時(shí)間順序進(jìn)行結(jié)構(gòu)化存儲(chǔ);
14、s1.5,在捕獲和記錄過程中,檢測(cè)通信數(shù)據(jù)中的異常情況,實(shí)時(shí)記錄并生成對(duì)應(yīng)的異常日志;使用校驗(yàn)機(jī)制對(duì)每條記錄的通信數(shù)據(jù)進(jìn)行完整性校驗(yàn),任何校驗(yàn)失敗的數(shù)據(jù)包將觸發(fā)重新捕獲機(jī)制;
15、s1.6,捕獲并記錄的應(yīng)用層通信數(shù)據(jù)通過數(shù)據(jù)輸出接口提供給后續(xù)的協(xié)議行為模型構(gòu)建模塊。
16、在一個(gè)優(yōu)選的實(shí)施方式中,協(xié)議行為模型構(gòu)建模塊的運(yùn)行過程包括以下內(nèi)容:
17、s2.1,對(duì)記錄的通信數(shù)據(jù)進(jìn)行解析,逐條分析數(shù)據(jù)包的應(yīng)用層協(xié)議結(jié)構(gòu),將通信數(shù)據(jù)中的每個(gè)協(xié)議消息提取出來;解析過程中依據(jù)協(xié)議標(biāo)準(zhǔn),識(shí)別出消息的類型、字段及對(duì)應(yīng)的狀態(tài)信息,確保每條消息都準(zhǔn)確映射到協(xié)議的狀態(tài);
18、s2.2,對(duì)解析后的消息根據(jù)協(xié)議定義進(jìn)行狀態(tài)識(shí)別,確定每條消息所屬的協(xié)議狀態(tài);通過分析消息的內(nèi)容和結(jié)構(gòu),識(shí)別協(xié)議的初始狀態(tài)、中間狀態(tài)及終止?fàn)顟B(tài),并將每個(gè)狀態(tài)進(jìn)行標(biāo)記;
19、s2.3,基于已識(shí)別的協(xié)議狀態(tài),分析每條消息之間的關(guān)系,通過協(xié)議的規(guī)則定義消息流轉(zhuǎn)的合法性;每條消息從一個(gè)狀態(tài)到達(dá)下一個(gè)狀態(tài)時(shí),按照協(xié)議的規(guī)范將其映射為狀態(tài)轉(zhuǎn)換,將這些轉(zhuǎn)換關(guān)系記錄為狀態(tài)機(jī)中的狀態(tài)路徑;
20、s2.4,將所有識(shí)別出的協(xié)議狀態(tài)及其對(duì)應(yīng)的轉(zhuǎn)換關(guān)系組織成初始的fsa,即有限狀態(tài)自動(dòng)機(jī),fsa包括狀態(tài)節(jié)點(diǎn)、狀態(tài)之間的轉(zhuǎn)換路徑、初始狀態(tài)及終止?fàn)顟B(tài);每個(gè)狀態(tài)的轉(zhuǎn)換路徑唯一對(duì)應(yīng)協(xié)議中的消息流轉(zhuǎn)規(guī)則;
21、s2.5,對(duì)初始生成的fsa進(jìn)行優(yōu)化,通過狀態(tài)掃描算法移除未使用或無效的冗余狀態(tài),檢測(cè)并合并具有相同輸入和輸出的重復(fù)狀態(tài)和轉(zhuǎn)換路徑,將等效狀態(tài)在協(xié)議行為上進(jìn)行邏輯分析后合并處理;針對(duì)協(xié)議中頻繁出現(xiàn)或具有可預(yù)測(cè)性的狀態(tài),進(jìn)行聚合處理以減少重復(fù)狀態(tài)和路徑表達(dá);基于協(xié)議行為分析對(duì)狀態(tài)轉(zhuǎn)換路徑進(jìn)行權(quán)重分析,優(yōu)化低權(quán)重的次要路徑,同時(shí)確保所有狀態(tài)轉(zhuǎn)換之間不存在沖突,最終生成的fsa模型;
22、s2.6,將優(yōu)化后的fsa與原始的通信數(shù)據(jù)進(jìn)行比對(duì),逐條驗(yàn)證每個(gè)狀態(tài)及其轉(zhuǎn)換關(guān)系是否符合協(xié)議定義的行為模式;根據(jù)協(xié)議的規(guī)則集檢測(cè)狀態(tài)機(jī)中的每條路徑,確保所有合法的狀態(tài)轉(zhuǎn)換均被正確包含,任何違反協(xié)議規(guī)范的轉(zhuǎn)換被標(biāo)記為異常路徑,供后續(xù)處理使用。
23、在一個(gè)優(yōu)選的實(shí)施方式中,通用消息序列提取模塊的運(yùn)行過程包括以下內(nèi)容:
24、s3.1,從構(gòu)建的fsa中,根據(jù)協(xié)議消息的結(jié)構(gòu)和內(nèi)容,應(yīng)用抽象函數(shù)提取每條輸入消息的關(guān)鍵特征;抽象函數(shù)根據(jù)協(xié)議的語法和語義,識(shí)別消息中的關(guān)鍵字段、數(shù)據(jù)類型及結(jié)構(gòu),并將相似的字段內(nèi)容歸類為同一抽象特征集;
25、s3.2,使用特征聚類算法,將輸入消息按照其抽象特征進(jìn)行聚類;
26、s3.3,對(duì)每一組聚類后的消息,生成gms,即通用消息序列,gms作為協(xié)議消息交互的抽象表示形式;
27、s3.4,應(yīng)用序列比對(duì)算法,將生成的gms與fsa模型中的狀態(tài)轉(zhuǎn)換進(jìn)行關(guān)聯(lián);比對(duì)算法通過分析協(xié)議狀態(tài)轉(zhuǎn)換過程中的消息流轉(zhuǎn)特性,確定每條gms對(duì)應(yīng)的狀態(tài)轉(zhuǎn)換路徑;每個(gè)狀態(tài)轉(zhuǎn)換都對(duì)應(yīng)一個(gè)gms,以確保協(xié)議行為模型和消息序列的緊密關(guān)聯(lián),使協(xié)議的狀態(tài)轉(zhuǎn)換在gms的基礎(chǔ)上得以準(zhǔn)確表達(dá);
28、s3.5,對(duì)每條gms與fsa狀態(tài)轉(zhuǎn)換的關(guān)聯(lián)進(jìn)行逐一驗(yàn)證,確保每個(gè)gms能夠準(zhǔn)確反映相應(yīng)狀態(tài)轉(zhuǎn)換中的消息特性;對(duì)無法關(guān)聯(lián)或存在歧義的gms進(jìn)行優(yōu)化,通過消息特征抽象和重新聚類,確保每個(gè)狀態(tài)轉(zhuǎn)換都有一個(gè)明確且唯一的gms表示。
29、在一個(gè)優(yōu)選的實(shí)施方式中,模糊測(cè)試函數(shù)應(yīng)用模塊的運(yùn)行過程包括以下內(nèi)容:
30、s4.1,根據(jù)gms與協(xié)議狀態(tài)轉(zhuǎn)換的關(guān)聯(lián)關(guān)系,解析當(dāng)前協(xié)議狀態(tài)和相應(yīng)消息序列的特征;通過分析每條gms的字段結(jié)構(gòu)及其對(duì)應(yīng)的狀態(tài)轉(zhuǎn)換路徑,確定當(dāng)前協(xié)議狀態(tài)的轉(zhuǎn)換是否為穩(wěn)定狀態(tài)或動(dòng)態(tài)跳轉(zhuǎn)狀態(tài),識(shí)別協(xié)議在這一狀態(tài)下的特征變化;
31、s4.2,在每一次消息傳輸過程中,依據(jù)狀態(tài)轉(zhuǎn)換路徑對(duì)協(xié)議狀態(tài)的穩(wěn)定性進(jìn)行評(píng)估,計(jì)算協(xié)議狀態(tài)穩(wěn)定度指數(shù),協(xié)議狀態(tài)穩(wěn)定度指數(shù)依據(jù)協(xié)議在當(dāng)前狀態(tài)下是否持續(xù)接收到相同類型的輸入消息以及狀態(tài)是否在相同路徑上循環(huán)而確定;若狀態(tài)穩(wěn)定且無明顯跳轉(zhuǎn),則判定為協(xié)議狀態(tài)穩(wěn)定;反之,則判定為協(xié)議狀態(tài)跳轉(zhuǎn);
32、協(xié)議狀態(tài)穩(wěn)定度指數(shù)的獲取邏輯為:
33、s4.2.1,對(duì)于協(xié)議的每個(gè)狀態(tài),首先對(duì)其接收到的輸入消息進(jìn)行分類;每個(gè)輸入消息類型被定義為mi,其中mi代表輸入消息i,依據(jù)協(xié)議的消息字段結(jié)構(gòu)和功能來識(shí)別不同類型的消息;所有的輸入消息類型集合表示為{m1,m2,…,mn},其中n是當(dāng)前狀態(tài)所接收到的不同輸入消息類型的總數(shù);為計(jì)算消息類型的穩(wěn)定性,定義消息類型一致性函數(shù):其中,c(mi)是輸入消息mi在時(shí)間段[t1,t2]內(nèi)的一致性度量;δ(mi,t)表示在時(shí)刻t輸入的消息是否為類型mi,若是則δ=1,否則δ=0;t1和t2是指定的時(shí)間區(qū)間;
34、s4.2.2,為了判斷狀態(tài)是否在相同的路徑上循環(huán),定義狀態(tài)轉(zhuǎn)換路徑為pj,其中pj代表狀態(tài)在第j次轉(zhuǎn)換時(shí)的路徑序列;路徑序列的集合表示為{p1,p2,…,pk},其中k是當(dāng)前狀態(tài)下已識(shí)別的不同路徑序列總數(shù);定義路徑循環(huán)性函數(shù):其中,l(pj)表示路徑pj的循環(huán)程度;δ(pj,s)表示在時(shí)刻s狀態(tài)是否沿路徑pj進(jìn)行轉(zhuǎn)換,若是則δ=1,否則δ=0;s1和s2為指定的狀態(tài)轉(zhuǎn)換區(qū)間;
35、s4.2.3,協(xié)議狀態(tài)穩(wěn)定度指數(shù)s的計(jì)算需要綜合消息類型一致性和路徑循環(huán)性;公式如下:其中,指數(shù)部分用于描述路徑循環(huán)的衰減效應(yīng),若路徑循環(huán)頻繁則狀態(tài)穩(wěn)定性增加;
36、s4.2.4,將協(xié)議狀態(tài)穩(wěn)定度指數(shù)和協(xié)議狀態(tài)穩(wěn)定閾值進(jìn)行比較,若協(xié)議狀態(tài)穩(wěn)定度指數(shù)大于協(xié)議狀態(tài)穩(wěn)定閾值,表示協(xié)議處于穩(wěn)定狀態(tài),協(xié)議在當(dāng)前狀態(tài)下持續(xù)接收到相同類型的輸入消息,并沿著相同路徑進(jìn)行循環(huán),協(xié)議行為保持一致且可預(yù)測(cè),則判定為協(xié)議狀態(tài)穩(wěn)定;反之,若協(xié)議狀態(tài)穩(wěn)定度指數(shù)小于協(xié)議狀態(tài)穩(wěn)定閾值,則表示協(xié)議處于不穩(wěn)定狀態(tài),協(xié)議狀態(tài)頻繁跳轉(zhuǎn),輸入消息類型和路徑發(fā)生顯著變化,協(xié)議的行為無法預(yù)測(cè)且存在異常轉(zhuǎn)換或潛在風(fēng)險(xiǎn),判定為協(xié)議狀態(tài)跳轉(zhuǎn)。
37、在一個(gè)優(yōu)選的實(shí)施方式中,模糊測(cè)試函數(shù)應(yīng)用模塊的運(yùn)行過程還包括以下內(nèi)容:
38、s4.3,對(duì)當(dāng)前gms消息序列的字段值和結(jié)構(gòu)進(jìn)行差異性分析,計(jì)算消息序列變異度指數(shù),通過字段比對(duì)算法檢測(cè)消息序列內(nèi)的字段值范圍、結(jié)構(gòu)一致性及變化幅度,若字段值和結(jié)構(gòu)保持一致且無顯著變化,則判定為協(xié)議狀態(tài)穩(wěn)定;反之,若字段結(jié)構(gòu)或值的變化幅度較大,則判定為協(xié)議狀態(tài)跳轉(zhuǎn);
39、消息序列變異度指數(shù)的獲取邏輯為:
40、s4.3.1,首先對(duì)消息序列中的每個(gè)字段進(jìn)行值范圍分析,設(shè)定消息序列為g={m1,m2,...,mq},其中ma表示第a條消息,每條消息由多個(gè)字段組成,記為ma={fa1,fa2,...,fap},其中fap表示第a條消息的第b個(gè)字段的值;為了檢測(cè)每個(gè)字段值的變異情況,定義字段值差異度函數(shù):v(fab)=(max(fab)-min(fab));其中,v(fab)表示字段fab在消息序列中的值范圍差異,max(fab)和min(fab)分別為對(duì)應(yīng)字段的最大值與最小值;
41、s4.3.2,對(duì)消息序列中的字段結(jié)構(gòu)進(jìn)行比對(duì),定義字段結(jié)構(gòu)相似度函數(shù)s(fab,fac),用于檢測(cè)消息序列內(nèi)字段的結(jié)構(gòu)一致性;字段結(jié)構(gòu)表示為即字段的類型和格式信息;字段結(jié)構(gòu)相似度函數(shù)定義為:其中,s(fab,fac)表示字段fab和字段fac的結(jié)構(gòu)相似性,值在[0,1]之間;
42、s4.3.3,定義字段變化幅度函數(shù)d(fab),用于檢測(cè)每個(gè)字段值的變異幅度,檢測(cè)相關(guān)字段的每個(gè)值與前一個(gè)值的變化率,公式如下:其中,d(fab)表示字段fab在消息序列中每兩個(gè)連續(xù)值之間的變化幅度之和;
43、s4.3.4,結(jié)合字段值差異度、字段結(jié)構(gòu)相似度以及字段變化幅度,定義消息序列變異度指數(shù)msv(g)的計(jì)算公式為:a:表示消息序列中的消息編號(hào),用于區(qū)分不同的消息ma;b:表示消息ma中的字段編號(hào),用于表示不同的字段fab;q:表示消息序列中消息的總數(shù)量,用來遍歷所有消息;p:表示每條消息中包含的字段數(shù)量,用來遍歷所有字段;d:表示消息序列中連續(xù)兩個(gè)消息的索引,用于計(jì)算字段值的變化幅度;
44、s4.3.5,當(dāng)消息序列變異度指數(shù)大于消息序列變異閾值時(shí),表示消息序列中的字段值、結(jié)構(gòu)或變化幅度存在顯著差異,消息的內(nèi)容或結(jié)構(gòu)發(fā)生較大變化,消息序列差異性較高,存在不一致的消息格式或顯著的協(xié)議行為變化,則消息序列差異性較大;反之,當(dāng)消息序列變異度指數(shù)小于消息序列變異閾值時(shí),表示消息序列中的字段值、結(jié)構(gòu)保持相對(duì)一致,變化幅度較小,消息內(nèi)容和結(jié)構(gòu)較為穩(wěn)定,差異性較低,消息序列在協(xié)議交互中呈現(xiàn)一致的行為模式,則判定消息序列差異性較小。
45、在一個(gè)優(yōu)選的實(shí)施方式中,模糊測(cè)試函數(shù)應(yīng)用模塊的運(yùn)行過程還包括以下內(nèi)容:
46、s4.4,若協(xié)議狀態(tài)穩(wěn)定且消息序列差異性較小,調(diào)用確定性模糊測(cè)試函數(shù);在gms中的指定字段插入預(yù)定義的異常數(shù)據(jù),異常數(shù)據(jù)的插入包括大字符串、極限整數(shù)值、超長字符序列;插入的位置依據(jù)gms的字段結(jié)構(gòu)確定,異常數(shù)據(jù)會(huì)覆蓋或替代原有字段內(nèi)容,生成用于測(cè)試的異常數(shù)據(jù)包;
47、s4.5,若協(xié)議狀態(tài)跳轉(zhuǎn)或消息序列差異性較大,調(diào)用非確定性模糊測(cè)試函數(shù);對(duì)gms中的動(dòng)態(tài)數(shù)據(jù)字段進(jìn)行隨機(jī)修改,包括跳過部分字段、隨機(jī)填充變量字段或修改字段內(nèi)容,生成不確定的數(shù)據(jù)流動(dòng)路徑,所有動(dòng)態(tài)字段的修改基于gms的結(jié)構(gòu)特征,確保修改后的數(shù)據(jù)符合協(xié)議的基本格式要求,但行為上隨機(jī)化;
48、s4.6,通過確定性或非確定性函數(shù)生成的修改數(shù)據(jù)被封裝為通信測(cè)試數(shù)據(jù)包,數(shù)據(jù)包按照協(xié)議的要求進(jìn)行格式化,確保數(shù)據(jù)包符合協(xié)議的基本傳輸規(guī)則;生成的測(cè)試數(shù)據(jù)被發(fā)送至協(xié)議的服務(wù)端或客戶端,測(cè)試系統(tǒng)記錄返回的響應(yīng)數(shù)據(jù)以及協(xié)議的狀態(tài)變化。
49、在一個(gè)優(yōu)選的實(shí)施方式中,狀態(tài)追蹤單元的運(yùn)行包括以下內(nèi)容:
50、s5.1,在測(cè)試過程中,實(shí)時(shí)記錄每條輸入消息,包含消息的類型、字段值、結(jié)構(gòu)以及消息來源;輸入消息的記錄不僅包括原始輸入數(shù)據(jù),還對(duì)經(jīng)過模糊測(cè)試引擎修改后的消息數(shù)據(jù)進(jìn)行詳細(xì)存檔;消息的記錄形式以原始消息和修改后的消息進(jìn)行對(duì)比,確保能夠回溯測(cè)試過程中對(duì)協(xié)議的具體輸入影響;
51、s5.2,對(duì)每條輸入消息的對(duì)應(yīng)輸出進(jìn)行記錄,輸出數(shù)據(jù)包括協(xié)議響應(yīng)的消息內(nèi)容、狀態(tài)轉(zhuǎn)換情況以及任何異常輸出;所有輸出數(shù)據(jù)與對(duì)應(yīng)的輸入消息建立關(guān)聯(lián),以便分析輸入消息對(duì)協(xié)議狀態(tài)轉(zhuǎn)換和行為的影響;輸出數(shù)據(jù)記錄的詳細(xì)信息包括協(xié)議的返回消息、錯(cuò)誤碼、狀態(tài)碼以及協(xié)議在當(dāng)前狀態(tài)下的執(zhí)行路徑;
52、s5.3,在測(cè)試過程中,協(xié)議的狀態(tài)信息實(shí)時(shí)更新;每次協(xié)議狀態(tài)發(fā)生轉(zhuǎn)換時(shí),將當(dāng)前狀態(tài)的所有信息進(jìn)行記錄,包含狀態(tài)編號(hào)、當(dāng)前路徑、轉(zhuǎn)換的觸發(fā)條件以及下一狀態(tài)的預(yù)測(cè);每次狀態(tài)更新時(shí),記錄當(dāng)前狀態(tài)在fsa中的位置,確保狀態(tài)機(jī)的行為路徑與實(shí)際協(xié)議行為保持一致;
53、s5.4,在協(xié)議測(cè)試過程中,通過異常檢測(cè)機(jī)制對(duì)狀態(tài)變化進(jìn)行持續(xù)監(jiān)控,檢測(cè)協(xié)議狀態(tài)的合法性及轉(zhuǎn)換行為的合理性;若協(xié)議狀態(tài)轉(zhuǎn)換出現(xiàn)異常,會(huì)自動(dòng)觸發(fā)異常檢測(cè);異常檢測(cè)機(jī)制通過對(duì)fsa中的合法路徑進(jìn)行匹配,實(shí)時(shí)判斷協(xié)議狀態(tài)是否發(fā)生異常,若出現(xiàn)異常,標(biāo)記對(duì)應(yīng)狀態(tài)為異常狀態(tài)并停止當(dāng)前測(cè)試;
54、s5.5,當(dāng)協(xié)議狀態(tài)發(fā)生異常或狀態(tài)轉(zhuǎn)換無法繼續(xù)時(shí),自動(dòng)重置協(xié)議狀態(tài)至fsa的初始狀態(tài);狀態(tài)重置過程包括清空當(dāng)前協(xié)議狀態(tài)緩存,將協(xié)議狀態(tài)指針恢復(fù)至初始狀態(tài)節(jié)點(diǎn),同時(shí)重置輸入輸出消息記錄,以確保后續(xù)測(cè)試能夠從協(xié)議的初始狀態(tài)開始,重新進(jìn)行狀態(tài)路徑的驗(yàn)證;若協(xié)議狀態(tài)轉(zhuǎn)換出現(xiàn)局部異常且協(xié)議整體能夠繼續(xù)運(yùn)行,執(zhí)行狀態(tài)回退機(jī)制,回退到最近一次有效狀態(tài),避免完全重置協(xié)議;
55、s5.6,所有輸入、輸出、狀態(tài)更新、異常檢測(cè)和狀態(tài)重置的詳細(xì)信息均記錄在日志文件中;日志記錄包括每個(gè)消息的輸入與輸出關(guān)聯(lián)、每次狀態(tài)更新的完整路徑信息、異常狀態(tài)的發(fā)生條件以及重置或回退的具體操作;日志文件作為后續(xù)分析的重要依據(jù),用于回溯協(xié)議行為。
56、本發(fā)明一種網(wǎng)絡(luò)協(xié)議自動(dòng)模糊測(cè)試系統(tǒng)的技術(shù)效果和優(yōu)點(diǎn):
57、1.本發(fā)明通過代理服務(wù)器捕獲并記錄客戶端與服務(wù)端之間的每條應(yīng)用層通信數(shù)據(jù),確保所有協(xié)議交互信息完整且準(zhǔn)確地被存儲(chǔ),生成協(xié)議的有限狀態(tài)自動(dòng)機(jī)(fsa),將協(xié)議的狀態(tài)與對(duì)應(yīng)的轉(zhuǎn)換過程完整映射,形成清晰的狀態(tài)轉(zhuǎn)換模型,消除傳統(tǒng)方法中對(duì)協(xié)議邏輯的模糊理解,基于此模型對(duì)輸入消息進(jìn)行聚類,生成相似消息的通用消息序列(gms),并通過序列比對(duì)算法將gms與狀態(tài)轉(zhuǎn)換進(jìn)行精確關(guān)聯(lián),從而建立起協(xié)議狀態(tài)與消息流轉(zhuǎn)之間的明確對(duì)應(yīng)關(guān)系,通過這種方式能夠有效簡化復(fù)雜協(xié)議行為,提升協(xié)議解析的準(zhǔn)確性與效率,大幅提高測(cè)試覆蓋率,減少手動(dòng)編寫測(cè)試用例的工作量,并確保所有狀態(tài)和消息路徑都得到全面分析和驗(yàn)證,有助于更深入地發(fā)現(xiàn)潛在的安全漏洞和設(shè)計(jì)缺陷。
58、2.本發(fā)明通過對(duì)協(xié)議狀態(tài)的穩(wěn)定性和消息序列的差異性進(jìn)行動(dòng)態(tài)分析,測(cè)試系統(tǒng)能夠根據(jù)當(dāng)前協(xié)議狀態(tài)和消息變化選擇合適的測(cè)試函數(shù),在狀態(tài)穩(wěn)定且消息一致時(shí)插入預(yù)定義的異常數(shù)據(jù)進(jìn)行確定性測(cè)試,在狀態(tài)跳轉(zhuǎn)頻繁或消息變化顯著時(shí)采用非確定性測(cè)試函數(shù)隨機(jī)修改消息字段,實(shí)現(xiàn)對(duì)協(xié)議行為的廣泛覆蓋和深入挖掘,同時(shí),測(cè)試過程中的所有輸入、輸出及狀態(tài)變化信息被實(shí)時(shí)記錄,確保測(cè)試數(shù)據(jù)的完整性和可追溯性,當(dāng)協(xié)議狀態(tài)出現(xiàn)異?;驙顟B(tài)轉(zhuǎn)換無法繼續(xù)時(shí),系統(tǒng)自動(dòng)重置協(xié)議狀態(tài)至初始狀態(tài),或通過回退機(jī)制恢復(fù)至最近的有效狀態(tài),確保測(cè)試能夠持續(xù)進(jìn)行,這一機(jī)制能夠提升測(cè)試的精準(zhǔn)性與效率,并全面捕捉協(xié)議中的潛在漏洞和不一致行為,保證協(xié)議的健壯性和安全性。