本申請涉及信息安全領域,具體而言,涉及一種漏洞檢測方法及裝置。
背景技術:
:近年來,隨著互聯網越來越多的應用走向開源化,應用程序出現漏洞機率也大大增加,廠商也會發布包含補丁的新版本來推出各種應用程序的漏洞修復方案。在新版本發布的過程中,相關人員需要知曉新版本修復的漏洞位置以及參數等,以確定新版本的安全性。然而,目前的技術大多是通過簡單監測補丁頁面的消息,到相應的頁面下載補丁,并且讀取漏洞說明文件,被動地獲取關于漏洞的一些信息,并不能有效識別漏洞位置和修復的漏洞參數,僅能通過人工進行漏洞分析。針對上述的問題,目前尚未提出有效的解決方案。技術實現要素:本申請實施例提供了一種漏洞檢測方法及裝置,以至少解決由于現有技術不能有效識別漏洞位置和修復的漏洞參數造成的需消耗較多人力進行漏洞分析技術問題。根據本申請實施例的一個方面,提供了一種漏洞檢測方法,包括:獲取目標應用的源碼文件,其中,所述源碼文件包含所述目標應用的標識信息;查找所述標識信息是否已存儲在數據庫中,并在所述標識信息已存儲在所述數據庫的情況下,從所述數據庫中提取與所述標識信息對應的原始源碼文件;判斷所述源碼文件與所述原始源碼文件是否相同;若不相同,獲取所述源碼文件中的、與所述原始源碼文件不同的第一源碼;將所述第一源碼與預先建立的漏洞修復特征模型進行匹配,確定所述第一源碼所修復的漏洞。根據本申請實施例的另一方面,還提供了一種漏洞檢測裝置,包括:第一獲取單元,用于獲取目標應用的源碼文件,其中,所述源碼文件包含所述目標應用的標識信息;查找單元,用于查找所述標識信息是否已存儲在數據庫中,并在所述標識信息已存儲在所述數據庫的情況下,從所述數據庫中提取與所述標識信息對應的原始源碼文 件;判斷單元,用于判斷所述源碼文件與所述原始源碼文件是否相同;第二獲取單元,用于若不相同,獲取所述源碼文件中的、與所述原始源碼文件不同的第一源碼;檢測單元,用于將所述第一源碼與預先建立的漏洞修復特征模型進行匹配,確定所述第一源碼所修復的漏洞。在本申請實施例中,采用獲取目標應用的源碼文件,其中,源碼文件包含目標應用的標識信息;查找標識信息是否已存儲在數據庫中,并在標識信息已存儲在數據庫的情況下,從數據庫中提取與標識信息對應的原始源碼文件;判斷源碼文件與原始源碼文件是否相同;若不相同,獲取源碼文件中的、與原始源碼文件不同的第一源碼;將第一源碼與預先建立的漏洞修復特征模型進行匹配,確定第一源碼所修復的漏洞的方式,通過從應用的源碼文件入手,通過將源碼文件與已存儲的原始源碼對比,找出發生變動的第一源碼,進而根據漏洞修復特征模型匹配第一源碼所修復的漏洞,達到了精確分析漏洞修復位置、類型以及參數的目的,從而實現了提高應用安全性的技術效果,進而解決了由于現有技術不能有效識別漏洞位置和修復的漏洞參數造成的需消耗較多人力進行漏洞分析的技術問題。附圖說明此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:圖1是根據本申請實施例的一種運行漏洞檢測方法的計算機終端的硬件結構框圖;圖2是根據本申請實施例的一種可選的漏洞檢測方法的流程示意圖;圖3是根據本申請實施例的另一種可選的漏洞檢測方法的流程示意圖;圖4是根據本申請實施例的一種可選的漏洞檢測裝置的結構示意圖;圖5是根據本申請實施例的一種可選的判斷單元的結構示意圖;圖6是根據本申請實施例的一種可選的第一獲取單元的結構示意圖;圖7是根據本申請實施例的一種可選的第二獲取單元的結構示意圖;圖8是根據本申請實施例的另一種可選的漏洞檢測裝置的結構示意圖。具體實施方式為了使本
技術領域:
的人員更好地理解本申請方案,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分的實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本申請保護的范圍。需要說明的是,本申請的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本申請的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。實施例1根據本申請實施例,還提供了一種漏洞檢測方法的方法實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟。本申請實施例一所提供的方法實施例可以在移動終端、計算機終端或者類似的運算裝置中執行。以運行在計算機終端上為例,圖1是本申請實施例的一種漏洞檢測方法的計算機終端的硬件結構框圖。如圖1所示,計算機終端10可以包括一個或多個(圖中僅示出一個)處理器102(處理器102可以包括但不限于微處理器MCU或可編程邏輯器件FPGA等的處理裝置)、用于存儲數據的存儲器104、以及用于通信功能的傳輸裝置106。本領域普通技術人員可以理解,圖1所示的結構僅為示意,其并不對上述電子裝置的結構造成限定。例如,計算機終端10還可包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。存儲器104可用于存儲應用軟件的軟件程序以及模塊,如本申請實施例中的漏洞檢測方法對應的程序指令/模塊,處理器102通過運行存儲在存儲器104內的軟件程序以及模塊,從而執行各種功能應用以及數據處理,即實現上述的應用程序的漏洞檢測方法。存儲器104可包括高速隨機存儲器,還可包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態存儲器。在一些實例中,存儲器104 可進一步包括相對于處理器102遠程設置的存儲器,這些遠程存儲器可以通過網絡連接至計算機終端10。上述網絡的實例包括但不限于互聯網、企業內部網、局域網、移動通信網及其組合。傳輸裝置106用于經由一個網絡接收或者發送數據。上述的網絡具體實例可包括計算機終端10的通信供應商提供的無線網絡。在一個實例中,傳輸裝置106包括一個網絡適配器(NetworkInterfaceController,NIC),其可通過基站與其他網絡設備相連從而可與互聯網進行通訊。在一個實例中,傳輸裝置106可以為射頻(RadioFrequency,RF)模塊,其用于通過無線方式與互聯網進行通訊。在上述運行環境下,本申請提供了如圖2所示的漏洞檢測方法。圖2是根據本申請實施例一的漏洞檢測方法的流程圖。步驟S202,獲取目標應用的源碼文件,其中,源碼文件包含目標應用的標識信息。本申請步驟S202中,源碼文件是指源代碼的集合,源代碼則是一組具有特定意義的可以實現特定功能的字符,標識信息可以為目標應用的名稱,本實施例對此不作限定。可選地,上述步驟S202,獲取目標應用的源碼文件的方法可以包括:爬取目標應用的下載地址;從下載地址中解析出目標應用的URL(UniformResourceLocator,統一定位標識符);依據URL,下載源碼文件。具體地,定期爬取目標應用的下載地址,從下載地址中解析出目標應用的URL,并寫入數據庫以備后續使用。并且,可以根據該URL對資源可用性進行判斷,排除資源不可用情況下對性能的影響,將可用資源進行標記寫入數據庫;在完成上述操作后,對依據URL,爬取目標應用的源碼文件。步驟S204,查找標識信息是否已存儲在數據庫中,并在標識信息已存儲在數據庫的情況下,從數據庫中提取與標識信息對應的原始源碼文件。本申請步驟S204中,判斷標識信息是否已存儲在數據庫中,若未存儲在數據庫中,則新建文件、目錄,并記錄源碼文件的Hash(哈希)值;若已存儲在數據庫中,并且已經記錄過Hash值,則執行步驟S206。需要說明的是,數據庫中包含了定期爬取到的各個應用的源碼文件,并記錄有對應源碼文件的Hash值、版本號、名稱等。以數據庫中包含源碼文件的Hash值、版本號、名稱為例,具體內容如表1所示:表1編號源碼文件名稱版本號Hash值1A支付寶3.5.1value12B淘寶5.4.5value23C淘點點1.2.0value34D阿里健康2.1.0value4步驟S206,判斷源碼文件與原始源碼文件是否相同。本申請步驟S206中,在標識信息已存儲在數據庫的情況下,從數據庫中提取與標識信息對應的原始源碼文件,進而判斷源碼文件與原始源碼文件是否相同,若不相同,則認定存在文件變動的情況。可選地,判斷源碼文件與原始源碼文件是否相同包括:步驟S10,讀取源碼文件中的Hash值以及原始源碼文件中的Hash值。以目標應用為淘點點為例,假設淘點點的源碼文件的Hash值為value5,從數據庫中(如表1所示)讀取出淘點點的原始源碼文件C的Hash值為value3。步驟S12,判斷源碼文件中的Hash值與原始源碼文件中的Hash值是否相同。仍以目標應用為淘點點為例,對比value5與value3是否相同。步驟S14,若源碼文件中的Hash值與原始源碼文件中的Hash值相同,則源碼文件與原始源碼文件相同;若源碼文件中的Hash值與原始源碼文件中的Hash值不相同,則源碼文件與原始源碼文件不相同。仍以目標應用為淘點點為例,假設value5與value3不相同,則說明上述淘點點的源碼文件與數據庫中存儲的淘點點的原始源碼文件不相同,假設value5與value3相同,則說明上述淘點點的源碼文件與數據庫中存儲的淘點點的原始源碼文件相同。本申請步驟S10至步驟S14中,可以通過判斷Hash值是否相同來確定源碼文件與原始源碼文件是否相同。源碼文件和原始源碼文件中均包含對應的Hash值,若需判斷Hash值是否相同,首先需從源碼文件中讀取源碼文件的Hash值以及從原始源碼文件中讀取原始源碼文件的Hash值。進而,判斷判斷源碼文件中的Hash值與原始源碼文件中的Hash值是否相同,若源碼文件中的Hash值與原始源碼文件中的Hash值相同,則說明源碼文件與原始源碼 文件相同;若源碼文件中的Hash值與原始源碼文件中的Hash值不相同,則說明源碼文件與原始源碼文件不相同,存在文件變動的情況。步驟S208,若不相同,獲取源碼文件中的、與原始源碼文件不同的第一源碼。本申請步驟S208中,在源碼文件與原始源碼文件不相同的情況下,本實施例的漏洞檢測方法則需要去定位發生變動的具體位置,確定源碼文件中到底哪些源碼發生了變動。可選地,獲取源碼文件中的、與原始源碼文件不同的第一源碼包括步驟S20至步驟S22。步驟S20,分別對源碼文件及原始源碼文件進行解壓。本申請步驟S20,若源碼文件與原始源碼文件不相同,則說明源碼文件與原始源碼文件是相同應用的不同版本(即是目標應用的不同版本),為了精確分析漏洞修復位置、類型以及參數,首先需要對源碼文件及原始源碼文件進行解壓。步驟S22,遍歷解壓后的源碼文件及解壓后的原始源碼文件,對比解壓后的源碼文件中的每個子文件與解壓后的原始源碼文件的每個子文件是否相同,以獲得第一源碼并記錄第一源碼的行號。本申請步驟S22,解壓完成后,對遍歷解壓后的源碼文件及解壓后的原始源碼文件,對比解壓后的源碼文件中的每個子文件與解壓后的原始源碼文件的每個子文件是否相同,對比每個文件的變動,以獲得第一源碼,并記錄變動的行號、內容等。進一步地,將發生變動的第一源碼存儲至數據庫,備份原始源碼文件,將源碼文件覆蓋原始源碼文件,等待下一次爬行。步驟S210,將第一源碼與預先建立的漏洞修復特征模型進行匹配,確定第一源碼所修復的漏洞。本申請步驟S210中,在對比到源碼文件及原始源碼文件存在的差異時,根據預先對不同開發語言產生的漏洞庫,建立的漏洞修復特征模型,該漏洞修復特征模型包括:SQL(StructuredQueryLanguage,結構化查詢語言)注入、任意代碼執行、變量覆蓋、文件包含等各種漏洞修復文件,然后將第一源碼分析至字符串,判斷第一源碼增加的是函數、賦值等操作,將第一源碼與漏洞修復特征模型進行匹配,精確識別第一源碼所修復的漏洞,具體地,識別出所修復的漏洞的位置、類型以及參數。可選地,漏洞修復特征模型包含至少一個漏洞修復文件,漏洞修復文件至少用于修復以下一種或幾種漏洞:SQL注入、任意源碼執行、變量覆蓋以及文件包含。由上可知,本申請上述實施例一所提供的方案,通過從應用的源碼文件入手,通過將源碼文件與已存儲的原始源碼對比,找出發生變動的第一源碼,進而根據漏洞修復特征模型匹配第一源碼所修復的漏洞,達到了精確分析漏洞修復位置、類型以及參數的目的,從而實現了提高應用安全性的技術效果,進而解決了由于現有技術不能有效識別漏洞位置和修復的漏洞參數造成的需消耗較多人力進行漏洞分析的技術問題。可選地,如圖3所示,在判斷源碼文件與原始源碼文件是否相同之后,方法還包括:步驟S302,若不相同,獲取原始源碼文件中的、與源碼文件不同的第二源碼。本申請步驟S302中,在源碼文件與原始源碼文件不相同的情況下,本實施例的漏洞檢測方法還可以將原始源碼文件中與源碼文件不同的第二源碼尋找出來。步驟S304,將第一源碼和第二源碼分別與預先建立的后門特征庫進行匹配,確定第一源碼和第二源碼是否被惡意植入后門。本申請步驟S304中,通過將第一源碼與后門特征庫進行匹配,以及將第二源碼與后門特征庫進行匹配,確定第一源碼和第二源碼是否被惡意植入后門。其中,后門是指繞過安全性控制而獲取對程序或系統訪問權的方法。進一步地,通過遍歷第一源碼和第二源碼,例如遍歷:php(HypertextPreprocessor,超文本處理器)、c、asp(ActiveServerPage,動態服務器頁面)、aspx(開發web應用程序的類庫)、java、ruby(腳本語言)、python(一種面型對象、解釋型計算機程序設計語言)等可編譯或者可解析的文件,通過difflib的SequenceMatcher(序列匹配)庫,判斷源碼文件相對于原始源碼文件是采用了增加、刪除還是修改操作。由此可知,現有技術存在的不能有效識別漏洞位置和修復的漏洞參數造成的應用程序安全性較低的問題,本申請提出一種基于源碼文件的漏洞檢測方法,將源碼文件與已存儲的原始源碼對比,找出發生變動的第一源碼,進而根據漏洞修復特征模型匹配第一源碼所修復的漏洞,達到了精確分析漏洞修復位置、類型以及參數的目的,從而實現了提高應用安全性的技術效果。需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請并不受所描述的動作順序的限制,因為依據本申請,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優選實施例,所涉及的動作和模塊并不一定是本申請所必須的。通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本申請的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網絡設備等)執行本申請各個實施例所述的方法。實施例2根據本申請實施例,還提供了一種用于實施上述方法實施例的裝置實施例,本申請上述實施例所提供的裝置可以在計算機終端上運行。圖4是根據本申請實施例的漏洞檢測裝置的結構示意圖。如圖4所示,該漏洞檢測裝置可以包括第一獲取單元402、查找單元404、判斷單元406、第二獲取單元408以及檢測單元410。其中,第一獲取單元402,用于獲取目標應用的源碼文件,其中,所述源碼文件包含所述目標應用的標識信息;查找單元404,用于查找所述標識信息是否已存儲在數據庫中,并在所述標識信息已存儲在所述數據庫的情況下,從所述數據庫中提取與所述標識信息對應的原始源碼文件;判斷單元406,用于判斷所述源碼文件與所述原始源碼文件是否相同;第二獲取單元408,用于若不相同,獲取所述源碼文件中的、與所述原始源碼文件不同的第一源碼;檢測單元410,用于將所述第一源碼與預先建立的漏洞修復特征模型進行匹配,確定所述第一源碼所修復的漏洞。由上可知,本申請上述實施例二所提供的方案,通過從應用的源碼文件入手,通過將源碼文件與已存儲的原始源碼對比,找出發生變動的第一源碼,進而根據漏洞修復特征模型匹配第一源碼所修復的漏洞,達到了精確分析漏洞修復位置、類型以及參數的目的,從而實現了提高應用安全性的技術效果,進而解決了由于現有技術不能有效識別漏洞位置和修復的漏洞參數造成的需消耗較多人力進行漏洞分析的技術問題。此處需要說明的是,上述第一獲取單元402、查找單元404、判斷單元406、第二獲取單元408以及檢測單元410對應于實施例一中的步驟S202至步驟S210,五個模塊與對應的步驟所實現的示例和應用場景相同,但不限于上述實施例一所公開的內容。需要說明的是,上述模塊作為裝置的一部分可以運行在實施例一提供的計算機終端10中,可以通過軟件實現,也可以通過硬件實現。可選地,所述第二獲取單元408,還用于若不相同,獲取所述原始源碼文件中的、與所述源碼文件不同的第二源碼;所述檢測單元410,還用于將所述第一源碼和所述第二源碼分別與預先建立的后門特征庫進行匹配,確定所述第一源碼和所述第二源碼是否被惡意植入后門。可選地,如圖5所示,所述判斷單元406包括:讀取模塊502和判斷模塊504。其中,讀取模塊502,用于讀取所述源碼文件中的哈希Hash值以及所述原始源碼文件中的Hash值;判斷模塊504,用于判斷所述源碼文件中的Hash值與所述原始源碼文件中的Hash值是否相同;若所述源碼文件中的Hash值與所述原始源碼文件中的Hash值相同,則所述源碼文件與所述原始源碼文件相同;若所述源碼文件中的Hash值與所述原始源碼文件中的Hash值不相同,則所述源碼文件與所述原始源碼文件不相同。此處需要說明的是,上述讀取模塊502和判斷模塊504對應于實施例一中的步驟S10至步驟S14,兩個模塊與對應的步驟所實現的示例和應用場景相同,但不限于上述實施例一所公開的內容。需要說明的是,上述模塊作為裝置的一部分可以運行在實施例一提供的計算機終端10中,可以通過軟件實現,也可以通過硬件實現。可選地,如圖6所示,所述第一獲取單元402包括:爬取模塊602、解析模塊604以及下載模塊606。其中,爬取模塊602,用于爬取所述目標應用的下載地址;解析模塊604,用于從所述下載地址中解析出所述目標應用的統一定位標識符URL;下載模塊606,用于依據所述URL,下載所述源碼文件。可選地,如圖7所示,所述第二獲取單元408包括:解壓模塊702和遍歷模塊704。其中,解壓模塊702,用于分別對所述源碼文件及所述原始源碼文件進行解壓;遍歷模塊704,用于遍歷解壓后的所述源碼文件及解壓后的所述原始源碼文件,對比解壓后的所述源碼文件中的每個子文件與解壓后的所述原始源碼文件的每個子文件是否相同,以獲得所述第一源碼并記錄所述第一源碼的行號。此處需要說明的是,上述解壓模塊702和遍歷模塊704對應于實施例一中的步驟S20至步驟S22,兩個模塊與對應的步驟所實現的示例和應用場景相同,但不限于上述實施例一所公開的內容。需要說明的是,上述模塊作為裝置的一部分可以運行在實施例一提供的計算機終端10中,可以通過軟件實現,也可以通過硬件實現。可選地,所述漏洞修復特征模型包含至少一個漏洞修復文件,所述漏洞修復文件 至少用于修復以下一種或幾種漏洞:結構化查詢語言SQL注入、任意源碼執行、變量覆蓋以及文件包含。由此可知,現有技術存在的不能有效識別漏洞位置和修復的漏洞參數造成的應用程序安全性較低的問題,本申請提出一種基于源碼文件的漏洞檢測方法,將源碼文件與已存儲的原始源碼對比,找出發生變動的第一源碼,進而根據漏洞修復特征模型匹配第一源碼所修復的漏洞,達到了精確分析漏洞修復位置、類型以及參數的目的,從而實現了提高應用安全性的技術效果。實施例3根據本申請實施例,還提供了一種用于實施上述方法實施例的裝置實施例,本申請上述實施例所提供的裝置可以在計算機終端上運行。圖8是根據本申請實施例的漏洞檢測裝置的結構示意圖。如圖8所示,該漏洞檢測裝置可以包括開源應用地址爬蟲引擎802、資源可用性分析引擎804、下載引擎806、文件解壓引擎808、文件變動分析引擎810、核心漏洞分析引擎812。第一部份,對源碼變動的及時監測及漏洞文件分析。針對大量的互聯網應用程序在應用發布時存在文件名稱隨機化、下載鏈接隨機化等特殊情況,開源應用地址爬蟲引擎802以定期維護各應用URL池的爬取更新,寫入數據庫以備后續使用;資源可用性分析引擎804從開源應用地址爬蟲引擎802維護的URL池進行讀取,對資源可用性進行判斷,排除資源不可用情況下對性能的影響,將可用資源進行標記寫入數據庫;在完成上述操作后,下載引擎806依據URL爬取各個應用對應的源碼文件。判斷源碼文件是否已存儲在數據庫中文件資源池中,若未存儲則新建文件、目錄,并記錄該源碼文件的Hash值;若已存儲在文件資源池中,并且已經記錄過Hash值,則判斷Hash值與數據庫中原始源碼文件的Hash值是否一致。當兩個hash值不一致時,則認定存在文件變動情況。當源碼文件的Hash值與原始源碼文件的Hash值不一致時,啟動文件解壓引擎808,對同應用的不同版本(即源碼文件及原始源碼文件)進行解壓操作。完成解壓后,文件變動分析引擎810開始工作,文件變動分析引擎810對源碼文件及原始源碼文件進行遍歷,對比每個文件的變動,記錄變動的行號、內容等。將具體的變動文件內容等寫入數據庫。備份老版本的應用,將新版本應用覆蓋老版本應用,分析池結束,等待 下一次爬行。第二部份,核心自動化漏洞識別分析、參數定位。在對比到文件差異時,啟動核心漏洞分析引擎812。通過遍歷第一源碼以及第二源碼,例如遍歷:php、c、asp、aspx、java、ruby、python等可編譯或者可解析的文件。分別將第一源碼以及第二源碼與后門特征庫進行匹配,進行可疑后門掃描識別,判斷第一源碼以及第二源碼中是否被惡意植入后門。通過difflib的SequenceMatcher庫,遍歷出所有不同的行,判斷文件是增加、刪除、修改操作。再次通過變動后的文件使用SequenceMatcher庫,對第一源碼進行遍歷。建立一個漏洞修復特征模型,漏洞修復特征模型包括:SQL注入、任意代碼執行、變量覆蓋、文件包含等各種漏洞修復文件,然后將第一源碼分析至字符串,判斷第一源碼相比于第二源碼增加的是函數、賦值等操作,記錄變更的變量等,將內容變動與漏洞修復特征模型進行匹配,精確識別第二源碼所修復的漏洞。通過以上兩個部分,可以精確識別源碼文件以及原始源碼文件是否被植入后門,分析源碼文件修復了的哪些漏洞,避免浪費大量的人工進行漏洞分析。實施例4本申請的實施例還提供了一種存儲介質。可選地,在本實施例中,上述存儲介質可以用于保存上述實施例一所提供的漏洞檢測方法所執行的程序代碼。可選地,在本實施例中,上述存儲介質可以位于計算機網絡中計算機終端群中的任意一個計算機終端中,或者位于移動終端群中的任意一個移動終端中。可選地,在本實施例中,存儲介質被設置為存儲用于執行以下步驟的程序代碼:獲取目標應用的源碼文件,其中,所述源碼文件包含所述目標應用的標識信息;查找所述標識信息是否已存儲在數據庫中,并在所述標識信息已存儲在所述數據庫的情況下,從所述數據庫中提取與所述標識信息對應的原始源碼文件;判斷所述源碼文件與所述原始源碼文件是否相同;若不相同,獲取所述源碼文件中的、與所述原始源碼文件不同的第一源碼;將所述第一源碼與預先建立的漏洞修復特征模型進行匹配,確定所述第一源碼所修復的漏洞。可選地,存儲介質還被設置為存儲用于執行以下步驟的程序代碼:若不相同,獲取所述原始源碼文件中的、與所述源碼文件不同的第二源碼;將所述第一源碼和所述第二源碼分別與預先建立的后門特征庫進行匹配,確定所述第一源碼和所述第二源碼 是否被惡意植入后門。可選地,讀取所述源碼文件中的哈希Hash值以及所述原始源碼文件中的Hash值;判斷所述源碼文件中的Hash值與所述原始源碼文件中的Hash值是否相同;若所述源碼文件中的Hash值與所述原始源碼文件中的Hash值相同,則所述源碼文件與所述原始源碼文件相同;若所述源碼文件中的Hash值與所述原始源碼文件中的Hash值不相同,則所述源碼文件與所述原始源碼文件不相同。可選地,所述獲取目標應用的源碼文件包括:爬取所述目標應用的下載地址;從所述下載地址中解析出所述目標應用的統一定位標識符URL;依據所述URL,下載所述源碼文件。可選地,分別對所述源碼文件及所述原始源碼文件進行解壓;遍歷解壓后的所述源碼文件及解壓后的所述原始源碼文件,對比解壓后的所述源碼文件中的每個子文件與解壓后的所述原始源碼文件的每個子文件是否相同,以獲得所述第一源碼并記錄所述第一源碼的行號。可選地,在本實施例中,上述存儲介質可以包括但不限于:U盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,RandomAccessMemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質。可選地,本實施例中的具體示例可以參考上述實施例1中所描述的示例,本實施例在此不再贅述。上述本申請實施例序號僅僅為了描述,不代表實施例的優劣。在本申請的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。在本申請所提供的幾個實施例中,應該理解到,所揭露的技術內容,可通過其它的方式實現。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例 方案的目的。另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。所述集成的單元如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本申請的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可為個人計算機、服務器或者網絡設備等)執行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,RandomAccessMemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序源碼的介質。以上所述僅是本申請的優選實施方式,應當指出,對于本
技術領域:
的普通技術人員來說,在不脫離本申請原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本申請的保護范圍。當前第1頁1 2 3