阿里發(fā)布2015移動(dòng)安全漏洞年報(bào) |
來(lái)源:聚銘網(wǎng)絡(luò) 發(fā)布時(shí)間:2016-03-14 瀏覽次數(shù): |
信息來(lái)源:FreeBuf 第一章 2015年應(yīng)用漏洞1.1 業(yè)界公開(kāi)的應(yīng)用漏洞類型和分布2015是不平凡的一年,各界媒體對(duì)移動(dòng)應(yīng)用的漏洞關(guān)注度也越來(lái)越高,漏洞的產(chǎn)生不僅帶來(lái)用戶設(shè)備與信息的安全影響,也給企業(yè)帶來(lái)業(yè)務(wù)或聲譽(yù)上的損失。 阿里聚安全每周對(duì)國(guó)內(nèi)外50家著名安全公司、媒體、漏洞平臺(tái)的態(tài)勢(shì)進(jìn)行分析,國(guó)內(nèi)外移動(dòng)安全事件和資訊的關(guān)注依然是圍繞操作系統(tǒng)和移動(dòng)應(yīng)用的技術(shù)風(fēng)險(xiǎn)展開(kāi),其中國(guó)內(nèi)更加關(guān)注移動(dòng)應(yīng)用的漏洞風(fēng)險(xiǎn)。以下數(shù)據(jù)結(jié)論來(lái)自于阿里聚安全對(duì)業(yè)界風(fēng)險(xiǎn)態(tài)勢(shì)的統(tǒng)計(jì)。 1. 行業(yè)分布 根據(jù)公開(kāi)的漏洞數(shù)據(jù)統(tǒng)計(jì),產(chǎn)生漏洞的應(yīng)用所占行業(yè)比例與用戶設(shè)備中安裝的比例相似,應(yīng)用工具類APP所產(chǎn)生的漏洞占比最高,達(dá)54%;游戲類應(yīng)用漏洞占比最低,為2%,原因是大部分用戶手機(jī)中安裝的游戲應(yīng)用較少,且游戲類應(yīng)用更新迭代速度快、漏洞不易被深入挖掘。 圖1 2015年公開(kāi)應(yīng)用漏洞的行業(yè)分布 2. 漏洞類型 移動(dòng)應(yīng)用是連接用戶與業(yè)務(wù)的橋梁,在智能設(shè)備中與用戶直接交互,并通過(guò)通信鏈路傳輸業(yè)務(wù)請(qǐng)求到后端服務(wù)器。安全研究者從移動(dòng)應(yīng)用為入口,對(duì)應(yīng)用進(jìn)行漏洞挖掘及業(yè)務(wù)安全分析,數(shù)據(jù)顯示大部分高風(fēng)險(xiǎn)漏洞爆發(fā)在服務(wù)端環(huán)節(jié)。 在2015年公開(kāi)的漏洞數(shù)據(jù)中,71%的漏洞集中在移動(dòng)業(yè)務(wù)網(wǎng)關(guān)、服務(wù)器端,攻擊者把移動(dòng)應(yīng)用作為入口進(jìn)行分析,而漏洞產(chǎn)生及修復(fù)需要在服務(wù)器端完成?,F(xiàn)階段大量業(yè)務(wù)從傳統(tǒng)的PC端擴(kuò)展到移動(dòng)端,在服務(wù)器上運(yùn)行業(yè)務(wù)邏輯也是較為安全和低成本的實(shí)現(xiàn)方式,也印證了以上數(shù)據(jù)。但正因?yàn)闃I(yè)務(wù)邏輯是在服務(wù)端處理,如果不對(duì)作為入口的客戶端進(jìn)行強(qiáng)有效的安全校驗(yàn),客戶端很容易被黑客作為突破口,用于挖掘服務(wù)端的業(yè)務(wù)風(fēng)險(xiǎn)漏洞。阿里聚安全的安全組件提供移動(dòng)應(yīng)用訪問(wèn)網(wǎng)絡(luò)的加簽、加密功能,可以從攻擊行為上避免被黑客篡改數(shù)據(jù)包、挖掘服務(wù)端的漏洞。 移動(dòng)應(yīng)用本身引起的漏洞占總比25%,其中應(yīng)用的拒絕服務(wù)漏洞占客戶端漏洞的四分之一。從漏洞詳情來(lái)看,代碼執(zhí)行漏洞相比去年單一的Webview遠(yuǎn)程命令執(zhí)行有了更多的詮釋,如代碼中預(yù)留的指令被執(zhí)行。諸如以上的邏輯類漏洞,往往需要在特定的業(yè)務(wù)場(chǎng)景中考慮被繞過(guò)及攻擊的風(fēng)險(xiǎn)。在軟件開(kāi)發(fā)生命周期中融入安全流程,是規(guī)避此類漏洞的最佳方式。在代碼實(shí)現(xiàn)功能前,通過(guò)安全評(píng)審確保業(yè)務(wù)邏輯不會(huì)被繞過(guò)、確保用戶數(shù)據(jù)流向的準(zhǔn)確性和安全性。 圖2 2015年應(yīng)用漏洞類型分布 1.2 移動(dòng)應(yīng)用漏洞分析為分析移動(dòng)應(yīng)用各行業(yè)的漏洞情況,我們?cè)诘谌綉?yīng)用市場(chǎng)分別下載了18個(gè)行業(yè) 的Top10應(yīng)用共計(jì)180個(gè),使用阿里聚安全漏洞掃描引擎對(duì)這批樣本進(jìn)行漏洞掃描。18個(gè)行業(yè)的Top10應(yīng)用中,97%的應(yīng)用都有漏洞,總漏洞量15159個(gè),平均每個(gè)應(yīng)用有87個(gè)漏洞,且23%的Top10應(yīng)用都有高風(fēng)險(xiǎn)漏洞。 1. 18個(gè)行業(yè)Top10應(yīng)用的漏洞 Webview遠(yuǎn)程代碼執(zhí)行漏洞量占比最高,達(dá)21%,Webview遠(yuǎn)程代碼執(zhí)行漏洞引起的主要原因是調(diào)用了Webview的addJavaScriptInterface方法,該方法的安全風(fēng)險(xiǎn)只在安卓API 17及更高版本中才被Google修復(fù)。由于API 17以下的機(jī)型在市場(chǎng)上仍占20%,故很多開(kāi)發(fā)者為了兼容性還將Android應(yīng)用支持的最小版本設(shè)置在API 17以下,導(dǎo)致該漏洞量一直不降反升。 圖3行業(yè)Top10應(yīng)用的漏洞數(shù)量 行業(yè)Top10 Android應(yīng)用的15159個(gè)風(fēng)險(xiǎn)漏洞中,23%屬于高危漏洞、64%屬于中危漏洞,低危漏洞僅占13%。 圖4 Top10 Android應(yīng)用漏洞的風(fēng)險(xiǎn)分布 在所有漏洞中26%是觸及了安全紅線,觸及紅線的漏洞 容易被攻擊者利用,阿里聚安全建議開(kāi)發(fā)者盡快修復(fù)以免影響移動(dòng)業(yè)務(wù)的安全。 高危漏洞、中危漏洞、低危漏洞中,觸及紅線漏洞的占比依次為17%、16%、88%。低危漏洞中觸及紅線的漏洞占比最大,如拒絕服務(wù)漏洞,被利用后會(huì)造成應(yīng)用拒絕服務(wù),但其修復(fù)成本低,建議開(kāi)發(fā)者盡快掃描驗(yàn)證并修復(fù)。 圖5 Top10觸及安全紅線的漏洞情況 2. 重點(diǎn)行業(yè)漏洞分析 18個(gè)行業(yè)中,旅游類應(yīng)用的漏洞量最多,占所有行業(yè)總漏洞量的13%,電商、游戲、金融等與用戶財(cái)產(chǎn)息息相關(guān)的行業(yè),漏洞數(shù)量相對(duì)少一些,分別占所有行業(yè)總漏洞量的6%、5%、和4%。 金融類Top10 Android應(yīng)用雖然漏洞總量排名靠后,但其高危漏洞量占比高達(dá)34%,位居行業(yè)內(nèi)第一,值得重視。 圖6 18個(gè)行業(yè)Top10 Android應(yīng)用的漏洞量 1)電商行業(yè)Top10 Android應(yīng)用漏洞 電商類Top10應(yīng)用共有851個(gè)漏洞,平均每個(gè)應(yīng)用含85個(gè)漏洞,其中約27%是Webview遠(yuǎn)程代碼執(zhí)行高危漏洞,可導(dǎo)致惡意應(yīng)用被植入、通訊錄和短信被竊取、手機(jī)被遠(yuǎn)程控制等嚴(yán)重后果。 電商類Top10Android應(yīng)用的851個(gè)漏洞中,約27%是高危漏洞,比18個(gè)行業(yè)的高危漏洞均值高17%,且電商類應(yīng)用與用戶資金密切相關(guān),開(kāi)發(fā)者可參考阿里聚安全提供的多種方案進(jìn)行修復(fù),確保用戶利益和企業(yè)信譽(yù)不受影響。 圖7 電商類Top10應(yīng)用的漏洞類別分布 2)游戲行業(yè)Top10 Android應(yīng)用漏洞 游戲類Top10 Android應(yīng)用有788個(gè)漏洞,平均每個(gè)應(yīng)用含79個(gè)漏洞。其中29%是Webview遠(yuǎn)程代碼執(zhí)行高危漏洞。 游戲類Top10 Android應(yīng)用的788個(gè)漏洞中,約19%是高危漏洞,比18個(gè)行業(yè)的高危漏洞均值低17%,在18個(gè)APP行業(yè)中高危漏洞相對(duì)較少。游戲類應(yīng)用更新迭代頻率高,資金,用戶下載量大,存在的漏洞風(fēng)險(xiǎn)亦不容忽視。 圖8 游戲類Top10應(yīng)用的漏洞類別分布 3)金融行業(yè)Top10 Android 應(yīng)用漏洞 金融類Top10 Android 應(yīng)用有669個(gè)漏洞,平均每個(gè)含67個(gè)漏洞,其中22%是Webview遠(yuǎn)程代碼執(zhí)行高危漏洞。 金融類Top10 Android 應(yīng)用的669個(gè)漏洞中,約34%是高危漏洞,比18個(gè)行業(yè)的高危漏洞均值高48%,在18個(gè)APP行業(yè)中高危漏洞占比最高。由于金融類應(yīng)用與用戶財(cái)產(chǎn)息息相關(guān),存在的漏洞隱患給用戶財(cái)產(chǎn)帶來(lái)巨大風(fēng)險(xiǎn)。 圖9 金融類Top10 Android 應(yīng)用的漏洞類別分布 1.3 典型應(yīng)用漏洞由于Android系統(tǒng)本身的開(kāi)放性,相較2014年的Webview遠(yuǎn)程命令執(zhí)行漏洞,2015年研究者通過(guò)研究移動(dòng)應(yīng)用在系統(tǒng)中的運(yùn)行機(jī)制,發(fā)現(xiàn)了更多新的Android 應(yīng)用通用漏洞類型,這些漏洞可以通過(guò)代碼規(guī)則進(jìn)行發(fā)現(xiàn)匹配、在開(kāi)發(fā)階段進(jìn)行漏洞規(guī)避。 1. Android通用拒絕服務(wù)漏洞 2015年1月,國(guó)內(nèi)安全廠商的研究人員發(fā)現(xiàn)一個(gè)Android通用型的拒絕服務(wù)漏洞,惡意攻擊者可以利用該漏洞使應(yīng)用崩潰無(wú)法正常運(yùn)行。在漏洞公布時(shí)幾乎影響市場(chǎng)上所有的Android應(yīng)用,在漏洞公布初期,每個(gè)應(yīng)用平均有10個(gè)以上的漏洞點(diǎn)。 漏洞產(chǎn)生原因是Android API的getStringExtra等getXXXExtra類函數(shù)在獲取值時(shí),如果獲取到自定義的序列化類,就會(huì)拋出類未定義的異常,導(dǎo)致應(yīng)用崩潰。而對(duì)于該漏洞的修復(fù)也比較簡(jiǎn)單、幾乎不影響業(yè)務(wù)代碼邏輯,只需要加入try catch捕獲異常即可。 阿里聚安全漏洞掃描引擎具備動(dòng)態(tài)fuzz功能,能夠精準(zhǔn)發(fā)現(xiàn)該漏洞。 2. 端口開(kāi)放引起的遠(yuǎn)程控制風(fēng)險(xiǎn) 如今市場(chǎng)上越來(lái)越多的移動(dòng)應(yīng)用為了滿足業(yè)務(wù)需求,如進(jìn)行位置信息交換、或接收其它應(yīng)用及服務(wù)器傳輸?shù)臉I(yè)務(wù)指令,因此在應(yīng)用運(yùn)行時(shí)開(kāi)啟了可被訪問(wèn)的端口,通過(guò)該端口接收數(shù)據(jù)到本地。一旦端口訪問(wèn)控制不嚴(yán)謹(jǐn)、被攻擊者惡意利用,應(yīng)用可能接收被偽造的協(xié)議指令,預(yù)留的業(yè)務(wù)功能被進(jìn)一步惡意利用。如2015年爆發(fā)的各種SDK后門事件中,開(kāi)放端口是遠(yuǎn)程控制的重要途徑。 2015年10月國(guó)內(nèi)安全研究者發(fā)現(xiàn)的WormHole漏洞,指出百度的MoPlus SDK存在采集用戶及設(shè)備信息,以及添加聯(lián)系人、撥打電話和發(fā)送短信等敏感功能代碼,由于應(yīng)用運(yùn)行時(shí)開(kāi)啟了本地的TCP端口(40310),使得攻擊者可以通過(guò)向該端口發(fā)送請(qǐng)求來(lái)獲取敏感信息、執(zhí)行代碼中預(yù)留的敏感功能。 3. 寄生獸漏洞 “寄生獸”漏洞是一種代碼劫持漏洞,但由于該漏洞的利用條件較苛刻,因此影響面也非常有限。在滿足可劫持的網(wǎng)絡(luò)下載環(huán)境、可篡改的應(yīng)用公共存儲(chǔ)區(qū)、或文件解壓不進(jìn)行合法校驗(yàn)等條件下,可以達(dá)到劫持代碼、執(zhí)行惡意程序的目的,一旦利用成功則是高風(fēng)險(xiǎn)的漏洞。 漏洞原理是Android應(yīng)用在運(yùn)行時(shí)使用DexClassLoader動(dòng)態(tài)加載和反射調(diào)用具有某些特定功能的單獨(dú)apk或jar文件,以實(shí)現(xiàn)插件機(jī)制做到無(wú)縫升級(jí)和功能擴(kuò)展,函數(shù)DexClassLoader第二個(gè)參數(shù)為目標(biāo)odex路徑,若應(yīng)用未對(duì)odex路徑下的緩存文件做保護(hù),則可能在中間人攻擊、文件替代等環(huán)境下被執(zhí)行代碼。 通過(guò)分析惡意代碼的執(zhí)行環(huán)境和條件,阿里聚安全的漏洞掃描引擎從攻擊路徑的角度來(lái)發(fā)現(xiàn)應(yīng)用是否存在該漏洞。根據(jù)掃描結(jié)果,目前市場(chǎng)上受該漏洞影響的應(yīng)用較少。 1.4 應(yīng)用安全事件1. XcodeGhost——編譯器后門 2015年9月14日,國(guó)內(nèi)安全研究者發(fā)現(xiàn)大量知名的iOS應(yīng)用同時(shí)向某第三方服務(wù)器發(fā)送大量請(qǐng)求,數(shù)億級(jí)的用戶信息存在泄漏風(fēng)險(xiǎn)。阿里移動(dòng)安全通過(guò)分析這類iOS應(yīng)用的樣本,于9月17日緊急向開(kāi)發(fā)者發(fā)布了安全公告,將該病毒命名為XcodeGhost,公告包含樣本細(xì)節(jié)、檢查和修復(fù)措施。由于使用了非官方下載、被惡意篡改的iOS應(yīng)用編譯軟件Xcode導(dǎo)致。安全公告發(fā)布后該接收敏感信息的第三方服務(wù)器已緊急關(guān)閉,但隨后阿里移動(dòng)安全研究者發(fā)現(xiàn)仍有攻擊者通過(guò)網(wǎng)絡(luò)劫持的方式、“截胡”用戶的敏感信息,影響并未停止。 據(jù)統(tǒng)計(jì),使用該惡意Xcode開(kāi)發(fā)的iOS應(yīng)用達(dá)4300+,甚至包含了市場(chǎng)中下載量排名前十的應(yīng)用,包括但不僅限于微信、網(wǎng)易云音樂(lè)、鐵路12306等日常工具類軟件、甚至銀行應(yīng)用。隨后蘋果官方發(fā)布公告確認(rèn)了XcodeGhost的不良影響,并且在官方應(yīng)用商城AppStore中下架了所有受影響的應(yīng)用。該事件堪稱已知影響用戶數(shù)規(guī)模最大,載入移動(dòng)安全史冊(cè)。 事件根源是由于開(kāi)發(fā)者為了更便利快速地下載到iOS應(yīng)用的開(kāi)發(fā)工具Xcode,通過(guò)非官方渠道、或p2p下載工具進(jìn)行下載,這種行為使得惡意攻擊者有機(jī)可乘:往Xcode中的編譯庫(kù)中插入惡意代碼,導(dǎo)致通過(guò)其編譯的iOS應(yīng)用被種植了后門程序(XcodeGhost)。后門程序具備向攻擊者服務(wù)端上傳敏感信息、接收控制指令、執(zhí)行打開(kāi)網(wǎng)頁(yè)、發(fā)送短信、撥打電話等功能。 圖10 XcodeGhost的危害 2. SDK安全事件風(fēng)波–SDK后門 2015年由第三方SDK引起的安全事件層出不窮,引起了業(yè)界震蕩及對(duì)移動(dòng)端應(yīng)用安全的關(guān)注。 9月22日,安全研究者發(fā)現(xiàn)手游中常用的游戲圖形渲染組件Unity3D、Cocos2d-x,也被發(fā)現(xiàn)非官方下載渠道的版本包含與XcodeGhost的相類似的功能。此外,有米、多盟、艾德思奇、萬(wàn)普等SDK也被指出可采集用戶隱私信息,并遭到蘋果商城AppStore的下架,影響應(yīng)用數(shù)上千。其中部分SDK甚至同時(shí)影響Android和iOS端,具備全平臺(tái)兼容能力。有的SDK在發(fā)布到蘋果商城前,關(guān)閉了采集數(shù)據(jù)的功能 “開(kāi)關(guān)”,因此審核時(shí)躲過(guò)了蘋果商城審核員的檢查,在AppStore上架成功、用戶安裝運(yùn)行后再遠(yuǎn)程打開(kāi)“開(kāi)關(guān)”,實(shí)時(shí)采集用戶隱私數(shù)據(jù)或執(zhí)行其它業(yè)務(wù)指令——“開(kāi)關(guān)”行為也因此被蘋果商城審核員列入黑名單。 3. WormHole漏洞——“百度全家桶” 2015年11月,百度系列應(yīng)用被爆存在“WormHole”漏洞,可被利用遠(yuǎn)程執(zhí)行敏感操作:打電話、發(fā)短信、獲取用戶隱私信息等。而產(chǎn)生源頭是在于百度的Moplus SDK,百度及旗下大部分產(chǎn)品中均集成,因此被網(wǎng)友稱為“百度全家桶”。WormHole 漏洞其實(shí)是基于百度的廣告端口存在身份驗(yàn)證和權(quán)限控制缺陷而產(chǎn)生的,而此端口本來(lái)是用于廣告網(wǎng)頁(yè)、升級(jí)下載、推廣應(yīng)用的用途。但Moplus代碼中預(yù)留的各類敏感代碼(操作通訊錄、電話、短信等)使得WormHole一旦被利用則影響巨大,因?yàn)檫@些APP的用戶數(shù)量覆蓋上億。 1.5 應(yīng)用漏洞的發(fā)展趨勢(shì)1. 漏洞的關(guān)注逐漸從應(yīng)用漏洞轉(zhuǎn)向業(yè)務(wù)邏輯漏洞 Android市場(chǎng)各行業(yè)Top10應(yīng)用平均每個(gè)應(yīng)用有87個(gè)漏洞。大量應(yīng)用仍包含多種類型的漏洞,居高不下,是由于開(kāi)發(fā)者的安全意識(shí)不足:如認(rèn)為移動(dòng)端漏洞較難影響正常業(yè)務(wù)運(yùn)營(yíng),或認(rèn)為漏洞利用成本較高、需要劫持或具備一定的觸發(fā)條件。 但從業(yè)界采集的漏洞信息來(lái)看,大部分的高危漏洞卻集中在需人力研究分析的設(shè)計(jì)缺陷、認(rèn)證授權(quán)等邏輯漏洞類型上。這類漏洞一旦觸發(fā)能夠直接影響用戶數(shù)據(jù)和業(yè)務(wù)服務(wù)器的正常運(yùn)行流程,導(dǎo)致大量的資損、信息泄漏事件發(fā)生。雖然漏洞的分析成本較高,但利用效果更好,平衡攻擊成本與收益來(lái)看,未來(lái)會(huì)有更多的業(yè)務(wù)邏輯漏洞被挖掘發(fā)現(xiàn)甚至產(chǎn)生安全事件。 2. 用戶隱私信息泄漏將是業(yè)務(wù)移動(dòng)化的最大風(fēng)險(xiǎn) 阿里聚安全對(duì)國(guó)內(nèi)外市場(chǎng)中的應(yīng)用進(jìn)行漏洞掃描,發(fā)現(xiàn)國(guó)外市場(chǎng)的漏洞同樣不計(jì)其數(shù),但國(guó)外的移動(dòng)應(yīng)用業(yè)務(wù)更關(guān)注信息泄漏。從2015年國(guó)外媒體的報(bào)道中,不論是蘋果AppStore還是Google Play,都會(huì)非常在意用戶隱私數(shù)據(jù)的存儲(chǔ)傳輸問(wèn)題,但市場(chǎng)不會(huì)因?yàn)閼?yīng)用存在漏洞而直接懲罰下架,但一旦觸碰到隱私數(shù)據(jù)則難辭其咎。 國(guó)外媒體也甚為關(guān)注信息的明文存儲(chǔ)及傳輸問(wèn)題,如AFNetWorking網(wǎng)絡(luò)庫(kù)SDK,曾因未強(qiáng)校驗(yàn)服務(wù)端HTTPS證書問(wèn)題而被媒體指責(zé)。如今用戶的使用習(xí)慣已經(jīng)移動(dòng)化,信息泄漏將是移動(dòng)化的最大風(fēng)險(xiǎn),是未來(lái)長(zhǎng)久的話題。 3. 開(kāi)發(fā)者需兼顧開(kāi)發(fā)環(huán)境的潛在風(fēng)險(xiǎn) 2015年的應(yīng)用安全大事件中,開(kāi)發(fā)軟件、第三方SDK等開(kāi)發(fā)環(huán)境引起的問(wèn)題已經(jīng)使大量用戶深受其害,并引發(fā)了業(yè)界輿論。移動(dòng)應(yīng)用開(kāi)發(fā)者在關(guān)注自身應(yīng)用是否具有安全風(fēng)險(xiǎn)漏洞的同時(shí),還需要更多兼顧開(kāi)發(fā)環(huán)境的潛在風(fēng)險(xiǎn)。由于移動(dòng)應(yīng)用存在發(fā)版速度慢、修復(fù)周期長(zhǎng)的問(wèn)題,各廠商如何快刀切除和修復(fù)、動(dòng)態(tài)更新自身的安全性將是未來(lái)需要持續(xù)關(guān)注的難題。開(kāi)發(fā)者可使用阿里聚安全的加固服務(wù),來(lái)提升惡意攻擊者的分析成本、保護(hù)應(yīng)用安全。 第二章 2015年Android系統(tǒng)漏洞2.1 Android系統(tǒng)漏洞綜述2015年Android系統(tǒng)漏洞整體呈現(xiàn)爆發(fā)式增長(zhǎng)。其中,Application Framework & Libraries的漏洞總量達(dá)130個(gè),同比上漲1082%。無(wú)論是從絕對(duì)數(shù)量上還是從漏洞增長(zhǎng)率來(lái)看,都位居2009年以來(lái)的首位。同時(shí),Linux Kernel中也依然存在很多影響Android系統(tǒng)安全的提權(quán)漏洞,例如通用型提權(quán)漏洞CVE-2015-3636和很多位于設(shè)備驅(qū)動(dòng)中的提權(quán)漏洞如CVE-2015-8307/CVE-2015-8680等。 2015年Android的系統(tǒng)漏洞量漲幅迅速,主要原因是關(guān)注移動(dòng)安全的研究人員越來(lái)越多。隨著移動(dòng)安全的重要性愈發(fā)增強(qiáng),我們相信2016年Android系統(tǒng)漏洞的數(shù)量依然會(huì)保持在一個(gè)較高的水位。 圖11 Application Framework & Libraries漏洞增長(zhǎng)趨勢(shì) 在2015年Application Framework & Libraries漏洞中,占比最高的三類漏洞是代碼執(zhí)行、溢出和拒絕服務(wù)漏洞,分別占比26%、23%和20%。其中,由媒體庫(kù)引發(fā)的代碼執(zhí)行漏洞數(shù)量最多,約占全部代碼執(zhí)行漏洞的40%。而在Linux Kernel中,除了Kernel通用代碼中的漏洞外,設(shè)備驅(qū)動(dòng)依然是安全漏洞的重災(zāi)區(qū)。 圖12 Application Framework & Libraries漏洞類別占比 2.2 典型Android系統(tǒng)漏洞1. 代碼執(zhí)行漏洞 普通用戶往往認(rèn)為只要是從正規(guī)渠道下載的應(yīng)用就不會(huì)受到安全威脅。然而,經(jīng)過(guò)2015年Android系統(tǒng)安全漏洞的爆發(fā)式增長(zhǎng),這種認(rèn)知已然過(guò)時(shí)。以Stagefright漏洞為例,攻擊者只要知道攻擊對(duì)象的手機(jī)號(hào)碼,就可以在用戶無(wú)感知的狀態(tài)下通過(guò)彩信主動(dòng)發(fā)起遠(yuǎn)程攻擊。 Stagefright是Android多媒體框架中的一個(gè)核心組件,在Android 2.2版本引入,從Android 2.3起成為Android默認(rèn)的多媒體框架中的一部分。在Android 5.1前的所有版本上都存在Stagefright漏洞。Stagefright是一個(gè)非常復(fù)雜的系統(tǒng)庫(kù),支持對(duì)MPEG4/MP3等多個(gè)多媒體文件格式的解析。作為Android多媒體框架的核心組件,針對(duì)Stagefright的攻擊向量超過(guò)11種,包括瀏覽器/MMS等等。 由于Stagefright庫(kù)運(yùn)行在MediaServer進(jìn)程中,攻擊者一旦成功利用Stagefright漏洞發(fā)動(dòng)攻擊,就能夠獲得MediaServer進(jìn)程所具有的權(quán)限;進(jìn)一步的,攻擊者可以再結(jié)合其他漏洞提權(quán)到Root權(quán)限,從而徹底控制攻擊對(duì)象。事實(shí)上,從PC時(shí)代開(kāi)始,類似于多媒體文件之類的復(fù)雜文件格式解析就是安全漏洞的重災(zāi)區(qū)。從Stagefright漏洞開(kāi)始,2015年披露了一系列和多媒體文件解析相關(guān)的系統(tǒng)安全漏洞,約占全部代碼執(zhí)行漏洞的40%。 多媒體文件解析相關(guān)漏洞并不是2015年內(nèi)唯一一類高危的遠(yuǎn)程攻擊漏洞。在2015年4月,阿里安全研究人員還發(fā)現(xiàn)了一個(gè)存在于wpa_supplicant組件中的緩沖區(qū)溢出漏洞,并命名為“Wifi殺手”。在手機(jī)開(kāi)啟了WLAN直連功能時(shí),攻擊者只要在手機(jī)Wifi的覆蓋范圍之內(nèi),就有可能在用戶不知情的狀態(tài)下通過(guò)遠(yuǎn)程發(fā)送惡意代碼獲得用戶手機(jī)上的執(zhí)行權(quán)限。 Wifi殺手漏洞影響面很廣,所有在1.0到2.4版本之間且默認(rèn)配置了CONFIG_P2P選項(xiàng)的wpa_supplicant組件都受到影響。而作為用戶日常使用的一項(xiàng)重要功能,很多廠商在出廠時(shí)默認(rèn)開(kāi)啟了WLAN直連功能,這也進(jìn)一步的增加了Wifi殺手的危害程度。 2. 本地提權(quán)漏洞 從2013年的put_user漏洞,到2014年的TowelRoot所使用的通用漏洞,再到2015年的Pingpong漏洞,基本上每年都會(huì)爆出來(lái)至少一個(gè)“通殺”所有Android機(jī)型的通用型提權(quán)漏洞。 Pingpong是國(guó)內(nèi)安全研究人員所提出的一個(gè)位于Kernel之中的提權(quán)漏洞,影響了Android 4.3之后的所有的系統(tǒng)版本。事實(shí)上,存在漏洞的代碼在Android 4.3以下的版本中同樣也是存在的。但在Android 4.3之前的版本中,普通應(yīng)用是沒(méi)有權(quán)限創(chuàng)建觸發(fā)該漏洞所必需的Socket,因此得以幸免。 值得一提的是,Android系統(tǒng)的演化整體是朝著權(quán)限控制越來(lái)越嚴(yán)格前進(jìn)的,而與Pingpong漏洞相關(guān)的這一項(xiàng)權(quán)限的放開(kāi)是為數(shù)不多的“反例”。從Android 4.3版本開(kāi)始(包括到最新的Android 6.0),init.rc改變了/proc/sys/net/ipv4/ping_group_range的值,使得這一項(xiàng)Kernel配置從先前的“1 0”變成了“0 2147483647”。 有意思的是,這一改變的主要目的是為了實(shí)現(xiàn)一個(gè)不需要特權(quán)的ping程序,本質(zhì)上還是為了加強(qiáng)系統(tǒng)的權(quán)限管控,但最終反而為Pingpong漏洞的利用創(chuàng)造了條件。與之相對(duì)應(yīng)的是,同樣存在漏洞代碼的一些Linux桌面/服務(wù)器發(fā)行版和Android 4.3之前版本一樣,由于沒(méi)有放開(kāi)對(duì)應(yīng)的Socket權(quán)限而得以免受Pingpong漏洞的危害。 Pingpong漏洞是根植于Linux Kernel中的提權(quán)漏洞,其覆蓋面很廣。除此之外,設(shè)備驅(qū)動(dòng)也是近年來(lái)容易產(chǎn)生提權(quán)漏洞的一個(gè)常見(jiàn)領(lǐng)域。我們?cè)趯?duì)某廠商2015年手機(jī)內(nèi)核進(jìn)行審核的過(guò)程中也發(fā)現(xiàn)了很多的此類漏洞。這一類漏洞也是近幾年中導(dǎo)致Android系統(tǒng)被“一鍵Root”的一個(gè)重要因素。 另一方面,從2014年起,Android系統(tǒng)用戶態(tài)漏洞在大量研究人員的關(guān)注下呈現(xiàn)出爆發(fā)趨勢(shì)。以CVE-2015-1528為例,這是國(guó)內(nèi)安全研究人員發(fā)現(xiàn)并上報(bào)給Google的一個(gè)系統(tǒng)提權(quán)漏洞,攻擊者可以通過(guò)這個(gè)漏洞獲得System權(quán)限。 具體而言,當(dāng)GraphicBuffer對(duì)象通過(guò)Binder接受特定的跨進(jìn)程指令時(shí),沒(méi)有對(duì)指令的有效性進(jìn)行校驗(yàn),從而導(dǎo)致在進(jìn)行堆分配時(shí)存在整數(shù)溢出漏洞。此后,在對(duì)這一塊內(nèi)存區(qū)域進(jìn)行操作時(shí),就會(huì)導(dǎo)致堆內(nèi)存遭到破壞。受限于Android系統(tǒng)的權(quán)限控制,需要反復(fù)利用這個(gè)漏洞,經(jīng)過(guò)三個(gè)步驟才能最終提權(quán)到System權(quán)限,如下圖所示。 圖13 提權(quán)到System權(quán)限的流程 該漏洞并不是Android系統(tǒng)上第一個(gè)由于未檢測(cè)Binder傳遞過(guò)來(lái)的命令參數(shù)而產(chǎn)生的漏洞,在2014年也曾披露出和Binder相關(guān)的漏洞。由于受到用戶態(tài)漏洞緩解技術(shù)的影響,這些漏洞的利用往往更為復(fù)雜,需要用到ROP等利用技術(shù)。目前,惡意軟件和一鍵Root工具大多還是直接使用Kernel漏洞用以提權(quán)。但隨著Android系統(tǒng)權(quán)限的持續(xù)收窄,未來(lái)Android系統(tǒng)上將需要多個(gè)漏洞配合才能完成Root的提權(quán)工作。 2.3 Android安全生態(tài)和漏洞展望在Google公司的主導(dǎo)下,Android系統(tǒng)一直保持了快速更新的節(jié)奏。在2014年底正式推出Android 5.0之后,2015年9月又推出了Android 6.0,新的Android系統(tǒng)在權(quán)限控制和漏洞緩解技術(shù)上的應(yīng)用更加完善,這對(duì)保護(hù)終端用戶的手機(jī)安全具有積極意義。 具體的,Android從版本4.3起引入了SELinux作為對(duì)整個(gè)系統(tǒng)權(quán)限控制的重要補(bǔ)充。在Android 4.3上是Permissive模式,只是記錄違反了權(quán)限控制的日志,并不是真正阻斷違反權(quán)限控制的操作。從Android 4.4起,SELinux改為Enforce模式,System分區(qū)去除了包含“s”bit位的本地程序,這也導(dǎo)致了在4.4版本之后的Root持久化工具被迫采用Daemon模式。在Android 5.0上,SELinux對(duì)權(quán)限的控制進(jìn)一步收緊,從而導(dǎo)致了Root持久化工具必須在系統(tǒng)啟動(dòng)后Patch SELinux Policy之后才能生效。隨著64位Android機(jī)型的逐漸普及,新版本的Android系統(tǒng)中Kernel集成了PXN特性 ,位于用戶態(tài)地址空間的代碼不能在特權(quán)模式下運(yùn)行,使得Kernel漏洞的提權(quán)難度大幅增加。 圖14 安卓系統(tǒng)版本的權(quán)限控制 但相對(duì)于蘋果iOS系統(tǒng),新的Android系統(tǒng)的普及速度緩慢,2015年國(guó)內(nèi)真正使用上Android 6.0系統(tǒng)的用戶極少。這在很大程度上與Android產(chǎn)業(yè)鏈過(guò)長(zhǎng)密切相關(guān)。在一個(gè)新的Android版本正式發(fā)布之后,還需要經(jīng)過(guò)芯片廠商和終端廠商的適配工作才能到達(dá)用戶手中。在一些客觀因素的制約下(例如研發(fā)成本限制),用戶要經(jīng)過(guò)漫長(zhǎng)的等待后才能獲得新的系統(tǒng)推送,部分機(jī)型在發(fā)布后甚至就不再進(jìn)行更新。 圖15 Android各系統(tǒng)版本的用戶量占比 這種現(xiàn)況對(duì)用戶的系統(tǒng)安全帶來(lái)了很大的負(fù)面影響。一方面,用戶不能享受到新的系統(tǒng)中更完善的安全機(jī)制;更重要的是,系統(tǒng)漏洞的延遲修復(fù)會(huì)使得用戶長(zhǎng)期暴露在危險(xiǎn)的、易受到攻擊的狀態(tài)下。 從積極的意義上來(lái)看,目前國(guó)內(nèi)外一些研發(fā)實(shí)力較強(qiáng)的廠商能夠快速響應(yīng)系統(tǒng)漏洞,及時(shí)發(fā)布更新版本。遺憾的是,考慮到我國(guó)智能手機(jī)基數(shù)巨大,依然有大量的用戶被直接暴露在危險(xiǎn)之中。 事實(shí)上,2015年Android系統(tǒng)漏洞大規(guī)模爆發(fā),無(wú)論是絕對(duì)數(shù)量還是增長(zhǎng)數(shù)量都是歷年之最,預(yù)計(jì)在2016年內(nèi)Android系統(tǒng)的漏洞數(shù)量也依然會(huì)保持在高位。造成這種現(xiàn)況的核心原因并不是Android系統(tǒng)自身變得更差,而是因?yàn)榇罅康陌踩藛T把目光放在了Android系統(tǒng)上。長(zhǎng)期來(lái)看,越來(lái)越多研究人員的關(guān)注必然會(huì)進(jìn)一步的提高系統(tǒng)的整體安全性。但在中短期內(nèi),系統(tǒng)漏洞的批量爆發(fā)加之部分用戶不能及時(shí)獲得安全更新同時(shí)也會(huì)提升整個(gè)Android生態(tài)的安全風(fēng)險(xiǎn)。 第三章 2015年iOS系統(tǒng)漏洞2015年注定是iOS安全史上不平凡的一年,除了在應(yīng)用層發(fā)生的XcodeGhost事件外,在系統(tǒng)安全方面也發(fā)生了很多令人難忘的事件。 3.1 iOS系統(tǒng)漏洞綜述2015年iOS系統(tǒng)漏洞呈現(xiàn)爆發(fā)式增長(zhǎng),全年漏洞總量達(dá)654個(gè),同比上漲128%。無(wú)論是從絕對(duì)數(shù)量上還是從漏洞增長(zhǎng)率,都位居2009年以來(lái)的首位。 2015年iOS的系統(tǒng)漏洞量上漲主要原因是關(guān)注移動(dòng)安全的研究人員越來(lái)越多,很多以前被忽略的系統(tǒng)攻擊被發(fā)現(xiàn)并從中找到了漏洞提交給Apple修復(fù)。相信2016年iOS系統(tǒng)漏洞的數(shù)量依然會(huì)保持在一個(gè)較高的水準(zhǔn)。 圖16 iOS系統(tǒng)漏洞數(shù)量趨勢(shì) iOS系統(tǒng)漏洞中,拒絕服務(wù)、代碼執(zhí)行、信息泄露的占比最高,分別為18%、17%、16%。 圖17 iOS系統(tǒng)漏洞類別占比 在2015年,除了iOS越獄相關(guān)的漏洞以外,蘋果公司操作系統(tǒng)的漏洞數(shù)量也比往年增加了很多。特別是在CVE(通用漏洞披露)的數(shù)量上超過(guò)了很多IT公司,因此很多媒體開(kāi)始批評(píng)蘋果公司系統(tǒng)的安全性。實(shí)際上,蘋果公司比其他廠商更加重視安全方面的問(wèn)題,針對(duì)安全研究人員提交的漏洞都會(huì)認(rèn)真審核修復(fù)和幫助申報(bào)CVE。 iOS用戶并不需要過(guò)度恐慌iOS的安全性問(wèn)題,只要及時(shí)升級(jí)iOS系統(tǒng)到最新版本,即能夠防御絕大多數(shù)的漏洞攻擊。另一方面,由于蘋果操作系統(tǒng)的分層安全機(jī)制,能直接對(duì)用戶安全構(gòu)成威脅的漏洞就更少了。 3.2 典型iOS系統(tǒng)漏洞目前iOS系統(tǒng)漏洞主要應(yīng)用于越獄,然而由于蘋果操作系統(tǒng)的安全機(jī)制,完成Untethered Jailbreak(完美越獄)需要多個(gè)漏洞的配合,典型的越獄漏洞組合利用流程是:沙箱逃逸完成文件注入,簽名繞過(guò),最后通過(guò)利用內(nèi)核漏洞完成內(nèi)核代碼修改徹底關(guān)閉iOS的安全機(jī)制。 1. 文件注入漏洞 在越獄前,需要通過(guò)文件注入漏洞,把目標(biāo)文件加載到iPhone設(shè)備上。DDI(DeveloperDiskImage race condition,by comex),被廣泛應(yīng)用于近幾次完美越獄當(dāng)中。該漏洞主要通過(guò)race condition,在檢查簽名之后、掛載之前,將正常的dmg替換掉,從而實(shí)現(xiàn)了文件的注入。在最新的iOS 9完美越獄上,使用了一種全新的文件注入方式,直接在沙箱內(nèi)通過(guò)IPC完成了對(duì)任意目錄的文件注入。 2. 沙箱任意代碼執(zhí)行漏洞 2015年,CVE-2014-4492漏洞細(xì)節(jié)披露,其服務(wù)端存在于networkd進(jìn)程,通過(guò)IPC實(shí)現(xiàn)沙箱與該進(jìn)程通訊,該服務(wù)中的通訊處理函數(shù)沒(méi)有對(duì)xpc_data對(duì)象進(jìn)行類型校驗(yàn),進(jìn)而直接調(diào)用xpc_data_get_bytes_pointer,通過(guò)傳入其他類型數(shù)據(jù)混淆,以及fake object構(gòu)造,最終可以控制PC并執(zhí)行任意代碼。 該漏洞能如此順利利用,得益于蘋果系統(tǒng)自身另外兩個(gè)弱點(diǎn):一是Heap創(chuàng)建的地址相對(duì)固定,能夠讓攻擊者通過(guò)Heap Spary將攻擊內(nèi)容創(chuàng)建在幾乎準(zhǔn)確的某個(gè)位置上;二是dyld_share_libray_cache在不同進(jìn)程的image base是一樣的,讓攻擊者無(wú)需忌諱ASLR直接構(gòu)建攻擊ROP garget。 值得一提的是,這類漏洞能在非越獄設(shè)備上直接通過(guò)沙箱App觸發(fā),給用戶帶來(lái)極大的風(fēng)險(xiǎn)。
3. 內(nèi)核漏洞 在越獄過(guò)程中內(nèi)核漏洞的主要目標(biāo)是將漏洞利用轉(zhuǎn)化成穩(wěn)定的任意讀寫能力,然后對(duì)內(nèi)核代碼進(jìn)行修改,從內(nèi)核關(guān)閉iOS的安全機(jī)制。 雖然iOS內(nèi)核有諸多安全機(jī)制:SMAP、DEP、KASLR , 但只有少數(shù)堆溢出漏洞能獨(dú)立利用并繞過(guò)這些安全機(jī)制。2015年越獄的漏洞都屬于這種類型,但是這些漏洞是需要在完成沙箱逃逸和簽名繞過(guò)后才能觸發(fā),不會(huì)直接造成安全威脅。最近數(shù)次完美越獄(iOS7.1.2~iOS9.0)的內(nèi)核漏洞都是從開(kāi)源驅(qū)動(dòng)模塊IOHIDFamily中找到的。 用于iOS8.1.2越獄的CVE-2014-4487漏洞,存在于IOHIDFamily- IOHIDLibUserClient中,是典型的堆溢出漏洞,漏洞模型是:能用IOMalloc創(chuàng)建任意Size的Buffer,并釋放到任意Size的kalloc.zone(iOS內(nèi)核堆內(nèi)存快速分配機(jī)制)。iOS kalloc.zone freelist是LIFO,這樣釋放到比原本自身Size要大的kalloc.zone然后使用創(chuàng)建較大Size kalloc zone的OOL Mach Msg,這樣便能覆蓋到較小Size kalloc.zone原相鄰位置的元素,完成buffer overflow的轉(zhuǎn)化。在iOS8通過(guò)buffer overflow修改vm_map_copy的kdata實(shí)現(xiàn)內(nèi)核任意讀。獲取到內(nèi)核kaslr image base后,再進(jìn)一步轉(zhuǎn)化相鄰對(duì)象成IOUserClient SubClass重寫getExternalTrapForIndex虛函數(shù),進(jìn)一步轉(zhuǎn)化成任意讀寫。 用于iOS9越獄的CVE-2015-6974漏洞,存在于IOHIDFamily- IOHIDLibUserClient,典型的UAF漏洞,在釋放IOService SubClass(C++ object)后沒(méi)有將指針置空。釋放該對(duì)象后,用戶態(tài)還能通過(guò)IOHIDResourceUserClient調(diào)用該函數(shù)的虛函數(shù),而且能控制參數(shù)。然后通過(guò)Heap Feng Shui創(chuàng)建對(duì)象再釋放地址,進(jìn)一步泄露內(nèi)核基礎(chǔ)和控制vtable找到合適的gadget轉(zhuǎn)化成任意讀寫能力。 蘋果為了破壞堆溢出系列利用做了不少努力:先是屏蔽了mach_port_kobject(CVE-2014-4496) , mach_port_space_info(CVE-2015-3766),這兩個(gè)接口在利用過(guò)程中可以用于判斷page的邊界,屏蔽后會(huì)影響Heap Feng Shui的穩(wěn)定性。隨后在iOS9.0大幅修改了vm_map_copy對(duì)象,使得構(gòu)造任意size釋放和任意地址讀更加困難。此外,加入KPP機(jī)制等,總體來(lái)講內(nèi)核變得越來(lái)越安全。 3.3 iOS漏洞展望2015年,隨著iOS系統(tǒng)漏洞的持續(xù)增長(zhǎng),XcodeGhost事件的發(fā)酵,我們可以看到iOS系統(tǒng)上仍然存在著很多被忽略的攻擊面。比如在非越獄的情況下,沙箱App可以通過(guò)漏洞獲取root代碼執(zhí)行權(quán)限,竊取用戶隱私和其他第三方App數(shù)據(jù)等等。 我們可以大膽預(yù)測(cè),2016年iOS系統(tǒng)安全注定會(huì)是不平凡的一年:會(huì)有更多的iOS內(nèi)核漏洞利用及iOS 9.2和9.3的越獄發(fā)布;類似Android上的StageFright漏洞也可能在iOS系統(tǒng)上出現(xiàn),我們也可能看到更多類似“Airdrop-eaque”攻擊的再次披露,使得攻擊者在一定范圍內(nèi)在任意設(shè)備上發(fā)送和安裝惡意應(yīng)用。 但是攻防永遠(yuǎn)是相對(duì)的,在2016年蘋果全球開(kāi)發(fā)者大會(huì)上將推出新的iOS 10操作系統(tǒng),一定會(huì)帶來(lái)更新更堅(jiān)固的安全機(jī)制。安全研究者在新的一年也一定會(huì)投入更多的精力到iOS系統(tǒng)安全研究上,相信在和蘋果公司的“互動(dòng)”下,iOS系統(tǒng)的安全性也會(huì)更上一個(gè)臺(tái)階。 * 作者:阿里移動(dòng)安全(企業(yè)賬號(hào)),轉(zhuǎn)載請(qǐng)注明來(lái)自FreeBuf黑客與極客(FreeBuf.COM) |
上一篇:CNCERT互聯(lián)網(wǎng)安全威脅報(bào)告-2016年1月 下一篇:網(wǎng)絡(luò)安全信息與動(dòng)態(tài)周報(bào)-2016年第9期(點(diǎn)擊下載) |