本申請(qǐng)涉及軟件系統(tǒng)建模與分析,尤其涉及一種數(shù)據(jù)檢測方法、裝置、設(shè)備、介質(zhì)以及產(chǎn)品。
背景技術(shù):
1、rust是由謀智公司開發(fā)的一種編程語言,旨在構(gòu)建高效且安全的底層軟件,它的主要思想是繼承c和c++的大部分功能,從而保留c和c++良好的運(yùn)行時(shí)性能,但同時(shí)又會(huì)通過嚴(yán)格的編譯檢查,排除c和c++的安全問題,因此越來越多的開發(fā)人員采用rust進(jìn)行程序額度編譯。
2、現(xiàn)有技術(shù)對(duì)于rust程序的漏洞檢測中,通常會(huì)采用靜態(tài)檢測器rust-clippy檢測那些遵循某些簡單源代碼模式的內(nèi)存bug,但是rust-clippy僅能涵蓋少量的bug模式,此外,還有相關(guān)人員采用動(dòng)態(tài)內(nèi)存bug檢測器miri,其可用于解釋和執(zhí)行rust的中級(jí)中間表示(mir,mid-level?intermediate?representation),但是在實(shí)際使用中miri還會(huì)產(chǎn)生許多誤報(bào),由此可見,基于程序分析的檢測器雖然具有分析速度快等優(yōu)點(diǎn),但覆蓋bug的范圍較窄,且容易出現(xiàn)誤報(bào),此外,rust的別名模型構(gòu)建了一個(gè)動(dòng)態(tài)內(nèi)存bug檢測器,其可以有效報(bào)告未正確嵌套使用引用時(shí)潛在的不確定行為和內(nèi)存bug,同時(shí)具有高精度等優(yōu)點(diǎn),但是,這個(gè)動(dòng)態(tài)檢測器依靠用戶提供的輸入來觸發(fā)內(nèi)存bug,無法實(shí)現(xiàn)及時(shí)的漏洞檢測。
3、上述內(nèi)容僅用于輔助理解本申請(qǐng)的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)的主要目的在于提供一種數(shù)據(jù)檢測方法、裝置、設(shè)備、介質(zhì)以及產(chǎn)品,旨在解決現(xiàn)有的漏洞檢測器無法對(duì)rust程序進(jìn)行動(dòng)態(tài)檢測的技術(shù)問題。
2、為實(shí)現(xiàn)上述目的,本申請(qǐng)?zhí)岢鲆环N數(shù)據(jù)檢測方法,所述方法包括:
3、獲取應(yīng)用程序的動(dòng)態(tài)追蹤數(shù)據(jù),并根據(jù)所述動(dòng)態(tài)追蹤數(shù)據(jù)進(jìn)行建模得到最終數(shù)據(jù)模型;
4、通過模型分析工具對(duì)所述最終數(shù)據(jù)模型進(jìn)行數(shù)據(jù)檢測,得到數(shù)據(jù)檢測報(bào)告。
5、在一實(shí)施例中,所述獲取應(yīng)用程序的動(dòng)態(tài)追蹤數(shù)據(jù),并根據(jù)所述動(dòng)態(tài)追蹤數(shù)據(jù)進(jìn)行建模得到最終數(shù)據(jù)模型的步驟包括:
6、檢測所述應(yīng)用程序的程序狀態(tài);
7、在所述程序狀態(tài)為程序運(yùn)行的情況下,通過追蹤工具對(duì)應(yīng)用程序進(jìn)行動(dòng)態(tài)追蹤,得到動(dòng)態(tài)追蹤數(shù)據(jù);
8、將所述動(dòng)態(tài)追蹤數(shù)據(jù)映射為初始數(shù)據(jù)模型;
9、對(duì)所述初始數(shù)據(jù)模型進(jìn)行結(jié)構(gòu)優(yōu)化,得到最終數(shù)據(jù)模型。
10、在一實(shí)施例中,所述通過追蹤工具對(duì)應(yīng)用程序進(jìn)行動(dòng)態(tài)追蹤,得到動(dòng)態(tài)追蹤數(shù)據(jù)的步驟包括:
11、通過所述追蹤工具對(duì)所述應(yīng)用程序的運(yùn)行狀態(tài)進(jìn)行追蹤,得到所述應(yīng)用程序中線程的第一共享內(nèi)存讀寫操作、線程id、內(nèi)存地址以及操作時(shí)間戳;
12、對(duì)所述第一共享內(nèi)存讀寫操作、線程id、內(nèi)存地址以及操作時(shí)間戳進(jìn)行篩選,得到初始動(dòng)態(tài)追蹤數(shù)據(jù);
13、基于預(yù)設(shè)的數(shù)據(jù)映射需求,對(duì)所述初始動(dòng)態(tài)追蹤數(shù)據(jù)進(jìn)行數(shù)據(jù)過濾,得到動(dòng)態(tài)追蹤數(shù)據(jù)。
14、在一實(shí)施例中,所述將所述動(dòng)態(tài)追蹤數(shù)據(jù)映射為初始數(shù)據(jù)模型的步驟包括:
15、提取所述動(dòng)態(tài)追蹤數(shù)據(jù)中的第二共享內(nèi)存讀寫操作;
16、根據(jù)所述第二共享內(nèi)存讀寫操作構(gòu)建得到內(nèi)存訪問圖;
17、通過優(yōu)化算法對(duì)所述內(nèi)存訪問圖進(jìn)行語義等價(jià)性裁剪,得到優(yōu)化后的內(nèi)存訪問圖;
18、根據(jù)數(shù)據(jù)模型建模規(guī)則將所述優(yōu)化后的內(nèi)存訪問圖映射為初始數(shù)據(jù)模型。
19、在一實(shí)施例中,所述對(duì)所述初始數(shù)據(jù)模型進(jìn)行結(jié)構(gòu)優(yōu)化,得到最終數(shù)據(jù)模型的步驟包括:
20、對(duì)所述初始數(shù)據(jù)模型進(jìn)行仿真操作,得到模型無效路徑;
21、分析所述初始數(shù)據(jù)模型中的聚合位置,得到模型重復(fù)路徑;
22、將所述初始數(shù)據(jù)模型中的模型無效路徑進(jìn)行刪除,將所述初始數(shù)據(jù)模型中的模型重復(fù)路徑進(jìn)行聚合,并引入并發(fā)語義,得到最終數(shù)據(jù)模型。
23、在一實(shí)施例中,所述通過模型分析工具對(duì)所述最終數(shù)據(jù)模型進(jìn)行數(shù)據(jù)檢測,得到數(shù)據(jù)檢測報(bào)告的步驟包括:
24、通過所述模型分析工具對(duì)所述最終數(shù)據(jù)模型進(jìn)行可達(dá)性分析,得到數(shù)據(jù)可達(dá)性分析結(jié)果;
25、通過所述模型分析工具對(duì)所述最終數(shù)據(jù)模型進(jìn)行變遷沖突檢測,得到數(shù)據(jù)變遷沖突檢測結(jié)果;
26、通過所述模型分析工具對(duì)所述最終數(shù)據(jù)模型進(jìn)行標(biāo)記流轉(zhuǎn)分析,得到數(shù)據(jù)標(biāo)記流轉(zhuǎn)分析結(jié)果;
27、根據(jù)所述可達(dá)性分析結(jié)果、數(shù)據(jù)變遷沖突檢測結(jié)果以及數(shù)據(jù)標(biāo)記流轉(zhuǎn)分析結(jié)果生成數(shù)據(jù)檢測報(bào)告。
28、此外,為實(shí)現(xiàn)上述目的,本申請(qǐng)還提出一種數(shù)據(jù)檢測裝置,所述數(shù)據(jù)檢測裝置包括:
29、建模模塊,用于獲取應(yīng)用程序的動(dòng)態(tài)追蹤數(shù)據(jù),并根據(jù)所述動(dòng)態(tài)追蹤數(shù)據(jù)進(jìn)行建模得到最終數(shù)據(jù)模型;
30、檢測模塊,用于通過模型分析工具對(duì)所述最終數(shù)據(jù)模型進(jìn)行數(shù)據(jù)檢測,得到數(shù)據(jù)檢測報(bào)告。
31、此外,為實(shí)現(xiàn)上述目的,本申請(qǐng)還提出一種數(shù)據(jù)檢測設(shè)備,所述設(shè)備包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序配置為實(shí)現(xiàn)如上文所述的數(shù)據(jù)檢測方法的步驟。
32、此外,為實(shí)現(xiàn)上述目的,本申請(qǐng)還提出一種存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上文所述的數(shù)據(jù)檢測方法的步驟。
33、此外,為實(shí)現(xiàn)上述目的,本申請(qǐng)還提供一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上文所述的數(shù)據(jù)檢測方法的步驟。
34、本申請(qǐng)?zhí)岢龅囊粋€(gè)或多個(gè)技術(shù)方案,至少具有以下技術(shù)效果:
35、本申請(qǐng)實(shí)施例提出的一種數(shù)據(jù)檢測方法、裝置、設(shè)備、介質(zhì)以及產(chǎn)品,通過獲取應(yīng)用程序的動(dòng)態(tài)追蹤數(shù)據(jù),并根據(jù)所述動(dòng)態(tài)追蹤數(shù)據(jù)進(jìn)行建模得到最終數(shù)據(jù)模型;通過模型分析工具對(duì)所述最終數(shù)據(jù)模型進(jìn)行數(shù)據(jù)檢測,得到數(shù)據(jù)檢測報(bào)告。由此,根據(jù)獲取到的rust程序的動(dòng)態(tài)追蹤數(shù)據(jù)進(jìn)行建模得到,最終petri網(wǎng)模型,隨后通過petri網(wǎng)分析工具對(duì)最終petri網(wǎng)模型進(jìn)行數(shù)據(jù)檢測,得到數(shù)據(jù)檢測報(bào)告,解決了現(xiàn)有的漏洞檢測器無法對(duì)rust程序進(jìn)行動(dòng)態(tài)檢測的問題,提高了數(shù)據(jù)檢測的準(zhǔn)確性。
1.一種數(shù)據(jù)檢測方法,其特征在于,所述方法包括:
2.如權(quán)利要求1所述的方法,其特征在于,所述獲取應(yīng)用程序的動(dòng)態(tài)追蹤數(shù)據(jù),并根據(jù)所述動(dòng)態(tài)追蹤數(shù)據(jù)進(jìn)行建模得到最終數(shù)據(jù)模型的步驟包括:
3.如權(quán)利要求2所述的方法,其特征在于,所述通過追蹤工具對(duì)應(yīng)用程序進(jìn)行動(dòng)態(tài)追蹤,得到動(dòng)態(tài)追蹤數(shù)據(jù)的步驟包括:
4.如權(quán)利要求2所述的方法,其特征在于,所述將所述動(dòng)態(tài)追蹤數(shù)據(jù)映射為初始數(shù)據(jù)模型的步驟包括:
5.如權(quán)利要求2所述的方法,其特征在于,所述對(duì)所述初始數(shù)據(jù)模型進(jìn)行結(jié)構(gòu)優(yōu)化,得到最終數(shù)據(jù)模型的步驟包括:
6.如權(quán)利要求1所述的方法,其特征在于,所述通過模型分析工具對(duì)所述最終數(shù)據(jù)模型進(jìn)行數(shù)據(jù)檢測,得到數(shù)據(jù)檢測報(bào)告的步驟包括:
7.一種數(shù)據(jù)檢測裝置,其特征在于,所述裝置包括:
8.一種數(shù)據(jù)檢測設(shè)備,其特征在于,所述設(shè)備包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序配置為實(shí)現(xiàn)如權(quán)利要求1至6中任一項(xiàng)所述的數(shù)據(jù)檢測方法的步驟。
9.一種存儲(chǔ)介質(zhì),其特征在于,所述存儲(chǔ)介質(zhì)為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6中任一項(xiàng)所述的數(shù)據(jù)檢測方法的步驟。
10.一種計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6中任一項(xiàng)所述的數(shù)據(jù)檢測方法的步驟。