7月30日,新聞又爆出Android新的簽名漏洞 “假 ID”。每一個Android應(yīng)用程序都有自己的數(shù)字簽名,本質(zhì)上來說就是一張ID卡。例如Adobe系統(tǒng)在Android系統(tǒng)上有一個特殊的簽名,所有Adobe的程序都有基于這一簽名的ID。Bluebox公司發(fā)現(xiàn),當一個應(yīng)用程序閃射一個Adobe ID,Android并不會與Adobe核查這是否是真實的ID。這意味著一個惡意用戶可以基于Adobe的簽名創(chuàng)造一個惡意軟件并植入你的系統(tǒng)。
這個問題并不只是Adobe系統(tǒng)特有,黑客可以創(chuàng)造一個惡意應(yīng)用程序冒充谷歌錢包,然后獲得付款和財務(wù)數(shù)據(jù)。相同的問題也出現(xiàn)在某些設(shè)備上的管理軟件,這使得黑客可以完全控制整個系統(tǒng)。“本質(zhì)上來說,我們發(fā)現(xiàn)了一種制造虛假ID的方法,”佛利斯塔爾這樣說道。“很多黑客都能夠創(chuàng)造假ID卡,但問題是他們創(chuàng)造的是哪一種虛假ID卡?”這一缺陷會影響Android2.1以上系統(tǒng),盡管最新的系統(tǒng)4.4或者稱KitKat已經(jīng)修復(fù)了這一漏洞,因為這個系統(tǒng)與Adobe相關(guān),據(jù)Bluebox表示。從2012年至2013年,大約14億新的設(shè)備裝有Android操作系統(tǒng),據(jù)市場研究機構(gòu)Gartner公司表示。Gartner估計今年將有11.7億個Android設(shè)備。
原則上,每個應(yīng)用的簽名時只用一個證書,這個證書最終會保存在APK文件的META-INF/CERT.RSA。如果我們想做一個二次打包的“盜版“應(yīng)用,可以生成一個證書鏈,包含兩個證書,根證書是該應(yīng)用的官方證書,從APK中獲得,二級證書是偽造證書,真正用于對APK中的所有文件進行自簽名,這樣就既可以通過安裝時的簽名驗證,也可以在運行時欺騙系統(tǒng)誤以為是真的應(yīng)用,從而被授權(quán)。
由此我們聯(lián)想到國內(nèi)的安全現(xiàn)狀,二次打包猖狂,牽連應(yīng)用非常多,尤其是知名移動金融應(yīng)用,如支付寶,各大銀行客戶端等。同時很多安全軟件提供正版簽名驗證功能,幫助用戶鑒別盜版應(yīng)用,免收欺詐。甚至一些應(yīng)用自己也會做本地或遠程簽名驗證,如微信。
我們設(shè)想安全軟件做正版簽名時是否也會犯類似的錯誤?只驗證根證書或者只要匹配一個證書成功就可以了。
首先,我們構(gòu)造如下的證書鏈。
然后我們利用這個證書鏈對支付寶做了重簽名,真假證書同時打包到APK中。然后使用騰訊手機管家,360手機衛(wèi)士,豌豆莢進行盜版簽名驗證檢查,測試結(jié)果如下:
騰訊手機管家,豌豆莢(洗白白)能檢測,360手機衛(wèi)士無法檢測,支付寶也無法檢測。
騰訊手機管家檢測出盜版支付寶
豌豆莢檢測出盜版支付寶
360未檢測出盜版支付寶
完整演示視頻地址:http://v.youku.com/v_show/id_XNzUyMjUwOTI4.html
最后,我們又做了一個實驗,只用一個假證書做成盜版支付寶,結(jié)果除了支付寶自身,其他3家都可以檢測出來。于是我們斷定支付寶沒有實現(xiàn)自我簽名驗證,也就是說如果用戶手機上沒有裝盜版檢測的軟件,那存在很大的可能性,用戶的支付寶賬戶被盜,財產(chǎn)受損。
移動支付作為越來越普及的生活習(xí)慣,我們希望安全界老大360早日解決簽名驗證的問題,不讓惡意軟件有可趁之機。同時我們也希望支付寶作為支付行業(yè)龍頭,這種基本的自我保護是必須做的,不能完全依賴于第三方軟件檢測,這也是對用戶最基本的責(zé)任。