安全防護方法、裝置及計算機可讀存儲介質與流程
2024-04-15 19:00:05 3
1.本公開涉及網絡安全技術領域,尤其是一種安全防護方法、裝置及計算機可讀存儲介質。
背景技術:
2.目前,在提供應用程式編程接口(api)調用服務的情況下,為了避免通過api調用的方式惡意攻擊api而影響到網絡業務,api提供方需要針對api進行安全防護處理。
3.相關技術中,api提供方一般對api的調用頻率進行限制,即限制用戶在規定時間內對api的調用次數。在某一用戶對api的調用頻率超過限制的情況下,api提供方將直接拒絕該用戶的api的調用請求並將該用戶加入黑名單中,從而能夠降低api被惡意攻擊的風險。
技術實現要素:
4.發明人注意到,按照相關技術中的方式確定api調用請求是否正常的準確率較低。
5.發明人分析後發現,在某些情況下某些正常的調用請求會被誤以為是不正常的調用請求。例如,用戶也可能較高頻率地發送正常的api的調用請求,但是這樣的調用請求按照相關技術中的方式會錯誤地確定為是不正常的調用請求。
6.為了解決上述問題,本公開實施例提出了如下解決方案。
7.根據本公開實施例的一方面,提供一種安全防護方法,包括:監測第一api的調用過程中調用的多個函數組成的函數調用鏈,在所述函數調用鏈中,所述多個函數按照調用的先後順序依次排列;將所述函數調用鏈輸入機器學習模型以確定所述第一api的調用請求是否正常。
8.在一些實施例中,所述方法還包括監測所述第一api的調用過程中調用的至少一個預設函數,所述多個函數包括所述至少一個預設函數;根據每個預設函數對應的代碼的上下文,確定所述多個函數中除所述至少一個預設函數外的其他函數。
9.在一些實施例中,所述方法還包括對所述第一api的調用請求進行第一檢測以確定所述第一api的調用請求是否正常;在所述第一檢測的結果為正常的情況下,允許所述第一api被調用;其中,所述第一檢測包括下列多項檢測中的至少一項檢測,在所述至少一項檢測中每項檢測的結果均為是的情況下,所述第一檢測的結果才為正常:檢測所述第一api的調用請求的數值類型是否屬於預設數值類型;檢測所述第一api的調用請求的長度範圍是否屬於預設長度範圍;檢測所述第一api的調用請求的大小範圍是否屬於預設大小範圍;檢測所述第一api的調用請求是否不包含結構化查詢語言sql語句;和檢測所述第一api的調用請求是否不包含與所述第一api的調用請求的數值類型不匹配的字符。
10.在一些實施例中,所述方法還包括在滿足預設條件的情況下,將所述第一api的調用請求與其他不正常的api的調用請求進行聚類,所述預設條件包括所述機器學習模型確定所述第一api的調用請求不正常;根據所述聚類的結果,確定不正常的api的調用請求具
有的共性特徵。
11.在一些實施例中,所述方法還包括在所述機器學習模型確定所述第一api的調用請求不正常的情況下,在模擬環境中執行第二檢測以判斷在所述第一api的調用過程中是否出現攻擊行為;在出現攻擊行為的情況下,根據所述聚類的結果,確定不正常的api調用請求具有的所述共性特徵與所述攻擊行為的類別的對應關係;其中,所述預設條件還包括所述第二檢測的結果為出現攻擊行為。
12.在一些實施例中,所述方法還包括以第二api作為所述第一api進行所述第一檢測;所述多項檢測還包括檢測所述第二api的調用請求是否具有所述共性特徵。
13.在一些實施例中,所述方法還包括在未出現攻擊行為的情況下,確定所述第一api的調用請求正常。
14.在一些實施例中,所述攻擊行為包括篡改系統文件和獲取根權限中的至少一種。
15.在一些實施例中,將所述第一api的調用請求通過流量鏡像的方式複製到所述模擬環境中以執行所述第二檢測。
16.在一些實施例中,在所述第一檢測的結果為正常的情況下,允許所述第一api被調用包括:在所述第一檢測的結果為正常的情況下,執行第三檢測以檢測所述第一api的調用請求攜帶的令牌是否有效;在所述令牌有效的情況下,允許所述第一api被調用;在所述令牌無效的情況下,不允許所述第一api被調用。
17.根據本公開實施例的還一方面,提供一種安全防護裝置,包括:監測模塊,被配置為監測第一應用程式編程接口api的調用過程中調用的多個函數組成的函數調用鏈,在所述函數調用鏈中,所述多個函數按照調用的先後順序依次排列;確定模塊,被配置為將所述函數調用鏈輸入機器學習模型以確定所述第一api的調用請求是否正常。
18.根據本公開實施例的還一方面,提供一種安全防護裝置,包括:存儲器;以及耦接至所述存儲器的處理器,所述處理器被配置為基於存儲在所述存儲器的指令執行上述任意一個實施例所述的方法。
19.根據本公開實施例的還一方面,提供一種計算機可讀存儲介質,包括電腦程式指令,其中,所述電腦程式指令被處理器執行時實現上述任意一個實施例所述的方法。
20.根據本公開實施例的還一方面,提供一種電腦程式產品,包括電腦程式,其中,所述電腦程式被處理器執行時實現上述任意一個實施例所述的方法。
21.本公開實施例中,通過監測api的調用過程中調用的多個函數按照調用的先後順序依次排列組成的函數調用鏈,並將函數調用鏈輸入機器學習模型以確定api的調用請求是否正常。這樣的方式下,考慮了api的調用過程中的先後順序,從而可以準確地區分出正常的api的調用請求和不正常的api調用請求。
22.下面通過附圖和實施例,對本公開的技術方案做進一步的詳細描述。
附圖說明
23.為了更清楚地說明本公開實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本公開的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
24.圖1是根據本公開一些實施例的安全防護方法的流程示意圖;
25.圖2是根據本公開另一些實施例的安全防護方法的流程示意圖;
26.圖3是根據本公開一些實施例的安全防護裝置的結構示意圖;
27.圖4是根據本公開另一些實施例的安全防護裝置的結構示意圖。
具體實施方式
28.下面將結合本公開實施例中的附圖,對本公開實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本公開一部分實施例,而不是全部的實施例。基於本公開中的實施例,本領域普通技術人員在沒有作出創造性勞動的前提下所獲得的所有其他實施例,都屬於本公開保護的範圍。
29.除非另外具體說明,否則在這些實施例中闡述的部件和步驟的相對布置、數字表達式和數值不限制本公開的範圍。
30.同時,應當明白,為了便於描述,附圖中所示出的各個部分的尺寸並不是按照實際的比例關係繪製的。
31.對於相關領域普通技術人員已知的技術、方法和設備可能不作詳細討論,但在適當情況下,所述技術、方法和設備應當被視為說明書的一部分。
32.在這裡示出和討論的所有示例中,任何具體值應被解釋為僅僅是示例性的,而不是作為限制。因此,示例性實施例的其它示例可以具有不同的值。
33.應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨後的附圖中不需要對其進行進一步討論。
34.另外,在本公開的描述中,術語「第一」、「第二」、「第三」等僅用於描述目的,而不能理解為指示或暗示相對重要性和順序。類似地,雖然在附圖中以特定次序描繪了操作,但是這不應該被理解為要求以所示的特定次序或者以順序次序執行這樣的操作,或者要求執行所有圖示的操作以實現所希望的結果。在某些情況下,多任務處理和並行處理可以是有利的。
35.圖1是根據本公開一些實施例的安全防護方法的流程示意圖。
36.在步驟102,監測第一api的調用過程中調用的多個函數組成的函數調用鏈。這裡,在函數調用鏈中,多個函數按照調用的先後順序依次排列。在一些實施例中,可以利用動態插樁的方式監測多個函數。例如,利用代理(agent)探針監測多個函數。
37.在一些實施例中,可以結合時間戳將多個函數按照調用的先後順序依次排列以組成函數調用鏈。
38.在步驟104,將函數調用鏈輸入機器學習模型以確定第一api的調用請求是否正常。
39.在一些實施例中,在訓練機器學習模型的情況下,可以將第一api的樣本函數調用鏈作為輸入,將對應的攻擊的類型作為輸出對機器學習模型進行訓練。例如,可以將發起結構化查詢語言(sql)攻擊的api的請求的函數調用鏈作為樣本輸入,將攻擊類型「sql攻擊」作為輸出對機器學習模型進行訓練。
40.作為一些實施方式,在訓練機器學習模型的情況下,可以同時將第一api的樣本函數調用鏈和第一api的類型作為輸入,將對應的攻擊的類型作為輸出對機器學習模型進行
訓練以使機器學習模型可以按照api的類型確定第一api的調用請求是否正常。
41.作為一些實施方式,機器學習模型可以是循環神經網絡(rnn)模型。
42.如此,通過監測api的調用過程中調用的多個函數按照調用的先後順序依次排列組成的函數調用鏈,並將函數調用鏈輸入機器學習模型以確定api的調用請求是否正常。這樣的方式下,考慮了api的調用過程中的先後順序,從而可以準確地區分出正常的api的調用請求和不正常的api調用請求。
43.在一些實施例中,可以監測第一api的調用過程中調用的至少一個預設函數,並根據每個預設函數對應的代碼的上下文來確定多個函數中除至少一個預設函數外的其他函數。這裡,函數調用鏈中的多個函數包括該至少一個預設函數。
44.例如,可以在api調用中的關鍵函數(即預設函數)處插樁以獲取對應的代碼和關鍵函數的上下文,利用關鍵函數的上下文可以得到在調用該關鍵函數之前和/或之後還調用的其他函數,進而在結合時間戳的情況下,可以得到按照調用的先後順序依次排列組成的函數調用鏈。這裡,關鍵函數是指具有關鍵性作用的函數,例如存在需要對主要配置進行操作的內容或者在整個調用過程中具有主要作用的函數。
45.作為一些實施方式,關鍵函數可以根據api的類型來選擇。
46.如此,監測第一api的調用過程中調用的預設函數,並根據預設函數對應的代碼的上下文來確定多個函數中除預設函數外的其他函數,進而無需監測更多函數即可得到函數調用鏈,從而節省了在進行監測的情況下所需的系統資源,提高了監測的效率。
47.在一些實施例中,可以對第一api的調用請求進行第一檢測以確定第一api的調用請求是否正常,在第一檢測的結果為正常的情況下,允許第一api被調用。
48.下面結合不同實施方式介紹第一檢測包括的多項檢測。在下面提及各項檢測中,如果檢測結果為「是」,則第一檢測的結果為正常;如果檢測結果為「否」,則第一檢測的結果為不正常。
49.作為一些實施方式,第一檢測可以包括檢測第一api的調用請求的數值類型是否屬於預設數值類型。例如,預設數值類型為「int」類型,那麼數值類型為「int」的api的調用請求可以通過第一檢測,其他數值類型的調用請求不能通過第一檢測。這裡,預設數值類型可以包括一種或多種數據類型。
50.作為另一些實施方式,第一檢測可以包括檢測第一api的調用請求的長度範圍是否屬於預設長度範圍。例如,預設長度範圍為1至16個字符,那麼長度範圍介於1至16個字符(包括1個字符和16個字符)的api的調用請求可以通過第一檢測,其他長度範圍的調用請求不能通過第一檢測。這裡,預設長度範圍可以包括一個或多個長度範圍。
51.作為又一些實施方式,第一檢測可以包括檢測第一api的調用請求的大小範圍是否屬於預設大小範圍。例如,預設大小範圍為1至10千字節(kb),大小範圍為1至10kb(包括1kb和10kb)的api的調用請求可以通過第一檢測,其他大小範圍的調用請求不能通過第一檢測。這裡,預設大小範圍可以包括一種或多種大小範圍。
52.作為還一些實施方式,第一檢測可以包括檢測第一api的調用請求是否不包含sql語句。例如,在api的調用請求不包含sql語句的情況下,該調用請求通過第一檢測,在api的調用請求包含sql語句的情況下不能通過第一檢測。
53.作為還一些實施方式,第一檢測可以包括檢測第一api的調用請求是否不包含與
第一api的調用請求的數值類型不匹配的字符。例如,在數值類型為「int」的api的調用請求中出現諸如漢字和/或標點符號之類的字符,那麼該調用請求不通過第一檢測,在未出現與第一api的調用請求的數值類型不匹配的字符的情況下可以通過第一檢測。
54.應理解,通過第一檢測即第一檢測的結果為正常,不通過第一檢測即第一檢測的結果為不正常。
55.如此,對第一api的調用請求進行第一檢測以確定第一api的調用請求是否正常,在第一檢測的結果為正常的情況下才允許第一api被調用,進而可以先利用第一檢測排除部分不正常的api的調用請求,從而提高區分出正常的api的調用請求和不正常的api調用請求的效率。
56.在一些實施例中,第一檢測包括上述多項檢測中的多項,即第一檢測可以包括檢測第一api的調用請求的數值類型是否屬於預設數值類型,檢測第一api的調用請求的長度範圍是否屬於預設長度範圍,檢測第一api的調用請求的大小範圍是否屬於預設大小範圍,檢測第一api的調用請求是否不包含sql語句,以及檢測第一api的調用請求是否不包含與第一api的調用請求的數值類型不匹配的字符中的兩項或更多項。
57.如此,第一檢測包括上述多項檢測中的多項可以更準確地排除部分不正常的api的調用請求,從而進一步提高區分出正常的api的調用請求和不正常的api調用請求的效率。
58.在一些實施例中,在滿足預設條件的情況下,將第一api的調用請求與其他不正常的api的調用請求進行聚類,並根據聚類的結果,確定不正常的api的調用請求的共性特徵。這裡,預設條件包括機器學習模型確定第一api的調用請求不正常。
59.例如,在機器學習模型確定第一api的調用請求不正常的情況下,可以將第一api的調用請求與其他不正常的api的調用請求進行聚類,例如可以按照諸如數值類型、長度範圍、大小範圍之類的api的調用請求的參數中的一項或多項進行聚類;通過聚類的結果可以得到不正常的api的調用請求的共性特徵。
60.在一些實施例中,共性特徵可以是聚類過程中全部的不正常的api的調用請求中大於預設數量的調用請求共有的特徵,例如,可以是聚類過程中大部分(例如,80%)的不正常的api的調用請求共有的特徵;又例如,可以是聚類過程中全部的不正常的api的調用請求中共有的特徵。
61.如此,在滿足預設條件的情況下,將第一api的調用請求與其他不正常的api的調用請求進行聚類,進而根據聚類的結果確定不正常的api的調用請求的特徵,從而為分析不正常的api的調用請求提供參考。
62.在一些實施例中,還可以對第二api的調用請求進行第一檢測以確定第二api的調用請求是否正常。這種情況下,第一檢測中的多項檢測還包括具有確定出的不正常的api的調用請求的特徵。這裡,第一api可以與第二api相同或不同。
63.如此,在後續的調用請求的第一檢測中,可以提前拒絕具有相同或類似特徵的api的調用請求,從而提高區分出正常的api的調用請求和不正常的api調用請求的效率。
64.在一些實施例中,在機器學習模型確定第一api的調用請求不正常的情況下,在模擬環境中執行第二檢測以判斷在第一api的調用過程中是否出現攻擊行為;在出現攻擊行為的情況下,根據聚類的結果,確定不正常的api調用請求的特徵與攻擊行為的類別的對應
關係。這裡,預設條件還包括第二檢測的結果為出現攻擊行為。換言之,在機器學習模型確定第一api的調用請求不正常,並且出現攻擊行為的情況下,才確定第一api的調用請求不正常。
65.第二檢測也可以稱為攻擊重放檢測。
66.在一些實施例中,可以將第一api的調用請求通過流量鏡像的方式複製到模擬環境中以執行第二檢測。模擬環境例如可以是沙盒。
67.在一些實施例中,攻擊行為可以包括篡改系統文件和獲取根(root)權限中的至少一種。
68.如此,通過聚類的結果確定出不正常的api調用請求的特徵與攻擊行為的類別的對應關係,可以在再接收到api的調用請求的情況下,在拒絕具有相同或類似特徵的api的調用請求基礎上提示出相應的攻擊行為的類別,從而提高區分出正常的api的調用請求和不正常的api調用請求的效率。
69.在一些實施例中,在未出現攻擊行為的情況下,確定第一api的調用請求正常。
70.作為一些實施方式,在未出現攻擊行為的情況下確定第一api的調用請求正常之後,可以正常執行該第一api的調用請求以調用相應的api。
71.如此,在未出現攻擊行為的情況下確定第一api的調用請求正常,可以避免因機器學習模型的誤判而導致拒絕了正常的api的調用請求的情況以及雖然函數調用鏈不合規範但實際為正常的api的調用請求的情況,從而進一步提高了區分出正常的api的調用請求和不正常的api調用請求的準確率。
72.在一些實施例中,在第一檢測的結果為正常的情況下執行第三檢測以檢測第一api的調用請求攜帶的令牌是否有效,在令牌有效的情況下,允許第一api被調用;在令牌無效的情況下,不允許所述第一api被調用。
73.如此,通過在第一檢測的基礎上結合檢測令牌是否有效的方式,可以進一步提高區分出正常的api的調用請求和不正常的api調用請求的準確率。
74.在一些實施例中,在令牌無效的情況下,可以將對應的第一api的調用請求與其他不正常的api的調用請求進行聚類,例如可以按照諸如數值類型、長度範圍、大小範圍之類的api的調用請求的參數中的一項或多項進行聚類;通過聚類的結果可以得到不正常的api的調用請求的共性特徵。
75.如此,在令牌無效的情況下,將第一api的調用請求與其他不正常的api的調用請求進行聚類,進而根據聚類的結果確定不正常的api的調用請求的特徵,從而為分析不正常的api的調用請求提供參考。
76.在一些實施例中,在令牌無效的情況下,在模擬環境中執行第二檢測以判斷在對應的第一api的調用過程中是否出現攻擊行為;在出現攻擊行為的情況下,再進行聚類並根據聚類的結果,確定不正常的api調用請求的特徵與攻擊行為的類別的對應關係。
77.如此,通過聚類的結果確定出不正常的api調用請求的特徵與攻擊行為的類別的對應關係,可以在再接收到api的調用請求的情況下,在提前(即,在執行第三檢測之前)拒絕具有相同或類似特徵的api的調用請求基礎上提示出相應的攻擊行為的類別,從而提高區分出正常的api的調用請求和不正常的api調用請求的效率。
78.圖2是根據本公開另一些實施例的安全防護方法的流程示意圖。
79.在步驟202,接收第一api的調用請求。
80.在步驟204,對第一api的調用請求進行第一檢測以確定第一api的調用請求是否正常。這裡,第一檢測包括前述多項檢測中的至少一項。在第一檢測的結果為正常的情況下,執行步驟206;在第一檢測的結果為不正常的情況下,執行步驟216,即拒絕該第一api的調用請求。
81.在步驟206,執行第三檢測以檢測第一api的調用請求攜帶的令牌是否有效。在令牌有效的情況下執行步驟208,即允許第一api被調用;在令牌無效的情況下,執行步驟218。
82.在步驟210,監測第一api的調用過程中調用的多個函數組成的函數調用鏈並將函數調用鏈輸入機器學習模型。這裡,在函數調用鏈中,多個函數按照調用的先後順序依次排列。
83.在步驟212,機器學習模型確定第一api的調用請求是否正常。在正常的情況下,執行步驟214,即繼續調用該第一api;在不正常的情況下,執行步驟218。
84.在步驟218,在模擬環境中執行第二檢測以判斷在第一api的調用過程中是否出現攻擊行為。在未出現攻擊行為的情況下,執行步驟214;在出現攻擊行為的情況下,執行步驟220。
85.在步驟220,將第一api的調用請求與其他不正常的api的調用請求進行聚類,並根據聚類的結果來確定不正常的api調用請求的特徵與攻擊行為的類別的對應關係。
86.本說明書中各個實施例均採用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似的部分相互參見即可。對於裝置實施例而言,由於其與方法實施例基本對應,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
87.圖3是根據本公開一些實施例的安全防護裝置的結構示意圖。
88.如圖3所示,安全防護裝置包括監測模塊301和確定模塊302。
89.監測模塊301被配置為監測第一api的調用過程中調用的多個函數組成的函數調用鏈,在函數調用鏈中,多個函數按照調用的先後順序依次排列。
90.確定模塊302被配置為將函數調用鏈輸入機器學習模型以確定第一api的調用請求是否正常。
91.在一些實施例中,安全防護裝置還可以包括其他模塊,以執行上述任意一個實施例的安全防護方法。
92.圖4是根據本公開又一些實施例的安全防護裝置的結構示意圖。
93.如圖4所示,安全防護裝置400包括存儲器401以及耦接至該存儲器401的處理器402,處理器402被配置為基於存儲在存儲器401中的指令,執行前述任意一個實施例的方法。
94.存儲器401例如可以包括系統存儲器、固定非易失性存儲介質等。系統存儲器例如可以存儲有作業系統、應用程式、引導裝載程序(boot loader)以及其他程序等。
95.安全防護裝置400還可以包括輸入輸出接口403、網絡接口404、存儲接口405等。這些接口403、404、405之間、以及存儲器401與處理器402之間例如可以通過總線406連接。輸入輸出接口403為顯示器、滑鼠、鍵盤、觸控螢幕等輸入輸出設備提供連接接口。網絡接口404為各種聯網設備提供連接接口。存儲接口405為sd卡、u盤等外置存儲設備提供連接接口。
96.本公開實施例還提供了一種計算機可讀存儲介質,包括電腦程式指令,該電腦程式指令被處理器執行時實現上述任意一個實施例的方法。
97.本公開實施例還提供了一種電腦程式產品,包括電腦程式,該電腦程式被處理器執行時實現上述任意一個實施例的方法。
98.至此,已經詳細描述了本公開的各實施例。為了避免遮蔽本公開的構思,沒有描述本領域所公知的一些細節。本領域技術人員根據上面的描述,完全可以明白如何實施這裡公開的技術方案。
99.本領域內的技術人員應當明白,本公開的實施例可提供為方法、系統、或電腦程式產品。因此,本公開可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本公開可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用非瞬時性存儲介質(包括但不限於磁碟存儲器、cd-rom、光學存儲器等)上實施的電腦程式產品的形式。
100.本公開是參照根據本公開實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解,可由電腦程式指令實現流程圖中一個流程或多個流程和/或方框圖中一個方框或多個方框中指定的功能。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
101.這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
102.這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
103.雖然已經通過示例對本公開的一些特定實施例進行了詳細說明,但是本領域的技術人員應該理解,以上示例僅是為了進行說明,而不是為了限制本公開的範圍。本領域的技術人員應該理解,可在不脫離本公開的範圍和精神的情況下,對以上實施例進行修改或者對部分技術特徵進行等同替換。本公開的範圍由所附權利要求來限定。