一種網(wǎng)絡(luò)安全漏洞的檢測方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)安全漏洞的檢測方法及裝置。
【背景技術(shù)】
[0002] 隨著移動互聯(lián)網(wǎng)的迅速發(fā)展,運行于移動操作系統(tǒng)之上的應(yīng)用程序幾乎都需要與 服務(wù)器之間進行不同程度的網(wǎng)絡(luò)通信,且網(wǎng)絡(luò)通信的相關(guān)數(shù)據(jù)可能涉及到了用戶隱私,因 此,出于對用戶個人信息安全的考慮,通常會在交易支付、即時通信等相關(guān)應(yīng)用程序中使用 更為安全的超文本傳輸安全協(xié)議(Hyper Text Transfer Protocol Secure,HTTPS),來保障 用戶的隱私數(shù)據(jù)不被非法截獲。
[0003] HTTPS 是超文件傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)和安全套接層 / 傳輸層安全(Secure Sockets Layer/Transport Layer Security,SSL/TLS)的結(jié)合,其 提供加密通信及對服務(wù)器身份的鑒定,通過數(shù)字證書來判斷與應(yīng)用程序進行網(wǎng)絡(luò)通信的服 務(wù)器是否可信。然而,在實際開發(fā)過程中,由于開發(fā)者對相關(guān)系統(tǒng)接口的使用不規(guī)范,很多 時候忽略了對服務(wù)器提供的數(shù)字證書有效性的檢測,從而導(dǎo)致應(yīng)用程序中存在網(wǎng)絡(luò)安全漏 洞,引發(fā)了 HTTPS加密通信過程中用戶隱私數(shù)據(jù)的泄漏。
[0004] 目前,對于應(yīng)用程序中HTTPS安全漏洞的檢測只能通過人工審計的方式來進行, 且必須要額外建立網(wǎng)絡(luò)抓包環(huán)境,通過設(shè)置代理來監(jiān)聽網(wǎng)絡(luò)數(shù)據(jù)包的截獲情況,導(dǎo)致檢測 過程效率低下。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例的目的在于提供一種網(wǎng)絡(luò)安全漏洞的檢測方法,解決目前的網(wǎng)絡(luò)安 全漏洞檢測方法檢測效率低下的問題。
[0006] 本發(fā)明實施例是這樣實現(xiàn)的,一種網(wǎng)絡(luò)安全漏洞的檢測方法,包括:
[0007] 解析應(yīng)用程序安裝包,獲取所述應(yīng)用程序的源代碼;
[0008] 根據(jù)預(yù)存儲在漏洞代碼庫中的漏洞代碼的行數(shù),將所述應(yīng)用程序的源代碼與預(yù)存 儲的每段所述漏洞代碼進行逐一比對,所述漏洞代碼包括滿足預(yù)設(shè)漏洞規(guī)則的代碼;
[0009] 根據(jù)比對結(jié)果判斷所述應(yīng)用程序的源代碼中是否存在與任一所述漏洞代碼匹配 的代碼段;
[0010] 若所述應(yīng)用程序的源代碼中存在與任一所述漏洞代碼匹配的代碼段,則確定所述 應(yīng)用程序存在網(wǎng)絡(luò)安全漏洞。
[0011] 本發(fā)明實施例的另一目的在于提供一種網(wǎng)絡(luò)安全漏洞的檢測裝置,包括:
[0012] 獲取單元,用于解析應(yīng)用程序安裝包,獲取所述應(yīng)用程序的源代碼;
[0013] 匹配單元,用于根據(jù)預(yù)存儲在漏洞代碼庫中的漏洞代碼的行數(shù),將所述應(yīng)用程序 的源代碼與預(yù)存儲的每段所述漏洞代碼進行逐一比對,所述漏洞代碼包括滿足預(yù)設(shè)漏洞規(guī) 則的代碼;
[0014] 判斷單元,用于根據(jù)比對結(jié)果判斷所述應(yīng)用程序的源代碼中是否存在與任一所述 漏洞代碼匹配的代碼段;
[0015] 確定單元,用于若所述應(yīng)用程序的源代碼中存在與任一所述漏洞代碼匹配的代碼 段,則確定所述應(yīng)用程序存在網(wǎng)絡(luò)安全漏洞。
[0016] 在本發(fā)明實施例中,對應(yīng)用程序的安裝包進行反編譯,將由此得到的應(yīng)用程序的 源代碼與預(yù)先建立的漏洞代碼庫中的漏洞代碼進行一一比對,從而在后臺自動地完成對該 應(yīng)用程序的網(wǎng)絡(luò)安全漏洞檢測的整個檢測過程,無需再額外人工地配置檢測環(huán)境或者監(jiān)聽 檢測數(shù)據(jù),大大地提高了網(wǎng)絡(luò)安全漏洞檢測的檢測效率。
【附圖說明】
[0017] 圖1是本發(fā)明實施例提供的網(wǎng)絡(luò)安全漏洞的檢測方法的實現(xiàn)流程圖;
[0018] 圖2是本發(fā)明實施例提供的網(wǎng)絡(luò)安全漏洞的檢測方法S101的具體實現(xiàn)流程圖;
[0019] 圖3是本發(fā)明實施例提供的網(wǎng)絡(luò)安全漏洞的檢測方法S102的具體實現(xiàn)流程圖;
[0020] 圖4是本發(fā)明實施例提供的網(wǎng)絡(luò)安全漏洞的檢測方法S102的實現(xiàn)流程示意圖;
[0021] 圖5是本發(fā)明實施例提供的網(wǎng)絡(luò)安全漏洞的檢測裝置的結(jié)構(gòu)框圖;
[0022] 圖6是本發(fā)明實施例提供的網(wǎng)絡(luò)安全漏洞的檢測裝置的硬件結(jié)構(gòu)框圖。
【具體實施方式】
[0023] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對 本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
[0024] 在本發(fā)明實施例中,對應(yīng)用程序的安裝包進行反編譯,將由此得到的應(yīng)用程序的 源代碼與預(yù)先建立的漏洞代碼庫中的漏洞代碼進行一一匹配,從而在后臺自動地完成對該 應(yīng)用程序的網(wǎng)絡(luò)安全漏洞檢測的整個檢測過程,無需再額外人工地配置檢測環(huán)境或者監(jiān)聽 檢測數(shù)據(jù),大大地提高了網(wǎng)絡(luò)安全漏洞檢測的檢測效率。
[0025] 需要說明的是,接下來均以對Android系統(tǒng)之下的應(yīng)用程序進行安全漏洞檢測為 例,對本發(fā)明實施例提供的網(wǎng)絡(luò)安全漏洞的檢測方法及裝置進行闡述,容易想到的是,對基 于其他操作系統(tǒng)之下的應(yīng)用程序也可采用相同的實現(xiàn)原理來進行網(wǎng)絡(luò)安全漏洞的檢測(包 括對安裝包的反編譯、對可能存在網(wǎng)絡(luò)安全漏洞的代碼的特征歸納以及反編譯得到的源代 碼與歸納出的漏洞規(guī)則的匹配邏輯),在此不一一贅述。
[0026] 圖1示出了本發(fā)明實施例提供的網(wǎng)絡(luò)安全漏洞的檢測方法,詳述如下:
[0027] 在S101中,解析應(yīng)用程序安裝包,獲取所述應(yīng)用程序的源代碼。
[0028]在本發(fā)明實施例中,可以通過逆向工程(Reverse Engineering),也叫反向工程, 基于應(yīng)用程序軟件的安裝包,以反匯編的方式去推斷其數(shù)據(jù)結(jié)構(gòu)、體系結(jié)構(gòu)和程序設(shè)計信 息,從而獲取到該應(yīng)用程序的源代碼。對于Android系統(tǒng)的APK格式安裝包來說,通過逆向 工程對其進行解析,主要包括了如圖2所示的相關(guān)步驟:
[0029] 在S201中,解壓縮所述應(yīng)用程序的安裝包,獲取到其中的可執(zhí)行文件。
[0030] 對于Android系統(tǒng)的應(yīng)用程序安裝包來說,其通常是被打包成應(yīng)用程序包文件 (applicationpackagefile)的形式,即APK安裝包,對于以壓縮文件形式存在的APK安 裝包,需要先按照正常的解壓縮處理流程,對其進行解壓縮,以得到Android系統(tǒng)規(guī)定的安 裝包中所必須具備的安裝文件,其中,包括了應(yīng)用程序被編譯的代碼所在的可執(zhí)行文件(即classes,dex文件)。由于Android系統(tǒng)是一個基于Java的開發(fā)環(huán)境,因此,在S201中獲取 到的classes,dex文件,即是Java文件編譯后再通過dx工具打包而成的。
[0031] 在S202中,將所述可執(zhí)行文件轉(zhuǎn)換為Java歸檔文件。
[0032] 使用反編譯工具(例如deX2jar),可以將可執(zhí)行文件轉(zhuǎn)換為Java歸檔文件,其中, Java歸檔文件(JavaArchive)即.jar文件,其允許將許多文件組合成一個壓縮文件,不僅 用于壓縮和發(fā)布,而且還用于部署和封裝庫、組件和插件程序,并可像編譯器和Java虛擬 機這樣的工具直接使用。對于Android系統(tǒng)來說,上述轉(zhuǎn)換過程是將classes,dex文件轉(zhuǎn) 換為classes_dex2jar.jar文件的過程。
[0033] 在S203中,解壓縮所述Java歸檔文件,得到Java類文件的集合。
[0034] 在S204中,批量反編譯所述Java類文件的集合,得到Java源文件的集合。
[0035] 在得到Java類文件的集合之后,可以通過各種Java反編譯工具(例如windows平 臺使用的JAD工具),對Java類文件的集合進行批量反編譯,以反編譯成Java源文件的集 合,由此便實現(xiàn)了對應(yīng)用程序源代碼的獲取。
[0036] 在S102中,根據(jù)預(yù)存儲在漏洞代碼庫中的漏洞代碼的行數(shù),將所述應(yīng)用程序的源 代碼與預(yù)存儲的每段所述漏洞代碼進行逐一比對,所述漏洞代碼包括滿足預(yù)設(shè)漏洞規(guī)則的 代碼。
[0037] 在本實施例中,執(zhí)行S102之前,需要預(yù)先建立漏洞代碼庫,并在該漏洞代碼庫中 預(yù)存儲滿足預(yù)設(shè)漏洞規(guī)則的漏洞代碼。
[0038] 對于Android系統(tǒng)來說,其提供了HTTPS網(wǎng)絡(luò)加密傳輸驗證接口,用于對數(shù)字證書 及主機域名進行校驗。其中:
[0039] 對數(shù)字證書的校驗通過X509TrustManager類實現(xiàn),其核心校驗位于 checkServerTrusted接口;
[0040] 對主機域名的校驗通過setHostnameVerifier接口實現(xiàn),包括Java類庫的javax. net.ssl.HttpsURLConnection.setHostnameVerifier和apache類庫的org.apache, http.conn.ssl.SSLSocketFactory.setHostnameVerifier,且其中不同的參數(shù)選項分 別對應(yīng)不同的安全校驗級別,例如,參數(shù)選項ALL0W_ALL_H0STNAME_VERIFIER或者new AllowAllHostnameVerifier即表不無需校驗主機域名。
[0041] 通常說來,HTTPS安全漏洞多大是由于開發(fā)人員在X509TrustManager類或者 setHostnameVerifier接口實現(xiàn)不嚴(yán)格校驗所導(dǎo)致的,基于