本屆大會以“你就是主角”為主題,為移動開發者打造一場真正的年度盛會。為讓更多的移動應用團隊有自己專屬、固定的展示交流區域,大會主辦方特別提供了MDCC應用團隊免費展位。無論是成熟的創業團隊,還是處于成長期的移動應用、移動游戲、智能硬件開發團隊,只要有成型作品,均可免費申請。
7月30日, 新聞又爆出Android新的簽名漏洞 “假 ID”。每一個Android應用程序都有自己的數字簽名,本質上來說就是一張ID卡。例如Adobe系統在Android系統上有一個特殊的簽名,所有Adobe的程序都有基于這一簽名的ID。Bluebox公司發現,當一個應用程序閃射一個Adobe ID,Android并不會與Adobe核查這是否是真實的ID。這意味著一個惡意用戶可以基于Adobe的簽名創造一個惡意軟件并植入你的系統。
這個問題并不只是Adobe系統特有,黑客可以創造一個惡意應用程序冒充谷歌錢包,然后獲得付款和財務數據。相同的問題也出現在某些設備上的管理軟件,這使得黑客可以完全控制整個系統。 “本質上來說,我們發現了一種制造虛假ID的方法,”佛利斯塔爾這樣說道?!昂芏嗪诳投寄軌騽撛旒買D卡,但問題是他們創造的是哪一種虛假ID卡?”這一缺陷會影響Android2.1以上系統,盡管最新的系統4.4或者稱KitKat已經修復了這一漏洞,因為這個系統與Adobe相關,據Bluebox表示。從2012年至2013年,大約14億新的設備裝有Android操作系統,據市場研究機構Gartner公司表示。Gartner估計今年將有11.7億個Android設備。
原則上,每個應用的簽名時只用一個證書,這個證書最終會保存在APK文件的META-INF/CERT.RSA。如果我們想做一個二次打包的“盜版“應用,可以生成一個證書鏈,包含兩個證書,根證書是該應用的官方證書,從APK中獲得,二級證書是偽造證書,真正用于對APK中的所有文件進行自簽名,這樣就既可以通過安裝時的簽名驗證,也可以在運行時欺騙系統誤以為是真的應用,從而被授權。
由此我們聯想到國內的安全現狀,二次打包猖狂,牽連應用非常多,尤其是知名移動金融應用,如支付寶,各大銀行客戶端等。同時很多安全軟件提供正版簽名驗證功能,幫助用戶鑒別盜版應用,免收欺詐。甚至一些應用自己也會做本地或遠程簽名驗證,如微信。
我們設想安全軟件做正版簽名時是否也會犯類似的錯誤?只驗證根證書或者只要匹配一個證書成功就可以了。
首先,我們構造如下的證書鏈。
然后我們利用這個證書鏈對支付寶做了重簽名,真假證書同時打包到APK中。然后使用騰訊手機管家,360手機衛士,豌豆莢進行盜版簽名驗證檢查,測試結果如下:
騰訊手機管家,豌豆莢(洗白白)能檢測,360手機衛士無法檢測,支付寶也無法檢測。
騰訊手機管家檢測出盜版支付寶
豌豆莢檢測出盜版支付寶
360未檢測出盜版支付寶
完整演示視頻地址: http://v.youku.com/v_show/id_XNzUyMjUwOTI4.html
最后,我們又做了一個實驗,只用一個假證書做成盜版支付寶,結果除了支付寶自身,其他3家都可以檢測出來。于是我們斷定支付寶沒有實現自我簽名驗證,也就是說如果用戶手機上沒有裝盜版檢測的軟件,那存在很大的可能性,用戶的支付寶賬戶被盜,財產受損。
移動支付作為越來越普及的生活習慣,我們希望安全界老大360早日解決簽名驗證的問題,不讓惡意軟件有可趁之機。同時我們也希望支付寶作為支付行業龍頭,這種基本的自我保護是必須做的,不能完全依賴于第三方軟件檢測,這也是對用戶最基本的責任。
如果大家對此類內容感興趣,我們將在后續出版的《程序員》雜志上對此漏洞進行詳細的技術解密。
本文作者為安全興趣小組“鯰魚團隊”,長期鉆研移動互聯網安全技術,曾在《程序員》6月刊發表《Hack微信,不一樣的安全視角》。