1.一種應用程序安裝包的漏洞檢測方法,其特征在于,所述方法包括:
獲取待檢測安裝包的通用中間語言CIL,所述CIL包括多個函數(shù);
對所述CIL進行控制流圖CFG分析,得到所述CIL的CFG,所述CFG包括所述CIL中所述多個函數(shù)之間的調用關系和調用順序;
通過預設條件分析所述CIL,確定漏洞入口點語句以及包含所述漏洞入口點語句的待檢測函數(shù),所述漏洞入口點語句為具有漏洞形成條件的語句;
當對所述待檢測函數(shù)進行漏洞檢測未發(fā)現(xiàn)漏洞,根據(jù)所述CFG中的所述調用關系確定與所述漏洞形成相關且調用順序在調用所述待檢測函數(shù)之前的第一函數(shù),所述第一函數(shù)與所述待檢測函數(shù)具有直接調用關系;
結合所述待檢測函數(shù)對所述第一函數(shù)進行漏洞檢測。
2.根據(jù)權利要求1所述的方法,其特征在于,當結合所述待檢測函數(shù)對所述第一函數(shù)進行漏洞檢測未發(fā)現(xiàn)漏洞,還包括:
對與所述漏洞形成相關的函數(shù)進行回溯遞歸查找,并進行漏洞檢測,直到發(fā)現(xiàn)漏洞或遍歷完根據(jù)所述CFG中所述調用關系確定的與所述漏洞形成相關的函數(shù);
其中,對與所述漏洞形成相關的函數(shù)進行回溯遞歸查找,并進行漏洞檢測具體包括:
結合所述待檢測函數(shù)、所述第一函數(shù)以及與所述漏洞形成相關的,調用順序在調用所述第一函數(shù)之前,調用所述第二函數(shù)之后的函數(shù),對所述第二函數(shù)進行漏洞檢測,所述第二函數(shù)與所述漏洞形成相關,與所述第一函數(shù)具有直接或間接的調用關系,調用順序在調用所述第一函數(shù)之后;
若未發(fā)現(xiàn)漏洞,根據(jù)所述CFG中的所述調用關系確定與所述漏洞形成相關且調用順序在調用所述第二函數(shù)之前的第三函數(shù),所述第三函數(shù)與所述第二函數(shù)具有直接調用關系;
結合所述待檢測函數(shù)、所述第一函數(shù)、與所述漏洞形成相關的,調用順序在調用所述第一函數(shù)之前,調用所述第二函數(shù)之后的函數(shù)以及所述第二函數(shù),對所述第三函數(shù)進行漏洞檢測。
3.根據(jù)權利要求2所述的方法,其特征在于,
若所述對與所述漏洞形成相關的函數(shù)進行回溯遞歸查找,并進行漏洞檢 測,遍歷完根據(jù)所述CFG中所述調用關系確定的與所述漏洞形成相關的函數(shù),未發(fā)現(xiàn)漏洞,則判斷所述待檢測安裝包沒有漏洞。
4.根據(jù)權利要求1所述的方法,其特征在于,
所述CIL具體為編譯器Smali語言。
5.根據(jù)權利要求1所述的方法,其特征在于,
所述待檢測安裝包為應用于安卓Android系統(tǒng)中的安裝包。
6.一種應用程序安裝包的漏洞檢測裝置,其特征在于,包括:
獲取單元,用于獲取待檢測安裝包的通用中間語言CIL,所述CIL包括多個函數(shù);
分析單元,用于對所述CIL進行控制流圖CFG分析,得到所述CIL的CFG,所述CFG包括所述CIL中所述多個函數(shù)之間的調用關系和調用順序;
第一確定單元,用于通過預設條件分析所述CIL,確定漏洞入口點語句以及包含所述漏洞入口點語句的待檢測函數(shù),所述漏洞入口點語句為具有漏洞形成條件的語句;
第二確定單元,用于當對所述待檢測函數(shù)進行漏洞檢測未發(fā)現(xiàn)漏洞,根據(jù)所述CFG中的所述調用關系確定與所述漏洞形成相關且調用順序在調用所述待檢測函數(shù)之前的第一函數(shù),所述第一函數(shù)與所述待檢測函數(shù)具有直接調用關系;
第一檢測單元,用于結合所述待檢測函數(shù)對所述第一函數(shù)進行漏洞檢測。
7.根據(jù)權利要求6所述的裝置,其特征在于,還包括:
第二檢測單元,用于當所述第一檢測單元未發(fā)現(xiàn)漏洞,對與所述漏洞形成相關的函數(shù)進行回溯遞歸查找,并進行漏洞檢測,直到發(fā)現(xiàn)漏洞或遍歷完根據(jù)所述CFG中所述調用關系確定的與所述漏洞形成相關的函數(shù);
其中,所述第二檢測單元對與所述漏洞形成相關的函數(shù)進行回溯遞歸查找,并進行漏洞檢測,具體包括結合所述待檢測函數(shù)、所述第一函數(shù)以及與所述漏洞形成相關的,調用順序在調用所述第一函數(shù)之前,調用所述第二函數(shù)之后的函數(shù),對所述第二函數(shù)進行漏洞檢測,所述第二函數(shù)與所述漏洞形成相關,與所述第一函數(shù)具有直接或間接的調用關系,調用順序在調用所述第一函數(shù)之后;若未發(fā)現(xiàn)漏洞,根據(jù)所述CFG中的所述調用關系確定與所述 漏洞形成相關且調用順序在調用所述第二函數(shù)之前的第三函數(shù),所述第三函數(shù)與所述第二函數(shù)具有直接調用關系;結合所述待檢測函數(shù)、所述第一函數(shù)、與所述漏洞形成相關的,調用順序在調用所述第一函數(shù)之前,調用所述第二函數(shù)之后的函數(shù)以及所述第二函數(shù),對所述第三函數(shù)進行漏洞檢測。
8.根據(jù)權利要求7所述的裝置,其特征在于,
若所述第二檢測單元未發(fā)現(xiàn)漏洞,則判斷所述待檢測安裝包沒有漏洞。
9.根據(jù)權利要求6所述的裝置,其特征在于,
所述CIL具體為編譯器Smali語言。
10.根據(jù)權利要求6所述的裝置,其特征在于,
所述待檢測安裝包為應用于安卓Android系統(tǒng)中的安裝包。