本公開涉及安全,尤其涉及一種java靜態(tài)污點分析方法及相關設備。
背景技術:
1、java語言作為當今主流語言之一,廣泛應用于軟件開發(fā)和系統(tǒng)設計當中。隨著互聯(lián)網(wǎng)+、云計算、移動智能終端等技術的發(fā)展,軟件系統(tǒng)對信息安全的需求越來越高。軟件系統(tǒng)信息安全的兩個重要特性是信息的保密性(confidentiality)和完整性。保密性是指系統(tǒng)的敏感數(shù)據(jù)在使用過程中不會被泄露到外界,完整性是指系統(tǒng)重要數(shù)據(jù)在使用過程中不會被惡意地篡改或刪除。然而隨著業(yè)務需求的逐漸增多,編寫的程序越來越大,越來越復雜。在程序的應用開發(fā)過程中,難免會引入一些不安全行為導致用戶敏感數(shù)據(jù)存在泄露的風險。
技術實現(xiàn)思路
1、有鑒于此,本公開的目的在于提出一種java靜態(tài)污點分析方法及相關設備。
2、基于上述目的,本公開提供了一種java靜態(tài)污點分析方法,包括:
3、獲取待分析的源代碼;其中,所述源代碼包括至少一應用程序接口;
4、基于所述應用程序接口的功能,確定所述應用程序接口的類型;基于所述應用程序接口與動態(tài)特性的關系,標注與動態(tài)特性關聯(lián)的應用程序接口為動態(tài)特性關聯(lián)接口;
5、基于所述源代碼和所述動態(tài)特性關聯(lián)接口,構建控制流圖、函數(shù)調(diào)用圖和第一圖中間表示;其中,所述控制流圖用于構建所述第一圖中間表示;
6、獲取被污染變量,根據(jù)所述被污染變量、所述應用程序接口的類型以及所述第一圖中間表示,確定污點數(shù)據(jù)流;
7、根據(jù)所述污點數(shù)據(jù)流和所述函數(shù)調(diào)用圖,確定污染路徑。
8、基于同一發(fā)明構思,本公開實施例還提供了一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時實現(xiàn)如上述任意一項所述的靜態(tài)污點分析方法。
9、基于同一發(fā)明構思,本公開實施例還提供了一種非暫態(tài)計算機可讀存儲介質(zhì),所述非暫態(tài)計算機可讀存儲介質(zhì)存儲計算機指令,所述計算機指令用于使計算機執(zhí)行上述任一所述的靜態(tài)污點分析方法。
10、從上面所述可以看出,本公開實施例提供的java靜態(tài)污點分析方法及相關設備,獲取待分析的源代碼;其中,所述源代碼包括至少一應用程序接口;基于所述應用程序接口的功能,確定所述應用程序接口的類型;基于所述應用程序接口與動態(tài)特性的關系,標注與動態(tài)特性關聯(lián)的應用程序接口為動態(tài)特性關聯(lián)接口;基于所述源代碼和所述動態(tài)特性關聯(lián)接口,構建控制流圖、函數(shù)調(diào)用圖和第一圖中間表示;獲取被污染變量,根據(jù)所述被污染變量、所述應用程序接口的類型以及所述第一圖中間表示,確定污點數(shù)據(jù)流;根據(jù)所述污點數(shù)據(jù)流和所述函數(shù)調(diào)用圖,確定污染路徑。采用這樣的技術方案,無需編譯源代碼有助于節(jié)約分析成本;動態(tài)特性關聯(lián)接口導致的隱式依賴被反應在第一圖中間表示,從而提高了分析的完備性;此外,本公開實施例提供的第一圖中間表示通過控制流圖、函數(shù)調(diào)用圖等形成,去除了臨時變量,增加了分析結(jié)果的可讀性。
1.一種java靜態(tài)污點分析方法,其特征在于,包括:
2.根據(jù)權利要求1所述的java靜態(tài)污點分析方法,其特征在于,所述基于所述源代碼和所述動態(tài)特性關聯(lián)接口,構建控制流圖、函數(shù)調(diào)用圖和第一圖中間表示,包括:
3.根據(jù)權利要求1所述的java靜態(tài)污點分析方法,其特征在于,所述源代碼包括至少一入口函數(shù);
4.根據(jù)權利要求3所述的java靜態(tài)污點分析方法,其特征在于,所述實體依賴信息包括依賴信息;所述控制流圖包括第三節(jié)點;所述第二圖中間表示包括第二節(jié)點;
5.根據(jù)權利要求4所述的java靜態(tài)污點分析方法,其特征在于,所述基于所述動態(tài)特性關聯(lián)接口,對所述函數(shù)調(diào)用圖和所述第一圖中間表示進行更新,包括:
6.根據(jù)權利要求1所述的java靜態(tài)污點分析方法,其特征在于,所述應用程序接口包括第一類型接口;第一圖中間表示包括第一節(jié)點;
7.根據(jù)權利要求6所述的java靜態(tài)污點分析方法,其特征在于,所述污點傳播規(guī)則包括:被污染的變量為指向堆對象的變量時,指向同一堆對象的變量會被污染。
8.根據(jù)權利要求6所述的java靜態(tài)污點分析方法,其特征在于,所述根據(jù)所述污點數(shù)據(jù)流和所述函數(shù)調(diào)用圖,確定污染路徑,包括:
9.一種電子設備,包括存儲器、處理器及存儲在所述存儲器上并可由所述處理器執(zhí)行的計算機程序,其特征在于,所述處理器在執(zhí)行所述計算機程序時實現(xiàn)根據(jù)權利要求1至8中任意一項所述的java靜態(tài)污點分析方法。
10.一種非暫態(tài)計算機可讀存儲介質(zhì),其特征在于,所述非暫態(tài)計算機可讀存儲介質(zhì)存儲計算機指令,所述計算機指令用于使計算機執(zhí)行根據(jù)權利要求1至8中任意一項所述的java靜態(tài)污點分析方法。