一種Java卡越界訪問漏洞的檢測方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及智能卡領(lǐng)域,尤其涉及智能卡領(lǐng)域中的一種Java卡越界訪問漏洞的檢測方法和裝置。
【背景技術(shù)】
[0002]Java智能卡以其多應(yīng)用的支持、良好的安全特性、面向?qū)ο蟮木幊汰h(huán)境、應(yīng)用程序動態(tài)下載等眾多優(yōu)點成為網(wǎng)絡(luò)時代的主流應(yīng)用,同時也成為一大熱點。它不僅深化了 Java的應(yīng)用層次,同時也克服了傳統(tǒng)智能卡存在的一些缺點,制定了一個安全多功能的平臺。
[0003]Java卡中數(shù)據(jù)保密的重要性毋庸置疑。從現(xiàn)實生活中所用的銀行卡、社會保障卡等等可以看出數(shù)據(jù)保密的重要性。但是Java卡平臺是一個多應(yīng)用的環(huán)境,多個不同的應(yīng)用能夠共存在一張單獨的卡上,所以為了保證一個Java卡應(yīng)用中的賬戶密碼等敏感信息不被其他應(yīng)用隨意訪問,每個應(yīng)用僅能訪問其內(nèi)部的合法對象,而該應(yīng)用外的任何對象都是被禁止訪問的。
[0004]針對Java卡的一些專用攻擊技術(shù)在不斷發(fā)展,Java卡也隨之呈現(xiàn)出了安全漏洞,從而導(dǎo)致整個Java卡系統(tǒng)安全性降低。因此,對Java卡的安全性檢測也就刻不容緩,而越界訪問漏洞就是Java卡的一種常見漏洞。攻擊者利用此漏洞非法讀取卡上的數(shù)據(jù),引起卡上私密數(shù)據(jù)的泄露。目前主要是通過一系列規(guī)范來避免Java卡越界訪問漏洞,然而對于Java卡上可能出現(xiàn)的越界訪問漏洞,還缺乏行之有效的檢測手段。
[0005]因此,如何改善現(xiàn)階段缺乏有效檢測Java卡越界訪問漏洞的手段的現(xiàn)狀,以防范Java卡上的應(yīng)用程序利用越界訪問漏洞讀取對象合法地址以外的數(shù)據(jù)所帶來的安全隱患,已成為了人們必須亟待解決的問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于解決上述技術(shù)問題,提供一種有效檢測Java卡越界訪問漏洞的方法和裝置。
[0007]為了實現(xiàn)上述目的,本發(fā)明提供了一種檢測Java卡越界訪問漏洞的方法,其特征在于包括以下步驟:
通過反匯編的方式,修改Java卡的結(jié)構(gòu)或運行流程,使卡上對象的任意偏移地址都可以嘗試被訪問;
當發(fā)現(xiàn)可以訪問對象合法偏移以外的地址時,則判定當前Java卡存在越界訪問漏洞。
[0008]本發(fā)明還提供了一種檢測Java卡越界訪問漏洞的裝置,所述裝置包括:
卡上模塊,通過反匯編的方式修改該模塊結(jié)構(gòu)或運行流程后,用于訪問卡上對象的任意偏移地址;
讀卡器模塊,用于發(fā)送攻擊命令,即帶有偏移量的請求,并根據(jù)卡上模塊返回的響應(yīng)判斷是否存在越界訪問漏洞。
[0009]根據(jù)本發(fā)明的Java卡越界訪問漏洞的檢測方法和裝置,能夠解決無法有效檢測Java卡上是否存在越界訪問漏洞的問題,避免Java卡上應(yīng)用程序利用越界訪問漏洞讀取對象合法地址以外的數(shù)據(jù)所帶來的安全隱患。
[0010]結(jié)合附圖閱讀本發(fā)明實施方式的詳細描述后,本發(fā)明的其他特點和優(yōu)點將變得更加清楚。
【附圖說明】
[0011]圖1為本發(fā)明提供的越界訪問漏洞檢測方法的較佳實施例的卡端執(zhí)行流程示意圖。
[0012]圖2為本發(fā)明提供的越界訪問漏洞檢測方法的較佳實施例的讀卡器端執(zhí)行流程示意圖。
[0013]圖3為本發(fā)明提供的越界訪問漏洞檢測裝置的結(jié)構(gòu)示意圖。
[0014]圖4為本發(fā)明提供的越界訪問漏洞檢測方法的較佳實施例的卡端模塊生成示意圖。
【具體實施方式】
[0015]下面結(jié)合附圖詳細描述本發(fā)明的【具體實施方式】。
[0016]圖1是本發(fā)明提供的越界訪問漏洞檢測方法的較佳實施例的卡端執(zhí)行流程示意圖。如圖1所示,在步驟S101中,初始化兩個類(類1和類2),分別包含1個和N個(N>1)short類型的成員變量。
[0017]在步驟S102中,實例化類1和類2,分別生成對象1和對象2。
[0018]在步驟S103中,Java卡接收讀卡器發(fā)來的請求,讀取其中的攻擊命令,其中包括需讀取成員變量的序號(2彡m彡N)。
[0019]在步驟S104中,定義一個short類型的變量R,該變量的值等于對象2中的第m個成員變量(2彡m彡N)的值。
[0020]在步驟S105中,返回讀取對象2中數(shù)據(jù)成功的響應(yīng)。
[0021]在步驟S106中,將變量R的值修改為對象1的第m個成員變量的值。
[0022]在步驟S107中,判斷是否讀到數(shù)據(jù),若讀取到數(shù)據(jù),則執(zhí)行步驟S108 ;若沒有讀取到數(shù)據(jù),則執(zhí)行步驟S109。
[0023]在步驟S108中,返回讀取到非法數(shù)據(jù)成功的響應(yīng)。
[0024]在步驟S109中,返回讀取到非法數(shù)據(jù)失敗的響應(yīng)。
[0025]圖2是本發(fā)明提供的越界訪問漏洞檢測方法的較佳實施例的讀卡器端執(zhí)行流程示意圖。如圖2所示,在步驟S201中,讀卡器將當前的攻擊命令(包含對象的偏移量)置于請求的數(shù)據(jù)域中,并發(fā)送該請求至Java卡。
[0026]在步驟S202中,讀卡器接收從Java卡返回的響應(yīng),并判斷是否從Java卡中讀到數(shù)據(jù)。若讀到數(shù)據(jù),表示該Java卡存在越界訪問漏洞,則進行步驟S203 ;否則進行步驟S204。
[0027]在步驟S203中,記錄攻擊成功時的偏移量。
[0028]在步驟S204中,判斷攻擊請求是否發(fā)完,若沒發(fā)完,則執(zhí)行步驟S205。否則執(zhí)行步驟 S206。
[0029]在步驟S205中,讀卡器切換至下一個攻擊命令(擁有不同的偏移量)。
[0030]在步驟S206中,攻擊失敗,Java卡中不存在越界訪問漏洞,則檢測結(jié)束。
[0031]圖3是本發(fā)明提供的越界訪問漏洞檢測裝置的結(jié)構(gòu)示意圖。如圖3所示,S301代表讀卡器模塊,S302代表卡上模塊,S303代表讀卡器,S304代表Java卡。讀卡器模塊位于讀卡器中,卡上模塊位于Java卡中。
[0032]讀卡器模塊向卡上模塊發(fā)送攻擊請求,嘗試訪問卡上對象的任意偏移地址,并根據(jù)卡上模塊返回的響應(yīng)判斷是否存在越界訪問漏洞。
[0033]卡上模塊,通過反匯編的方式修改結(jié)構(gòu)或運行流程后,以嘗試訪問卡上對象的任意偏移地址。
[0034]圖4是本發(fā)明提供的越界訪問漏洞檢測裝置的較佳實施例的卡端模塊生成示意圖。如圖4所示,在步驟S401中,生成class文件。class文件中的模塊按步驟S101-S109的流程運行。
[0035]在步驟S402中,反編譯步驟S401中生成的class文件,生成對應(yīng)的jca匯編文件。
[0036]在步驟S403中,修改步驟S402中生成的jca文件。修改方法為:將步驟S104中的對象2修改為對象1,接著嘗試讀取對象1的第m個成員變量的值。
[0037]在步驟S404中,重新編譯步驟S403中修改后的jca文件,生成對應(yīng)的cap文件。
[0038]在步驟S405中,在卡端模塊中安裝并選擇步驟S404中生成的cap文件。
[0039]在步驟S406中,開始檢測。
[0040]以上雖然結(jié)合附圖描述了本發(fā)明的實施方式,但是本領(lǐng)域內(nèi)熟練的技術(shù)人員可以在所附權(quán)利要求的范圍內(nèi)做出各種變形或修改。
【主權(quán)項】
1.一種Java卡越界訪問漏洞的檢測方法,其特征在于,包括以下步驟: 通過反匯編的方式,修改Java卡的結(jié)構(gòu)或運行流程,使卡上對象的任意偏移地址都可以嘗試被訪問; 當發(fā)現(xiàn)可以訪問該對象合法偏移以外的地址時,則判定當前Java卡存在越界訪問漏洞。2.根據(jù)權(quán)利要求1所述的Java卡越界訪問漏洞的檢測方法,其特征在于通過反匯編的方式修改jca文件,將讀卡器請求的偏移量賦值給訪問對象,再把修改后的jca文件轉(zhuǎn)換成cap文件下發(fā)到卡上。3.根據(jù)權(quán)利要求2所述的Java卡越界訪問漏洞的檢測方法,其特征在于在修改Java卡的結(jié)構(gòu)或運行流程之前,所述方法還包括以下步驟: 實例化兩個類(其中類1包含1個short類型的成員變量,占用內(nèi)存空間較小,類2包含N (N>1)個short類型的成員變量,占用內(nèi)存空間較大),分別生成對象1和對象2 ; 定義一個short類型的變量R,該變量的值等于對象2中的第m個成員變量(2 < m < N)的值; 返回讀取數(shù)據(jù)成功的響應(yīng)。4.根據(jù)權(quán)利要求3所述的Java卡越界訪問漏洞的檢測方法,其特征在于在修改Java卡的結(jié)構(gòu)或運行流程之后,所述方法還包括以下步驟: 讀卡器將攻擊命令(包含對象的偏移量)置于請求的數(shù)據(jù)域中,并發(fā)送該請求至Java卡; 讀卡器接收從Java卡返回的響應(yīng),并判斷是否可以訪問對象合法偏移以外的地址,若可以訪問,則判定攻擊成功,當前Java卡存在越界訪問漏洞;否則判斷攻擊命令是否讀取完,若沒有讀取完,重新發(fā)送新的攻擊命令(含有不同的偏移量)至Java卡;若攻擊命令讀取完,表明攻擊失敗,該Java卡中不存在越界訪問漏洞。5.一種Java卡越界訪問漏洞的檢測裝置,其特征在于包括: 卡上模塊,通過反匯編的方式修改其結(jié)構(gòu)或運行流程后,用于嘗試訪問卡上對象的任意偏移地址; 讀卡器模塊,用于發(fā)送含有攻擊命令的請求,并根據(jù)卡上模塊返回的響應(yīng)來判斷是否存在越界訪冋漏洞。6.根據(jù)權(quán)利要求5所述的Java卡越界訪問漏洞的檢測裝置,其特征在于所述卡上模塊,還用于通過反匯編的方式修改jca文件,將讀卡器請求的偏移量賦值給訪問對象,以達到修改卡上裝置的結(jié)構(gòu)或運行流程的目的。7.根據(jù)權(quán)利要求6所述的Java卡越界訪問漏洞的檢測裝置,其特征在于: 所述讀卡器裝置,還用于嘗試依次發(fā)送不同的攻擊命令,即依次發(fā)送帶有不同偏移量的請求,直到發(fā)現(xiàn)Java卡越界訪問漏洞為止。8.根據(jù)權(quán)利要求7所述的Java卡越界訪問漏洞的檢測裝置,其特征在于: 所述讀卡器裝置,還用于接收從Java卡返回的響應(yīng),并判斷是否從Java卡中讀取到非法數(shù)據(jù),若讀到非法數(shù)據(jù),則判定攻擊成功,該Java卡存在越界訪問漏洞;否則繼續(xù)判斷攻擊命令是否讀取完,若沒有讀取完,重新發(fā)送新的攻擊命令(含有不同的偏移量)至Java卡;若攻擊命令讀取完,表明攻擊失敗,該Java卡中不存在越界訪問漏洞。
【專利摘要】本發(fā)明提供了一種Java卡越界訪問漏洞的檢測方法和裝置。解決方案包括:通過反匯編的方式,修改Java卡的結(jié)構(gòu)或運行流程,使卡上對象的任意偏移地址都可以嘗試被訪問。當發(fā)現(xiàn)可以訪問Java卡中的非法數(shù)據(jù)的話,則判定當前卡存在越界訪問漏洞。
【IPC分類】G06F21/57
【公開號】CN105303115
【申請?zhí)枴緾N201510715536
【發(fā)明人】熊熙, 吳震, 王敏, 饒金濤, 杜之波, 田衡, 蘭天, 姚艷麗
【申請人】成都信息工程大學(xué), 成都芯安尤里卡信息科技有限公司, 北京中電華大電子設(shè)計有限責任公司
【公開日】2016年2月3日
【申請日】2015年10月29日