0
本文作者: 李勤 | 2017-06-22 20:31 |
自 6 月 7 日蘋(píng)果 App Store 審核團(tuán)隊(duì)近日向廠商發(fā)出“最后通牒”,要求開(kāi)發(fā)者在 6 月 12 日之前去除軟件熱更新功能,不然有可能下架后,今日(6 月 22 日),有媒體報(bào)道,一周內(nèi)蘋(píng)果 App Store 下架了近 4 萬(wàn)款中國(guó) App 。一種流行觀點(diǎn)認(rèn)為,蘋(píng)果不是說(shuō)著玩,而是真對(duì)熱更新動(dòng)刀子了。
熱更新是一種各大手游等眾多 App 常用的更新方式,即用戶(hù)通過(guò) App Store下載App之后,打開(kāi) App 時(shí)遇到的即時(shí)更新。
2017年6月,AppStore 審核團(tuán)隊(duì)確實(shí)針對(duì) AppStore 中“熱更新”的 App 開(kāi)發(fā)者發(fā)送郵件,要求移除所有相關(guān)的代碼、框架或 SDK,并重新提交審核,否則就會(huì)在 AppStore 中下架該軟件。
究竟怎么回事?“熱更新”到底有什么安全隱患?
以下為雷鋒網(wǎng)編輯與360涅槃團(tuán)隊(duì)(Nirvan Team)安全研究員王緯問(wèn)答實(shí)錄:
王緯:早期的 AppStore 審核比較慢,開(kāi)發(fā)者遇到線上的 Bug,會(huì)因?yàn)閷徍酥芷诘膯?wèn)題造成 Bug 修復(fù)不及時(shí)。
很多公司尤其是個(gè)人開(kāi)發(fā)者追求產(chǎn)品發(fā)版的速度,造成產(chǎn)品上線前沒(méi)有經(jīng)過(guò)非常全面的測(cè)試,他們希望通過(guò)“熱更新”的方式來(lái)彌補(bǔ)產(chǎn)品上線前測(cè)試不充分的問(wèn)題。
隨著“熱更新”的使用,也有很多產(chǎn)品開(kāi)始通過(guò)“熱更新”的方式來(lái)開(kāi)發(fā)功能,這樣產(chǎn)品發(fā)版就不需要 AppStore 審核,從而達(dá)到快速發(fā)版的目的。
王緯:目前沒(méi)有發(fā)現(xiàn)黑客利用“熱更新”發(fā)起對(duì) iOS App 的攻擊。但是我們(Nirvan Team)早在 2015 年 3 月份就關(guān)注到“熱更新”可能引起安全問(wèn)題,并在國(guó)內(nèi)的一些知名互聯(lián)網(wǎng)應(yīng)用中發(fā)現(xiàn)了“熱更新”相關(guān)漏洞,可以實(shí)現(xiàn)遠(yuǎn)程的任意代碼執(zhí)行。
“熱更新”的利用方式主要是下發(fā)惡意的“熱更新”代碼。由于“熱更新”框架的不同,具體的惡意代碼可能是 Lua、JavaScript、Lisp 方言等。
大部分“熱更新”框架都沒(méi)有實(shí)現(xiàn)沙盒,因此惡意代碼幾乎可以完全控制 App,我們?cè)?jīng)為某個(gè)知名的 App 編寫(xiě)了演示性質(zhì)的惡意代碼,可以控制 App 的啟動(dòng)頁(yè)面,可以獲取用戶(hù)的登錄密碼,并傳遞到遠(yuǎn)程服務(wù)器中。
這里還需要說(shuō)明的是,利用“熱更新”做惡意攻擊,一般需要結(jié)合其他的攻擊技術(shù),比如:DNS 投毒、惡意 WiFi、首先攻陷代碼下發(fā)服務(wù)器等。
王緯:蘋(píng)果這次下架一批 App 不只是因?yàn)椤盁岣隆眴?wèn)題,還包括:山寨克隆應(yīng)用、傳播盜版音樂(lè)內(nèi)容、多年無(wú)人下載的應(yīng)用、不兼容64應(yīng)用系統(tǒng)。
我個(gè)人認(rèn)為蘋(píng)果這次處理“熱更新”,一方面是由于“熱更新”會(huì)引起一些安全問(wèn)題,主要原因是因?yàn)椤盁岣隆睍?huì)削弱蘋(píng)果對(duì) AppStore 中應(yīng)用的控制力,這應(yīng)該是蘋(píng)果更在乎的。
王緯:從 AppStore 審核的策略來(lái)看,開(kāi)發(fā)者只是把“熱更新”相關(guān)的代碼刪除了,可能無(wú)法完全滿(mǎn)足 App 的審核的要求。除了“熱更新”框架,蘋(píng)果還要求開(kāi)發(fā)者不使用可在運(yùn)行時(shí)改變程序行為的 API,包括:NSClassFromString、NSSelectorFromString、dlopen 等。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。