一種Java卡防火墻漏洞的檢測(cè)方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及智能卡領(lǐng)域,尤其涉及智能卡領(lǐng)域中的一種Java卡防火墻漏洞的檢測(cè)方法和裝置。
【背景技術(shù)】
[0002]Java智能卡以其多應(yīng)用的支持、良好的安全特性、面向?qū)ο蟮木幊汰h(huán)境、應(yīng)用程序動(dòng)態(tài)下載等眾多優(yōu)點(diǎn)成為網(wǎng)絡(luò)時(shí)代的主流應(yīng)用,同時(shí)也成為一大熱點(diǎn)。它不僅深化了 Java的應(yīng)用層次,同時(shí)也克服了傳統(tǒng)智能卡存在的一些缺點(diǎn),制定了一個(gè)安全多功能的平臺(tái)。
[0003]Java卡中數(shù)據(jù)保密的重要性毋庸置疑。從現(xiàn)實(shí)生活中所用的銀行卡、社會(huì)保障卡等等可以看出數(shù)據(jù)保密的重要性。但是Java卡平臺(tái)是一個(gè)多應(yīng)用的環(huán)境,多個(gè)不同的Applet能夠共存在一張單獨(dú)的卡上,所以為了保證一個(gè)Java卡應(yīng)用中的賬戶密碼等敏感信息不被其他應(yīng)用隨意訪問(wèn),需要在應(yīng)用之間設(shè)置應(yīng)用防火墻來(lái)隔離非法訪問(wèn)。
[0004]針對(duì)Java卡的一些專用攻擊技術(shù)在不斷發(fā)展,Java卡也隨之呈現(xiàn)出了安全漏洞,從而導(dǎo)致整個(gè)Java卡系統(tǒng)安全性降低。因此,對(duì)Java卡的安全性檢測(cè)也就刻不容緩。而防火墻漏洞就是Java卡的一種常見漏洞。攻擊者利用此漏洞跨防火墻非法讀取卡上的數(shù)據(jù),引起卡上私密數(shù)據(jù)的泄露。目前主要是通過(guò)一系列規(guī)范來(lái)避免Java卡防火墻漏洞,然而對(duì)于Java卡上可能出現(xiàn)的防火墻漏洞,還缺乏行之有效的檢測(cè)手段。
[0005]因此,如何改善現(xiàn)階段缺乏的有效檢測(cè)java卡防火墻漏洞的手段的現(xiàn)狀,以防范Java卡上應(yīng)用程序利用防火墻漏洞訪問(wèn)其它應(yīng)用程序或內(nèi)核對(duì)象的數(shù)據(jù)可能帶來(lái)的安全隱患,已成為了人們必須亟待解決的問(wèn)題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于解決上述技術(shù)問(wèn)題,提供一種有效檢測(cè)Java卡防火墻漏洞的方法和裝置。
[0007]為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種檢測(cè)Java卡防火墻漏洞的方法,其特征在于包括以下步驟:
通過(guò)反匯編的方式,修改Java卡的結(jié)構(gòu)或運(yùn)行流程,使卡上任意內(nèi)存都可以嘗試被訪問(wèn);
當(dāng)發(fā)現(xiàn)可以訪問(wèn)Java卡中的非法數(shù)據(jù)的話,則判定當(dāng)前卡存在防火墻漏洞;
針對(duì)卡上某對(duì)象ID,若發(fā)現(xiàn)防火墻漏洞,則繼續(xù)查找卡上可以非法訪問(wèn)數(shù)據(jù)的范圍,以確定漏洞大小。
[0008]本發(fā)明還提供了一種檢測(cè)Java卡防火墻漏洞的裝置,所述裝置包括:
卡上模塊,通過(guò)反匯編的方式修改結(jié)構(gòu)或運(yùn)行流程后,以嘗試訪問(wèn)卡上任意內(nèi)存;讀卡器模塊,用于發(fā)送請(qǐng)求,使卡上模塊可以嘗試訪問(wèn)卡上任意內(nèi)存區(qū)域,并根據(jù)卡上模塊返回的響應(yīng)判斷是否存在防火墻漏洞,并且針對(duì)卡上某對(duì)象ID,查找卡上可以非法訪問(wèn)數(shù)據(jù)的范圍,以確定漏洞大小。
[0009]根據(jù)本發(fā)明的Java卡防火墻漏洞的檢測(cè)方法和裝置,能夠解決無(wú)法有效檢測(cè)Java卡上是否存在防火墻漏洞的問(wèn)題,避免Java卡上應(yīng)用程序利用防火墻漏洞訪問(wèn)其它應(yīng)用程序或內(nèi)核對(duì)象的數(shù)據(jù)所帶來(lái)的安全隱患。
[0010]結(jié)合附圖閱讀本發(fā)明實(shí)施方式的詳細(xì)描述后,本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚。
【附圖說(shuō)明】
[0011]圖1為本發(fā)明提供的漏洞檢測(cè)方法的較佳實(shí)施例的卡端執(zhí)行流程示意圖。
[0012]圖2為本發(fā)明提供的漏洞檢測(cè)方法的較佳實(shí)施例的讀卡器端執(zhí)行流程示意圖。
[0013]圖3為本發(fā)明提供的漏洞檢測(cè)裝置的結(jié)構(gòu)示意圖。
[0014]圖4為本發(fā)明提供的漏洞檢測(cè)裝置的較佳實(shí)施例的卡端模塊生成示意圖。
【具體實(shí)施方式】
[0015]下面結(jié)合附圖詳細(xì)描述本發(fā)明的【具體實(shí)施方式】。
[0016]圖1是本發(fā)明提供的漏洞檢測(cè)方法的較佳實(shí)施例的卡端執(zhí)行流程示意圖。如圖1所示,在步驟SlOl中,Java卡接收讀卡器發(fā)來(lái)的請(qǐng)求,讀取其中的對(duì)象ID (short類型)。
[0017]在步驟S102中,初始化一個(gè)byte類型的數(shù)組。
[0018]在步驟S103中,判斷數(shù)組對(duì)象ID是否表示合法對(duì)象的ID。如果步驟S103的判斷結(jié)果是“Y”,則處理過(guò)程執(zhí)行步驟S104 ;否則,執(zhí)行步驟S105。
[0019]在步驟S104中,向讀卡器返回讀取非法數(shù)據(jù)失敗的響應(yīng)。
[0020]在步驟S105中,從請(qǐng)求中讀取數(shù)據(jù)長(zhǎng)度L。
[0021]在步驟S106中,嘗試從數(shù)組對(duì)象中讀取長(zhǎng)度為L(zhǎng)的數(shù)據(jù)。若讀出數(shù)據(jù),則執(zhí)行步驟S107 ;否則執(zhí)行步驟S104。
[0022]最后,向讀卡器返回?cái)?shù)組對(duì)象中長(zhǎng)度為L(zhǎng)的數(shù)據(jù)。
[0023]圖2是本發(fā)明提供的漏洞檢測(cè)方法的較佳實(shí)施例的讀卡器端執(zhí)行流程示意圖。如圖2所示,在步驟S201中,將當(dāng)前的對(duì)象ID設(shè)置為起始的對(duì)象ID,讀數(shù)據(jù)的長(zhǎng)度置為Ibyte0
[0024]在步驟S202中,讀卡器將當(dāng)前的對(duì)象ID和當(dāng)前的讀數(shù)據(jù)長(zhǎng)度置于請(qǐng)求的數(shù)據(jù)域中,并發(fā)送該請(qǐng)求至Java卡。
[0025]在步驟S203中,讀卡器接收從Java卡返回的響應(yīng),并判斷是否從Java卡中讀取到數(shù)據(jù)。如果步驟S203的判斷結(jié)果是“Y”,表示該Java卡存在防火墻漏洞,則處理過(guò)程進(jìn)行到步驟S204 ;否則,進(jìn)行到步驟S209。
[0026]在步驟S204中,讀數(shù)據(jù)的長(zhǎng)度增加lbyte。
[0027]在步驟S205中,讀卡器將當(dāng)前的對(duì)象ID和當(dāng)前的讀數(shù)據(jù)長(zhǎng)度置于請(qǐng)求的數(shù)據(jù)域中,并發(fā)送該請(qǐng)求至Java卡。
[0028]在步驟S206中,讀卡器接收從Java卡返回的響應(yīng),并判斷是否從Java卡中讀取到數(shù)據(jù)。如果步驟S206的判斷結(jié)果是“Y”,則處理過(guò)程進(jìn)行到步驟S207 ;否則,進(jìn)行到步驟S208o
[0029]在步驟S207中,讀數(shù)據(jù)的長(zhǎng)度增加lbyte。
[0030]在步驟S208中,記錄該對(duì)象ID能讀取的最大字節(jié)數(shù)。
[0031]在步驟S209中,判斷對(duì)象ID是否讀取完。如果步驟S209的判斷結(jié)果是“N”,則處理過(guò)程執(zhí)行步驟S210 ;否則,執(zhí)行步驟S211。
[0032]在步驟S210中,對(duì)象ID增加I,讀數(shù)據(jù)的長(zhǎng)度置為lbyte,接著執(zhí)行步驟S202。
[0033]在步驟S211中,攻擊失敗,說(shuō)明該Java卡不存在防火墻漏洞,則檢測(cè)結(jié)束。
[0034]圖3是本發(fā)明提供的漏洞檢測(cè)裝置的結(jié)構(gòu)示意圖。如圖3所示,S301代