一種Java卡越界訪問(wèn)靜態(tài)變量漏洞的檢測(cè)方法和裝置的制造方法
【專利摘要】本發(fā)明提供了一種Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)方法和裝置。解決方案包括:構(gòu)造Java卡字節(jié)碼文件,使卡上常量池中的任意索引位置的靜態(tài)變量都可以嘗試被讀取。當(dāng)發(fā)現(xiàn)可以非法讀取靜態(tài)變量時(shí),則判定當(dāng)前Java卡存在越界訪問(wèn)靜態(tài)變量的漏洞。
【專利說(shuō)明】
一種J a V a卡越界訪問(wèn)靜態(tài)變量漏洞的檢測(cè)方法和裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及智能卡領(lǐng)域,尤其涉及智能卡領(lǐng)域中的一種Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)方法和裝置。
【背景技術(shù)】
[0002]Java智能卡是一種新型的智能卡。它基于Java虛擬機(jī)原理,應(yīng)用程序與硬件無(wú)關(guān)。它采用高級(jí)語(yǔ)言開(kāi)發(fā),應(yīng)用程序可升級(jí),有著廣泛的應(yīng)用前景。Java智能卡技術(shù)是Java技術(shù)在智能卡領(lǐng)域的擴(kuò)展,既有靈活性又具備安全性,給傳統(tǒng)的智能卡技術(shù)和應(yīng)用領(lǐng)域帶來(lái)了變革,提高了發(fā)卡商或服務(wù)提供商選擇智能卡的自主性,能動(dòng)態(tài)地調(diào)整卡的應(yīng)用程序,具有較低的開(kāi)發(fā)成本和更短的發(fā)行周期。獲得Java智能卡授權(quán)的廠商代表著世界超過(guò)90%的智能卡生產(chǎn)能力。
[0003]安全性是Java卡應(yīng)用的一個(gè)重要環(huán)節(jié),它為Java卡的真正廣泛應(yīng)用提供了前提。只有在平臺(tái)安全性的基礎(chǔ)上,充分考慮各個(gè)環(huán)節(jié)的安全,才能保證其上的應(yīng)用系統(tǒng)安全高效地運(yùn)行。這種開(kāi)放性平臺(tái)的安全性是由多方面來(lái)保證的,它的安全策略由虛擬機(jī)和運(yùn)行時(shí)環(huán)境共同實(shí)現(xiàn),并提供了應(yīng)用防火墻和事務(wù)管理等多重安全機(jī)制。
[0004]針對(duì)Java卡的一些專用攻擊技術(shù)在不斷發(fā)展,Java卡也隨之呈現(xiàn)出了安全漏洞,從而導(dǎo)致整個(gè)Java卡系統(tǒng)安全性降低。因此,對(duì)Java卡的安全性檢測(cè)也就刻不容緩。而越界訪問(wèn)靜態(tài)變量的漏洞就是Java卡的一種常見(jiàn)漏洞。攻擊者利用此漏洞非法讀取卡上的數(shù)據(jù),引起卡上私密數(shù)據(jù)的泄露。目前,主要是通過(guò)一系列規(guī)范來(lái)避免Java卡越界訪問(wèn)靜態(tài)變量的漏洞,然而對(duì)于Java卡上可能出現(xiàn)的越界訪問(wèn)靜態(tài)變量的漏洞,還缺乏行之有效的檢測(cè)手段。
[0005]因此,如何改善現(xiàn)階段缺乏有效檢測(cè)Java卡越界訪問(wèn)靜態(tài)變量的漏洞的手段的現(xiàn)狀,以防范Java卡上的應(yīng)用程序利用越界訪問(wèn)靜態(tài)變量的漏洞非法讀取數(shù)據(jù)所帶來(lái)的安全隱患,已成為了人們亟待解決的問(wèn)題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于解決上述技術(shù)問(wèn)題,提供一種有效檢測(cè)Java卡越界訪問(wèn)靜態(tài)變量的漏洞的方法和裝置。
[0007]為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種檢測(cè)Java卡越界訪問(wèn)靜態(tài)變量的漏洞的方法,其特征在于包括以下步驟:
構(gòu)造Java卡字節(jié)碼文件,使卡上常量池中任意索引位置的靜態(tài)變量都可以嘗試被讀?。?br> 當(dāng)發(fā)現(xiàn)可以非法讀取靜態(tài)變量時(shí),則判定當(dāng)前Java卡存在越界訪問(wèn)靜態(tài)變量的漏洞。
[0008]本發(fā)明還提供了一種檢測(cè)Java卡越界訪問(wèn)靜態(tài)變量的漏洞的裝置,所述裝置包括:
卡上模塊,用于嘗試訪問(wèn)卡上常量池中的任意索引位置的靜態(tài)變量; 讀卡器模塊,用于發(fā)送攻擊命令,即帶有索引值的請(qǐng)求,并根據(jù)卡上模塊返回的響應(yīng)判斷是否存在越界訪問(wèn)靜態(tài)變量的漏洞。
[0009]根據(jù)本發(fā)明的Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)方法和裝置,能夠解決無(wú)法有效檢測(cè)Java卡上是否存在越界訪問(wèn)靜態(tài)變量的漏洞的問(wèn)題,避免Java卡上應(yīng)用程序利用越界訪問(wèn)靜態(tài)變量的漏洞讀取合法地址以外的數(shù)據(jù)所帶來(lái)的安全隱患。
[0010]結(jié)合附圖閱讀本發(fā)明實(shí)施方式的詳細(xì)描述后,本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚。
【附圖說(shuō)明】
[0011]圖1為本發(fā)明提供的越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)方法的較佳實(shí)施例的卡端執(zhí)行流程示意圖。
[0012]圖2為本發(fā)明提供的越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)方法的較佳實(shí)施例的讀卡器端執(zhí)行流程示意圖。
[0013]圖3為本發(fā)明提供的越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0014]下面結(jié)合附圖詳細(xì)描述本發(fā)明的【具體實(shí)施方式】。
[0015]圖1是本發(fā)明提供的越界訪問(wèn)靜態(tài)變量的漏洞檢測(cè)方法的較佳實(shí)施例的卡端執(zhí)行流程示意圖。如圖1所示,在步驟SlOl中,定義I個(gè)short類型的靜態(tài)變量。
[0016]在步驟S102中,定義I個(gè)short類型的局部變量。
[0017]在步驟S103中,讀取步驟SlOl中定義的靜態(tài)變量的值。
[0018]在步驟S104中,將步驟S103中讀取到的靜態(tài)變量的值賦給局部變量。
[0019]在步驟S105中,返回成功響應(yīng),其中帶有局部變量的值。
[0020]在步驟S106中,修改讀取靜態(tài)變量值的指令,使其讀取常量池中其他索引位置的靜態(tài)變量值。
[0021]在步驟S107中,判斷是否讀到數(shù)據(jù),若讀到,則執(zhí)行步驟S104;若沒(méi)有讀到,則執(zhí)行步驟S108。
[0022]在步驟S108中,返回讀取非法數(shù)據(jù)失敗的響應(yīng)。
[0023]圖2是本發(fā)明提供的越界訪問(wèn)靜態(tài)變量的漏洞檢測(cè)方法的較佳實(shí)施例的讀卡器端執(zhí)行流程示意圖。如圖2所示,在步驟S201中,讀卡器將當(dāng)前的攻擊命令(包含靜態(tài)變量的索引值)置于請(qǐng)求的數(shù)據(jù)域中,并發(fā)送該請(qǐng)求至Java卡。
[0024]在步驟S202中,讀卡器接收從Java卡返回的響應(yīng),并判斷是否從Java卡中讀到數(shù)據(jù)。若讀到數(shù)據(jù),表示該Java卡存在越界訪問(wèn)靜態(tài)變量的漏洞,則進(jìn)行步驟S203;否則進(jìn)行步驟S204。
[0025]在步驟S203中,記錄攻擊成功時(shí)的靜態(tài)變量在常量池中的索引值。
[0026]在步驟S204中,判斷攻擊請(qǐng)求是否發(fā)完,若沒(méi)發(fā)完,則執(zhí)行步驟S205。否則執(zhí)行步驟S206。
[0027]在步驟S205中,讀卡器切換至下一個(gè)攻擊命令,嘗試讀取不同索引位置的靜態(tài)變量值。
[0028]在步驟S206中,攻擊失敗,Java卡中不存在越界訪問(wèn)靜態(tài)變量的漏洞,檢測(cè)結(jié)束。
[0029]圖3是本發(fā)明提供的越界訪問(wèn)靜態(tài)變量的漏洞檢測(cè)裝置的結(jié)構(gòu)示意圖。如圖3所示,S301代表讀卡器模塊,S302代表卡上模塊,S303代表讀卡器,S304代表Java卡。讀卡器模塊位于讀卡器中,卡上模塊位于Java卡中。
[0030]讀卡器模塊向卡上模塊發(fā)送攻擊請(qǐng)求,嘗試訪問(wèn)卡上常量池中任意索引位置的靜態(tài)變量,并根據(jù)卡上模塊返回的響應(yīng)判斷是否存在越界訪問(wèn)靜態(tài)變量的漏洞。
[0031]卡上模塊,在修改內(nèi)部結(jié)構(gòu)或運(yùn)行流程后,可以嘗試訪問(wèn)卡上常量池中任意索引位置的靜態(tài)變量。
[0032]以上雖然結(jié)合附圖描述了本發(fā)明的實(shí)施方式,但是本領(lǐng)域內(nèi)熟練的技術(shù)人員可以在所附權(quán)利要求的范圍內(nèi)做出各種變形或修改。
【主權(quán)項(xiàng)】
1.一種Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)方法,其特征在于,包括以下步驟: 構(gòu)造Java卡字節(jié)碼文件,使卡上常量池中的任意索引位置的靜態(tài)變量都可以嘗試被讀取; 當(dāng)發(fā)現(xiàn)可以非法讀取靜態(tài)變量時(shí),則判定當(dāng)前Java卡存在越界訪問(wèn)靜態(tài)變量的漏洞。2.根據(jù)權(quán)利要求1所述的Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)方法,其特征在于構(gòu)造Java卡字節(jié)碼文件時(shí),按以下步驟: 定義I個(gè)short類型的靜態(tài)變量和I個(gè)short類型的局部變量; 將靜態(tài)變量修改為常量池中指定索引位置的靜態(tài)變量; 嘗試讀取指定索引位置的靜態(tài)變量的值。3.根據(jù)權(quán)利要求2所述的Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)方法,其特征在于構(gòu)造Java卡字節(jié)碼文件之后,所述方法還包括以下步驟: 讀卡器將攻擊命令(包含靜態(tài)變量的索引值)置于請(qǐng)求的數(shù)據(jù)域中,并發(fā)送該請(qǐng)求至Java 卡; 讀卡器接收從Java卡返回的響應(yīng),并判斷是否可以讀取非法索引位置的靜態(tài)變量,若可以訪問(wèn),則判定攻擊成功,當(dāng)前Java卡存在越界訪問(wèn)靜態(tài)變量的漏洞;否則判斷攻擊命令是否取完,若沒(méi)有取完,重新發(fā)送新的攻擊命令(含有不同的索引值)至Java卡;若攻擊命令取完,表明攻擊失敗,該Java卡中不存在越界訪問(wèn)靜態(tài)變量的漏洞。4.一種Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)裝置,其特征在于包括: 卡上模塊,用于嘗試訪問(wèn)卡上常量池中的任意索引位置的靜態(tài)變量; 讀卡器模塊,用于發(fā)送攻擊命令,即帶有索引值的請(qǐng)求,并根據(jù)卡上模塊返回的響應(yīng)判斷是否存在越界訪問(wèn)靜態(tài)變量的漏洞。5.根據(jù)權(quán)利要求4所述的Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)裝置,其特征在于: 所述卡上模塊,還用于將定義的靜態(tài)變量修改為常量池中指定索引位置的靜態(tài)變量,然后嘗試讀取指定索引位置的靜態(tài)變量的值。6.根據(jù)權(quán)利要求5所述的Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)裝置,其特征在于: 所述讀卡器裝置,還用于嘗試依次發(fā)送不同的攻擊命令,即依次發(fā)送帶有不同索引值的請(qǐng)求,直到發(fā)現(xiàn)Java卡越界訪問(wèn)靜態(tài)變量的漏洞為止。7.根據(jù)權(quán)利要求6所述的Java卡越界訪問(wèn)靜態(tài)變量的漏洞的檢測(cè)裝置,其特征在于: 所述讀卡器裝置,還用于接收從Java卡返回的響應(yīng),并判斷是否從Java卡中讀取到非法索引位置的靜態(tài)變量,若讀到非法數(shù)據(jù),則判定攻擊成功,該Java卡存在越界訪問(wèn)靜態(tài)變量的漏洞;否則繼續(xù)判斷攻擊命令是否取完,若沒(méi)有取完,重新發(fā)送新的攻擊命令(含有不同的索引值)至Java卡;若攻擊命令取完,表明攻擊失敗,該Java卡中不存在越界訪問(wèn)靜態(tài)變量的漏洞。
【文檔編號(hào)】G06F21/56GK106096408SQ201610386159
【公開(kāi)日】2016年11月9日
【申請(qǐng)日】2016年6月3日 公開(kāi)號(hào)201610386159.0, CN 106096408 A, CN 106096408A, CN 201610386159, CN-A-106096408, CN106096408 A, CN106096408A, CN201610386159, CN201610386159.0
【發(fā)明人】熊熙, 吳震, 王敏, 饒金濤, 杜之波, 蘭天, 姚艷麗
【申請(qǐng)人】成都信息工程大學(xué), 成都芯安尤里卡信息科技有限公司, 北京中電華大電子設(shè)計(jì)有限責(zé)任公司