本發明涉及計算機安全,尤其涉及一種代碼檢測方法、裝置、存儲介質、程序產品和設備。
背景技術:
1、隨著互聯網技術快速發展,信息系統的網絡安全風險持續增加,威脅挑戰日益嚴峻,密碼安全是信息安全的重要基礎,可以用于有效保障網絡信息系統的數據安全,密碼技術是保障網絡信息系統的核心技術和重要手段。
2、為了提前發現應用軟件中的密碼安全風險,因此需要有相關技術對應用軟件進行密碼安全性檢測。目前對應用軟件的密碼安全性檢測主要包括靜態安全檢測方式、動態安全檢測方式以及動靜態結合的安全性檢測方式。其中,靜態安全檢測主要是對應用軟件的源代碼或反編譯后的源代碼及中間代碼進行分析,輸出分析報告,但這種方式無法確認這些高風險密碼算法是否被調用,從而會產生大量的誤報,需要人工處理,比如高風險的密碼算法實際是測試代碼,在正常運行時并不會被調用,或者這些高風險的密碼算法是算法庫中保存的但不再使用的密碼算法等。
技術實現思路
1、為解決現有存在的技術問題,本發明實施例提供一種代碼檢測方法、裝置、存儲介質、程序產品和設備。
2、為達到上述目的,本發明實施例的技術方案是這樣實現的:
3、第一方面,本發明實施例提供一種代碼檢測方法,包括:
4、獲取待檢測的目標代碼,確定所述目標代碼中包含的至少部分函數對應的函數調用關系;
5、根據所述至少部分函數確定一個或多個存在安全風險的目標函數;
6、基于所述函數調用關系確定每個目標函數對應的所有函數調用路徑;其中,每條函數調用路徑的調用目的函數均為對應的目標函數;
7、根據每個目標函數對應的所有函數調用路徑確定每個目標函數的可觸發情況,基于各個目標函數的可觸發情況獲得所述目標代碼的檢測結果。
8、上述方案中,所述確定所述目標代碼中包含的至少部分函數對應的函數調用關系,包括:將預設的第一函數庫中的各函數作為調用關系的最小分析對象,對所述目標代碼進行靜態分析,獲得所述至少部分函數對應的函數調用關系。
9、上述方案中,所述根據所述至少部分函數確定一個或多個存在安全風險的目標函數,包括:基于第二函數庫對所述至少部分函數進行模式匹配,根據匹配結果確定所述一個或多個存在安全風險的目標函數;所述第二函數庫包括確定存在安全風險的多種函數。
10、上述方案中,所述函數調用關系至少包括調用關系圖,所述調用關系圖中的節點表征所述至少部分函數,所述調用關系圖中的有向邊表征所述有向邊連接的兩個節點所對應的函數之間的調用關系。
11、上述方案中,所述有向邊表征所連接的源節點對應的函數對所連接的目的節點對應的函數進行調用;所述基于所述函數調用關系確定每個目標函數對應的所有函數調用路徑,包括:將每個目標函數對應的節點作為搜索起點,對所述調用關系圖中的有向邊進行由目的節點至源節點的回溯搜索,獲得每個目標函數對應的所有函數調用路徑,每條函數調用路徑均通過所述調用關系圖中的一條或多條有向邊形成調用目的節點為所述目標函數對應的節點的路徑。
12、上述方案中,所述對所述調用關系圖中的有向邊進行由目的節點至源節點的回溯搜索,包括:基于所述調用關系圖確定搜索起點關聯的所有調用邊,每個調用邊均為以所述搜索起點為目的節點的有向邊;將每條調用邊對應的源節點作為新的搜索起點,重新基于所述調用關系圖確定新的搜索起點關聯的所有調用邊,直到新的搜索起點不存在關聯的調用邊或者新的搜索起點為所述目標函數對應的節點。
13、上述方案中,所述根據每個目標函數對應的所有函數調用路徑確定每個目標函數的可觸發情況,包括:確定每條函數調用路徑關聯的各有向邊的源節點,基于預設代碼庫對各源節點對應的函數進行模式匹配,獲得每條函數調用路徑對應的可觸發情況;所述預設代碼庫中包括用于觸發函數運行的多種代碼;根據每個目標函數對應的所有函數調用路徑的可觸發情況確定每個目標函數的可觸發情況。
14、上述方案中,所述基于預設代碼庫對各源節點對應的函數進行模式匹配,獲得每條函數調用路徑對應的可觸發情況,包括:在函數調用路徑中存在至少一個源節點對應的函數與所述預設代碼庫中的代碼匹配的情況下,確定所述函數調用路徑為第一類路徑,所述第一類路徑表征存在觸發情況的路徑;在函數調用路徑中的所有源節點對應的函數與所述預設代碼庫中的代碼均不匹配的情況下,確定所述函數調用路徑為第二類路徑,所述第二類路徑表征不存在觸發情況的路徑。
15、上述方案中,所述根據每個目標函數對應的所有函數調用路徑的可觸發情況確定每個目標函數的可觸發情況,包括:在目標函數對應的所有函數調用路徑中存在至少一條函數調用路徑為所述第一類路徑的情況下,確定所述目標函數存在觸發情況;在目標函數對應的所有函數調用路徑均為第二類路徑的情況下,確定所述目標函數不存在觸發情況。
16、上述方案中,所述獲取待檢測的目標代碼,包括:獲取目標程序,對所述目標程序進行反編譯和/或反匯編獲得所述目標代碼。
17、上述方案中,所述檢測結果至少包括各個目標函數對應的風險值,所述風險值表征對應的目標函數是否存在觸發情況;所述方法還包括:基于所述檢測結果對所述目標代碼進行動態分析。
18、第二方面,本發明實施例還提供一種代碼檢測裝置,包括獲取模塊、確定模塊、搜索模塊和分析模塊;其中,
19、所述獲取模塊,用于獲取待檢測的目標代碼,確定所述目標代碼中包含的至少部分函數對應的調用關系圖;
20、所述確定模塊,用于根據所述至少部分函數確定一個或多個存在安全風險的目標函數;
21、所述搜索模塊,用于基于所述函數調用關系確定每個目標函數對應的所有函數調用路徑;其中,每條函數調用路徑的調用目的函數均為對應的目標函數;
22、所述分析模塊,用于根據每個目標函數對應的所有函數調用路徑確定每個目標函數的可觸發情況,基于各個目標函數的可觸發情況獲得所述目標代碼的檢測結果。
23、第三方面,本發明實施例還提供一種計算機可讀存儲介質,其上存儲有計算機程序,該程序被處理器執行時實現前述代碼檢測方法的步驟。
24、第四方面,本發明實施例還提供一種計算機程序產品,包括計算機程序,所述計算機程序在被處理器執行時實現前述代碼檢測方法的步驟。
25、第五方面,本發明實施例還提供一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述程序時實現前述代碼檢測方法的步驟。
26、本發明實施例提供的代碼檢測方法、裝置、存儲介質、程序產品和設備,根據目標代碼中至少部分函數的調用關系找出目標代碼中存在安全風險的一個或多個目標函數,并針對目標函數對應的函數調用路徑進行目標函數的可觸發性分析,能夠準確判斷存在安全風險的目標函數是否可被真實調用,提高了代碼靜態檢測的效率和準確度,同時降低了檢測的誤報率和人工負荷,可應用于密碼應用安全性檢測領域,具有廣闊的應用前景。
1.一種代碼檢測方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述確定所述目標代碼中包含的至少部分函數對應的函數調用關系,包括:
3.根據權利要求1所述的方法,其特征在于,所述根據所述至少部分函數確定一個或多個存在安全風險的目標函數,包括:
4.根據權利要求1至3任一項所述的方法,其特征在于,所述函數調用關系至少包括調用關系圖,所述調用關系圖中的節點表征所述至少部分函數,所述調用關系圖中的有向邊表征所述有向邊連接的兩個節點所對應的函數之間的調用關系。
5.根據權利要求4所述的方法,其特征在于,所述有向邊表征所連接的源節點對應的函數對所連接的目的節點對應的函數進行調用;所述基于所述函數調用關系確定每個目標函數對應的所有函數調用路徑,包括:
6.根據權利要求5所述的方法,其特征在于,所述對所述調用關系圖中的有向邊進行由目的節點至源節點的回溯搜索,包括:
7.根據權利要求5所述的方法,其特征在于,所述根據每個目標函數對應的所有函數調用路徑確定每個目標函數的可觸發情況,包括:
8.根據權利要求7所述的方法,其特征在于,所述基于預設代碼庫對各源節點對應的函數進行模式匹配,獲得每條函數調用路徑對應的可觸發情況,包括:
9.根據權利要求8所述的方法,其特征在于,所述根據每個目標函數對應的所有函數調用路徑的可觸發情況確定每個目標函數的可觸發情況,包括:
10.根據權利要求1所述的方法,其特征在于,所述獲取待檢測的目標代碼,包括:
11.根據權利要求1所述的方法,其特征在于,所述檢測結果至少包括各個目標函數對應的風險值,所述風險值表征對應的目標函數是否存在觸發情況;所述方法還包括:
12.一種代碼檢測裝置,其特征在于,所述裝置包括獲取模塊、確定模塊、搜索模塊和分析模塊;其中,
13.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,該程序被處理器執行時實現權利要求1至11任一項所述方法的步驟。
14.一種計算機程序產品,包括計算機程序,其特征在于,所述計算機程序在被處理器執行時實現權利要求1至11任一項所述方法的步驟。
15.一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執行所述程序時實現權利要求1至11任一項所述方法的步驟。