組件調用漏洞的檢測方法及裝置的制造方法
【技術領域】
[0001]本發明涉及計算機互聯網領域,具體而言,涉及一種組件調用漏洞的檢測方法及
目-Ο
【背景技術】
[0002]隨著移動互聯網的發展,移動平臺涌現出成千上萬各式各樣的應用程序app,使得人們的生活越來越依賴移動智能設備,移動終端中的應用程序內的組件之間以及應用程序之間的組件可以基于組件調用程序Intent完成相互之間的調用或者交互。
[0003]例如,在Android系統中,Intent是不同組件之間相互通訊的紐帶,實現了不同組件之間通訊的數據交互。Intent可以包括應用功能調用過程中的一次操作的動作、動作涉及數據、附加數據的描述,Android系統的應用程序會根據此Intent的描述調用對應的組件。由此可知,Intent在Android系統的組件之間起著媒體中介的作用,專門提供組件之間相互調用的相關信息,實現調用者與被調用者之間的解耦。
[0004]另外,Android系統中,為了實現各方面第三方產品的調用或者交互,可以開放很多對外的廣播接口來實現此功能。例如在Android系統中,組件是Android app的基礎,用于構建app的各類功能和服務,其中Broadcast Receiver組件(廣播接收器)用于接收并響應廣播。此處可以明確的是,Android系統提供了一套獨有的基于廣播的在組件之間傳播數據的一種機制,這些組件可位于不同的進程中,起到進程間通信的作用。這樣通過廣播機制可以實現不同移動應用的數據交互或者應用實現自我數據交互。廣播劫持是指廣播發送之后,由于沒有顯式地指定接收組件導致廣播可能逃出當前app而被其他app惡意劫持
[0005]而關于Android上的消息,組件間通過Intent來實現通信機制其松散特征導致組件通信容易存在風險。惡意程序通過注冊合法應用的Intent消息對應的組件,來接收合法應用發出的Intent消息,導致信息泄漏、惡意釣魚等劫持風險。
[0006]針對上述現有技術無法確定系統的組件調用程序存在劫持風險的問題,目前尚未提出有效的解決方案。
【發明內容】
[0007]本發明實施例提供了一種組件調用漏洞的檢測方法及裝置,以至少解決現有技術無法確定系統的組件調用程序存在劫持風險的技術問題。
[0008]根據本發明實施例的一個方面,提供了一種組件調用漏洞的檢測方法,該方法包括:獲取應用程序的源代碼文件和組件調用漏洞規則文件;按照組件調用漏洞規則文件從應用程序的源代碼文件中提取具有劫持風險的調用程序,構成調用風險列表,其中,組件調用漏洞規則文件用于保存確定調用程序具有劫持風險的特征數據;基于調用風險列表自動構造調用檢測模塊;基于調用檢測模塊檢測調用風險列表中的調用程序,獲取調用程序的安全檢測結果。
[0009]根據本發明實施例的另一方面,還提供了一種組件調用漏洞的檢測裝置,該裝置包括:獲取模塊,用于獲取應用程序的源代碼文件和組件調用漏洞規則文件;構建模塊,用于按照組件調用漏洞規則文件從應用程序的源代碼文件中提取具有劫持風險的調用程序,構成調用風險列表,其中,組件調用漏洞規則文件用于保存確定調用程序具有劫持風險的特征數據;檢測模塊,用于基于調用風險列表自動構造調用檢測模塊,并基于調用檢測模塊檢測調用風險列表中的調用程序,獲取調用程序的安全檢測結果。
[0010]在本發明實施例中,采用獲取應用程序的源代碼文件和組件調用漏洞規則文件;按照組件調用漏洞規則文件從應用程序的源代碼文件中提取具有劫持風險的調用程序,構成調用風險列表,其中,組件調用漏洞規則文件用于保存確定調用程序具有劫持風險的特征數據;基于調用風險列表自動構造調用檢測模塊;基于調用檢測模塊檢測調用風險列表中的調用程序,獲取調用程序的安全檢測結果的方式,在對應用程序的源程序代碼進行特征匹配之后,可以得到具有高風險被劫持的調用程序的文件集合,針對這些調用程序,通過構造對應的測試裝置,來實現調用程序的自動化測試方法,可以構造測試調用程序發送給相應的應用程序,通過應用程序的組件反饋的結果來確定應用程序中對于的調用程序是否安全,由此解決了現有技術無法確定系統的組件調用程序存在劫持風險的技術問題,從而可以確定當前應用程序中的調用組件或者調用程序具有高風險被劫持。
【附圖說明】
[0011]此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0012]圖1是本發明實施例的一種用于運行檢測應用程序的組件調用漏洞的方法的移動終端的硬件結構框圖;
[0013]圖2是根據本發明實施例一的檢測應用程序的組件調用漏洞的方法的流程圖;
[0014]圖3是根據本發明實施例一的廣播安全檢測方法的詳細流程圖;
[0015]圖4是根據本發明實施例一的對應用程序的壓縮安裝包進行逆向工程轉換為java源代碼的方法流程示意圖;
[0016]圖5是根據本發明實施例二的組件調用漏洞的檢測裝置的示意圖;
[0017]圖6是根據本發明實施例二的一種可選的組件調用漏洞的檢測裝置的示意圖;
[0018]圖7是根據本發明實施例二的一種可選的組件調用漏洞的檢測裝置的示意圖;
[0019]圖8是根據本發明實施例二的一種可選的組件調用漏洞的檢測裝置的示意圖;
[0020]圖9是根據本發明實施例二的一種可選的組件調用漏洞的檢測裝置的示意圖;以及
[0021]圖10是根據本發明實施例的一種移動終端的結構框圖。
【具體實施方式】
[0022]為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。
[0023]需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本發明的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
[0024]下面就對本申請涉及到的名詞概念進行說明:
[0025]Android:是一種基于Linux的自由及開放源代碼的操作系統,主要使用于移動設備、如智能手機和平板電腦,在目前的智能手機市場占有率達到80%。
[0026]逆向工程:又稱逆向技術或反向工程,指對可執行程序或應用通過解密、反匯編、反編譯等方法拆解和分析軟件或應用程序的結構、算法和代碼等。
[0027]App:本文指Android平臺上運行的應用程序。
[0028]APK:是Applicat1n Package File的縮寫,指Android系統的應用程序安裝包的文件格式。
[0029]Intent組件:An droid系統不同組件之間相互通訊的紐帶,封裝了不同組件之間通訊的條件。
[0030]隱式(implicit)調用:沒有明確定義目標組件的名稱,使得調用者不知道要調用誰,只知道執行的動作,由系統選擇組件處理這個請求。
[0031]顯式(explicit)調用:定義了目標組件的名稱,使得調用者知道要調用誰,通過組件名指定具體的被調用者。
[0032]在顯式Intent信息中,決定目標組件的唯一要素為組件名稱,因此,如果Intent中已經明確定義了目標組件的名稱,從而不需要再定義其他Intent內容。
[0033]而對于隱式Intent信息,由于沒有明確的目標組件名稱,因此,需要Android系統幫助應用程序匹配得到與Intent請求意圖最匹配的組件。
[0034]實施例1
[0035]本發明實施例,可以提供一種檢測應用程序的組件調用漏洞的方法實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟。
[0036]本申請實施例一所提供的方法實施例可以在移動終端或者類似的通信裝置中執行。以運行在移動終端上為例,圖1是本發明實施例的一種用于運行檢測應用程序的組件調用漏洞的方法的移動終端的硬件結構框圖。如圖1所示,移動終端10可以包括一個或多個(圖中僅示出一個)處理器102(處理器102可以包括但不限于微處理器MCU或可編程邏輯器件FPGA等的處理裝置)、用于存儲數據的存儲器104、以及用于通信功能的傳輸裝置106。
[0037]本領域普通技術人員可以理解,圖1所示的結構僅為示意,其并不對上述電子裝置的結構造成限定。例如,移動終端10還可包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。
[0038]存儲器104可用于存儲應用軟件的軟件程序以及模塊,如本發明實施例中的檢測應用程序的組件調用漏洞的方法所對應的程序指令/模塊以及對應的數據庫數據,處理器102通過運行存儲在存儲器104內的軟件程序以及模塊,從而執行各種功能應用以及數據處理,即實現上述的組件調用漏洞的檢測方法的處理。其中,存儲器104可包括高速隨機存儲器,還可包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態存儲器。在一些實例中,存儲器104可進一步包括相對于處理器102遠程設置的存儲器,這些遠程存儲器可以通過網絡連接至移動終端10。上述網絡的實例包括但不限于互聯網、企業內部網、局域網、移動通信網及其組合。
[0039]傳輸裝置106用于經由一個網絡接收或者發送數據。上述的網絡具體實例可包括移動終端10的通信供應商提供的無線網絡。在一個實例中,傳輸裝置106可以包括一個網絡適配器(Network Interface Controller, NIC),其可通過基站與其他網絡設備相連從而可與互聯網進行通訊。在一個實例中,傳輸裝置106為射頻(Rad1 Frequency, RF)模塊,其用于通過無線方式與互聯網進行通訊。
[0040]在上述運行環境下,本申請提供了如圖2所示的檢測應用程序的組件調用漏洞的方法。圖2是根據本發明實施例一的檢測應用程序的組件調用漏洞的方法的流程圖。<