2015移動安全漏洞年報--阿里聚安全

轉載:http://jaq.alibaba.com/community/art/show?articleid=194後端

 

2015移動安全漏洞年報

 

 

第一章 2015年應用漏洞

1.一、業界公開的應用漏洞類型和分佈

2015是不平凡的一年,各界媒體對移動應用的漏洞關注度也愈來愈高,漏洞的產生不只帶來用戶設備與信息的安全影響,也給企業帶來業務或聲譽上的損失。瀏覽器

阿里聚安全每週對國內外50家著名安全公司、媒體、漏洞平臺的態勢進行分析,國內外移動安全事件和資訊的關注依然是圍繞操做系統和移動應用的技術風險展開,其中國內更加關注移動應用的漏洞風險。如下數據結論來自於阿里聚安全對業界風險態勢的統計。緩存

1.  行業分佈安全

 

根據公開的漏洞數據統計,產生漏洞的應用所佔行業比例與用戶設備中安裝的比例類似,應用工具類所產生的漏洞佔比最高,達54%;遊戲類應用漏洞佔比最低,爲2%,緣由是大部分用戶手機中安裝的遊戲應用較少,且遊戲類應用更新迭代速度快、漏洞不易被深刻挖掘。服務器

2015移動安全漏洞年報-移動安全-阿里聚安全

圖1 2015年公開應用漏洞的行業分佈微信

2.  漏洞類型網絡

移動應用是鏈接用戶與業務的橋樑,在智能設備中與用戶直接交互,並經過通訊鏈路傳輸業務請求到後端服務器。安全研究者從移動應用爲入口,對應用進行漏洞挖掘及業務安全分析,數據顯示大部分高風險漏洞爆發在服務端環節。框架

在2015年公開的漏洞數據中,71%的漏洞集中在移動業務網關、服務器端,攻擊者把移動應用做爲入口進行分析,而漏洞產生及修復須要在服務器端完成。現階段大量業務從傳統的PC端擴展到移動端,在服務器上運行業務邏輯也是較爲安全和低成本的實現方式,也印證了以上數據。但正由於業務邏輯是在服務端處理,若是不對做爲入口的客戶端進行強有效的安全校驗,客戶端很容易被黑客做爲突破口,用於挖掘服務端的業務風險漏洞。阿里聚安全的安全組件提供移動應用訪問網絡的加簽、加密功能,能夠從攻擊行爲上避免被黑客篡改數據包、挖掘服務端的漏洞。函數

移動應用自己引發的漏洞佔總比25%,其中應用的拒絕服務漏洞佔客戶端漏洞的四分之一。從漏洞詳情來看,代碼執行漏洞相比去年單一的Webview遠程命令執行有了更多的詮釋,如代碼中預留的指令被執行。諸如以上的邏輯類漏洞,每每須要在特定的業務場景中考慮被繞過及攻擊的風險。在軟件開發生命週期中融入安全流程,是規避此類漏洞的最佳方式。在代碼實現功能前,經過安全評審確保業務邏輯不會被繞過、確保用戶數據流向的準確性和安全性。工具

2015移動安全漏洞年報-阿里聚安全-阿里聚安全

圖2 2015年應用漏洞類型分佈

1.二、移動應用漏洞分析

爲分析移動應用各行業的漏洞狀況,咱們在第三方應用市場分別下載了18個行業的Top10應用共計180個,使用阿里聚安全漏洞掃描引擎對這批樣本進行漏洞掃描。18個行業的Top10應用中,97%的應用都有漏洞,總漏洞量15159個,平均每一個應用有87個漏洞,且23%的Top10應用都有高風險漏洞。

1、18個行業Top10應用的漏洞

Webview遠程代碼執行漏洞量佔比最高,達21%,Webview遠程代碼執行漏洞引發的主要緣由是調用了Webview的addJavaScriptInterface方法,該方法的安全風險只在安卓API 17及更高版本中才被Google修復。因爲API 17如下的機型在市場上仍佔20%,故不少開發者爲了兼容性還將Android應用支持的最小版本設置在API 17如下,致使該漏洞量一直不降反升。

2015移動安全漏洞年報-漏洞報告-阿里聚安全

圖3行業Top10應用的漏洞數量

行業Top10 Android應用的15159個風險漏洞中,23%屬於高危漏洞、64%屬於中危漏洞,低危漏洞僅佔13%。

2015移動安全漏洞年報-安卓漏洞-阿里聚安全

圖4 Top10 Android應用漏洞的風險分佈

在全部漏洞中26%是觸及了安全紅線,觸及紅線的漏洞容易被攻擊者利用,阿里聚安全建議開發者儘快修復以避免影響移動

業務的安全。

高危漏洞、中危漏洞、低危漏洞中,觸及紅線漏洞的佔比依次爲17%、16%、88%。低危漏洞中觸及紅線的漏洞佔比最大,如拒絕服務漏洞,被利用後會形成應用拒絕服務,但其修復成本低,建議開發者儘快掃描驗證並修復。

2015移動安全漏洞年報-iOS漏洞-阿里聚安全

圖5 Top10觸及安全紅線的漏洞狀況

 

1.  重點行業漏洞分析

18個行業中,旅遊類應用的漏洞量最多,佔全部行業總漏洞量的13%,電商、遊戲、金融等與用戶財產息息相關的行業,漏洞數量相對少一些,分別佔全部行業總漏洞量的6%、5%、和4%。

金融類Top10 Android應用雖然漏洞總量排名靠後,但其高危漏洞量佔比高達34%,位居行業內第一,值得重視。

2015移動安全漏洞年報-APP漏洞-阿里聚安全

圖6  18個行業Top10 Android應用的漏洞量

1)  電商行業Top10 Android應用漏洞

電商類Top10應用共有851個漏洞,平均每一個應用含85個漏洞,其中約27%是Webview遠程代碼執行高危漏洞,可致使惡意應用被植入、通信錄和短信被竊取、手機被遠程控制等嚴重後果。

電商類Top10Android應用的851個漏洞中,約27%是高危漏洞,比18個行業的高危漏洞均值高17%,且電商類應用與用戶資金密切相關,開發者可參考阿里聚安全提供的多種方案進行修復,確保用戶利益和企業信譽不受影響。

2015移動安全漏洞年報-應用漏洞-阿里聚安全

圖7 電商類Top10應用的漏洞類別分佈

 

2)  遊戲行業Top10 Android應用漏洞

遊戲類Top10 Android應用有788個漏洞,平均每一個應用含79個漏洞。其中29%是Webview遠程代碼執行高危漏洞。

遊戲類Top10 Android應用的788個漏洞中,約19%是高危漏洞,比18個行業的高危漏洞均值低17%,在18個行業中高危漏洞相對較少。遊戲類應用更新迭代頻率高,資金,用戶下載量大,存在的漏洞風險亦不容忽視。

2015移動安全漏洞年報-漏洞-阿里聚安全

圖8 遊戲類Top10應用的漏洞類別分佈

 

3)  金融行業Top10 Android 應用漏洞

金融類Top10 Android 應用有669個漏洞,平均每一個含67個漏洞,其中22%是Webview遠程代碼執行高危漏洞。

金融類Top10 Android 應用的669個漏洞中,約34%是高危漏洞,比18個行業的高危漏洞均值高48%,在18個行業中高危漏洞佔比最高。因爲金融類應用與用戶財產息息相關,存在的漏洞隱患給用戶財產帶來巨大風險。

2015移動安全漏洞年報-移動安全-阿里聚安全

圖9 金融類Top10 Android 應用的漏洞類別分佈

1.三、典型應用漏洞

因爲Android系統自己的開放性,相較2014年的Webview遠程命令執行漏洞,2015年研究者經過研究移動應用在系統中的運行機制,發現了更多新的Android 應用通用漏洞類型,這些漏洞能夠經過代碼規則進行發現匹配、在開發階段進行漏洞規避。

1.  Android通用拒絕服務漏洞

2015年1月,國內安全廠商的研究人員發現一個Android通用型的拒絕服務漏洞,惡意攻擊者能夠利用該漏洞使應用崩潰沒法正常運行。在漏洞公佈時幾乎影響市場上全部的Android應用,在漏洞公佈初期,每一個應用平均有10個以上的漏洞點。

漏洞產生緣由是Android API的getStringExtra等getXXXExtra類函數在獲取值時,若是獲取到自定義的序列化類,就會拋出類未定義的異常,致使應用崩潰。而對於該漏洞的修復也比較簡單、幾乎不影響業務代碼邏輯,只須要加入try catch捕獲異常便可。

阿里聚安全漏洞掃描引擎具有動態fuzz功能,可以精準發現該漏洞。

2.  端口開放引發的遠程控制風險

現在市場上愈來愈多的移動應用爲了知足業務需求,如進行位置信息交換、或接收其它應用及服務器傳輸的業務指令,所以在應用運行時開啓了可被訪問的端口,經過該端口接收數據到本地。一旦端口訪問控制不嚴謹、被攻擊者惡意利用,應用可能接收被僞造的協議指令,預留的業務功能被進一步惡意利用。如2015年爆發的各類SDK後門事件中,開放端口是遠程控制的重要途徑。

2015年10月國內安全研究者發現的WormHole漏洞,指出百度的MoPlus SDK存在採集用戶及設備信息,以及添加聯繫人、撥打電話和發送短信等敏感功能代碼,因爲應用運行時開啓了本地的TCP端口(40310),使得攻擊者能夠經過向該端口發送請求來獲取敏感信息、執行代碼中預留的敏感功能。

3.  寄生獸漏洞

「寄生獸」漏洞是一種代碼劫持漏洞,但因爲該漏洞的利用條件較苛刻,所以影響面也很是有限。在知足可劫持的網絡下載環境、可篡改的應用公共存儲區、或文件解壓不進行合法校驗等條件下,能夠達到劫持代碼、執行惡意程序的目的,一旦利用成功則是高風險的漏洞。

漏洞原理是Android應用在運行時使用DexClassLoader動態加載和反射調用具備某些特定功能的單獨apk或jar文件,以實現插件機制作到無縫升級和功能擴展,函數DexClassLoader第二個參數爲目標odex路徑,若應用未對odex路徑下的緩存文件作保護,則可能在中間人攻擊、文件替代等環境下被執行代碼。

經過分析惡意代碼的執行環境和條件,阿里聚安全的漏洞掃描引擎從攻擊路徑的角度來發現應用是否存在該漏洞。根據掃描結果,目前市場上受該漏洞影響的應用較少。

1.四、應用安全事件

1.  XcodeGhost——編譯器後門

2015年9月14日,國內安全研究者發現大量知名的iOS應用同時向某第三方服務器發送大量請求,數億級的用戶信息存在泄漏風險。阿里移動安全經過分析這類iOS應用的樣本,於9月17日緊急向開發者發佈了安全公告,將該病毒命名爲XcodeGhost,公告包含樣本細節、檢查和修復措施。因爲使用了非官方下載、被惡意篡改的iOS應用編譯軟件Xcode致使。安全公告發布後該接收敏感信息的第三方服務器已緊急關閉,但隨後阿里移動安全研究者發現仍有攻擊者經過網絡劫持的方式、「截胡」用戶的敏感信息,影響並未中止。

據統計,使用該惡意Xcode開發的iOS應用達4300+,甚至包含了市場中下載量排名前十的應用,包括但不只限於微信、網易雲音樂、鐵路12306等平常工具類軟件、甚至銀行應用。隨後蘋果官方發佈公告確認了XcodeGhost的不良影響,而且在官方應用商城AppStore中下架了全部受影響的應用。該事件堪稱已知影響用戶數規模最大,載入移動安全史冊。

事件根源是因爲開發者爲了更便利快速地下載到iOS應用的開發工具Xcode,經過非官方渠道、或p2p下載工具進行下載,這種行爲使得惡意攻擊者有隙可乘:往Xcode中的編譯庫中插入惡意代碼,致使經過其編譯的iOS應用被種植了後門程序(XcodeGhost)。後門程序具有向攻擊者服務端上傳敏感信息、接收控制指令、執行打開網頁、發送短信、撥打電話等功能。

2015移動安全漏洞年報-阿里聚安全-阿里聚安全

圖10 XcodeGhost的危害

2.  SDK安全事件風波--SDK後門

2015年由第三方SDK引發的安全事件層出不窮,引發了業界震盪及對移動端應用安全的關注。

9月22日,安全研究者發現手遊中經常使用的遊戲圖形渲染組件Unity3D、Cocos2d-x,也被發現非官方下載渠道的版本包含與XcodeGhost的相相似的功能。此外,有米、多盟、艾德思奇、萬普等SDK也被指出可採集用戶隱私信息,並遭到蘋果商城AppStore的下架,影響應用數上千。其中部分SDK甚至同時影響Android和iOS端,具有全平臺兼容能力。有的SDK在發佈到蘋果商城前,關閉了採集數據的功能 「開關」,所以審覈時躲過了蘋果商城審覈員的檢查,在AppStore上架成功、用戶安裝運行後再遠程打開「開關」,實時採集用戶隱私數據或執行其它業務指令——「開關」行爲也所以被蘋果商城審覈員列入黑名單。

3.  WormHole漏洞——「百度全家桶」

2015年11月,百度系列應用被爆存在「WormHole」漏洞,可被利用遠程執行敏感操做:打電話、發短信、獲取用戶隱私信息等。而產生源頭是在於百度的Moplus SDK,百度及旗下大部分產品中均集成,所以被網友稱爲「百度全家桶」。WormHole 漏洞實際上是基於百度的廣告端口存在身份驗證和權限控制缺陷而產生的,而此端口原本是用於廣告網頁、升級下載、推廣應用的用途。但Moplus代碼中預留的各種敏感代碼(操做通信錄、電話、短信等)使得WormHole一旦被利用則影響巨大,由於這些的用戶數量覆蓋上億。

1.五、應用漏洞的發展趨勢

1.  漏洞的關注逐漸從應用漏洞轉向業務邏輯漏洞

Android市場各行業Top10應用平均每一個應用有87個漏洞。大量應用仍包含多種類型的漏洞,居高不下,是因爲開發者的安全意識不足:如認爲移動端漏洞較難影響正常業務運營,或認爲漏洞利用成本較高、須要劫持或具有必定的觸發條件。

但從業界採集的漏洞信息來看,大部分的高危漏洞卻集中在需人力研究分析的設計缺陷、認證受權等邏輯漏洞類型上。這類漏洞一旦觸發可以直接影響用戶數據和業務服務器的正常運行流程,致使大量的資損、信息泄漏事件發生。雖然漏洞的分析成本較高,但利用效果更好,平衡攻擊成本與收益來看,將來會有更多的業務邏輯漏洞被挖掘發現甚至產生安全事件。

2.  用戶隱私信息泄漏將是業務移動化的最大風險

阿里聚安全對國內外市場中的應用進行漏洞掃描,發現國外市場的漏洞一樣不可勝數,但國外的移動應用業務更關注信息泄漏。從2015年國外媒體的報道中,不管是蘋果AppStore仍是Google Play,都會很是在乎用戶隱私數據的存儲傳輸問題,但市場不會由於應用存在漏洞而直接懲罰下架,但一旦觸碰到隱私數據則難辭其咎。

國外媒體也甚爲關注信息的明文存儲及傳輸問題,如AFNetWorking網絡庫SDK,曾因未強校驗服務端HTTPS證書問題而被媒體指責。現在用戶的使用習慣已經移動化,信息泄漏將是移動化的最大風險,是將來長久的話題。

3.  開發者需兼顧開發環境的潛在風險

2015年的應用安全大事件中,開發軟件、第三方SDK等開發環境引發的問題已經使大量用戶深受其害,並引起了業界輿論。移動應用開發者在關注自身應用是否具備安全風險漏洞的同時,還須要更多兼顧開發環境的潛在風險。因爲移動應用存在發版速度慢、修復週期長的問題,各廠商如何快刀切除和修復、動態更新自身的安全性將是將來須要持續關注的難題。開發者可以使用阿里聚安全的加固服務,來提高惡意攻擊者的分析成本、保護應用安全。

第二章 2015年Android系統漏洞

2.一、Android系統漏洞綜述

2015年Android系統漏洞總體呈現爆發式增加。其中,Application Framework & Libraries的漏洞總量達130個,同比上漲1082%。不管是從絕對數量上仍是從漏洞增加率來看,都位居2009年以來的首位。同時,Linux Kernel中也依然存在不少影響Android系統安全的提權漏洞,例如通用型提權漏洞CVE-2015-3636和不少位於設備驅動中的提權漏洞如CVE-2015-8307/CVE-2015-8680等。

2015年Android的系統漏洞量漲幅迅速,主要緣由是關注移動安全的研究人員愈來愈多。隨着移動安全的重要性愈發加強,咱們相信2016年Android系統漏洞的數量依然會保持在一個較高的水位。

2015移動安全漏洞年報-漏洞報告-阿里聚安全

圖11 Application Framework & Libraries漏洞增加趨勢

在2015年Application Framework & Libraries漏洞中,佔比最高的三類漏洞是代碼執行、溢出和拒絕服務漏洞,分別佔比26%、23%和20%。其中,由媒體庫引起的代碼執行漏洞數量最多,約佔所有代碼執行漏洞的40%。而在Linux Kernel中,除了Kernel通用代碼中的漏洞外,設備驅動依然是安全漏洞的重災區。

2015移動安全漏洞年報-安卓漏洞-阿里聚安全

圖12 Application Framework & Libraries漏洞類別佔比。

2.二、典型Android系統漏洞

1.  代碼執行漏洞

普通用戶每每認爲只要是從正規渠道下載的應用就不會受到安全威脅。然而,通過2015年Android系統安全漏洞的爆發式增加,這種認知已然過期。以Stagefright漏洞爲例,攻擊者只要知道攻擊對象的手機號碼,就能夠在用戶無感知的狀態下經過彩信主動發起遠程攻擊。

Stagefright是Android多媒體框架中的一個核心組件,在Android 2.2版本引入,從Android 2.3起成爲Android默認的多媒體框架中的一部分。在Android 5.1前的全部版本上都存在Stagefright漏洞。Stagefright是一個很是複雜的系統庫,支持對MPEG4/MP3等多個多媒體文件格式的解析。做爲Android多媒體框架的核心組件,針對Stagefright的攻擊向量超過11種,包括瀏覽器/MMS等等。

因爲Stagefright庫運行在MediaServer進程中,攻擊者一旦成功利用Stagefright漏洞發動攻擊,就可以得到MediaServer進程所具備的權限;進一步的,攻擊者能夠再結合其餘漏洞提權到Root權限,從而完全控制攻擊對象。事實上,從PC時代開始,相似於多媒體文件之類的複雜文件格式解析就是安全漏洞的重災區。從Stagefright漏洞開始,2015年披露了一系列和多媒體文件解析相關的系統安全漏洞,約佔所有代碼執行漏洞的40%。

多媒體文件解析相關漏洞並非2015年內惟一一類高危的遠程攻擊漏洞。在2015年4月,阿里安全研究人員還發現了一個存在於wpa_supplicant組件中的緩衝區溢出漏洞,並命名爲「Wifi殺手」。在手機開啓了WLAN直連功能時,攻擊者只要在手機Wifi的覆蓋範圍以內,就有可能在用戶不知情的狀態下經過遠程發送惡意代碼得到用戶手機上的執行權限。

Wifi殺手漏洞影響面很廣,全部在1.0到2.4版本之間且默認配置了CONFIG_P2P選項的wpa_supplicant組件都受到影響。而做爲用戶平常使用的一項重要功能,不少廠商在出廠時默認開啓了WLAN直連功能,這也進一步的增長了Wifi殺手的危害程度。

2.  本地提權漏洞

從2013年的put_user漏洞,到2014年的TowelRoot所使用的通用漏洞,再到2015年的Pingpong漏洞,基本上每一年都會爆出來至少一個「通殺」全部Android機型的通用型提權漏洞。

Pingpong是國內安全研究人員所提出的一個位於Kernel之中的提權漏洞,影響了Android 4.3以後的全部的系統版本。事實上,存在漏洞的代碼在Android 4.3如下的版本中一樣也是存在的。但在Android 4.3以前的版本中,普通應用是沒有權限建立觸發該漏洞所必需的Socket,所以得以倖免。

值得一提的是,Android系統的演化總體是朝着權限控制愈來愈嚴格前進的,而與Pingpong漏洞相關的這一項權限的放開是爲數很少的「反例」。從Android 4.3版本開始(包括到最新的Android 6.0),init.rc改變了/proc/sys/net/ipv4/ping_group_range的值,使得這一項Kernel配置從先前的「1 0」變成了「0 2147483647」。

有意思的是,這一改變的主要目的是爲了實現一個不須要特權的ping程序,本質上仍是爲了增強系統的權限管控,但最終反而爲Pingpong漏洞的利用創造了條件。與之相對應的是,一樣存在漏洞代碼的一些Linux桌面服務器發行版和Android 4.3以前版本同樣,因爲沒有放開對應的Socket權限而得以避免受Pingpong漏洞的危害。

Pingpong漏洞是根植於Linux Kernel中的提權漏洞,其覆蓋面很廣。除此以外,設備驅動也是近年來容易產生提權漏洞的一個常見領域。咱們在對某廠商2015年手機內核進行審覈的過程當中也發現了不少的此類漏洞。這一類漏洞也是近幾年中致使Android系統被「一鍵Root」的一個重要因素。

另外一方面,從2014年起,Android系統用戶態漏洞在大量研究人員的關注下呈現出爆發趨勢。以CVE-2015-1528爲例,這是國內安全研究人員發現並上報給Google的一個系統提權漏洞,攻擊者能夠經過這個漏洞得到System權限。

具體而言,當GraphicBuffer對象經過Binder接受特定的跨進程指令時,沒有對指令的有效性進行校驗,從而致使在進行堆分配時存在整數溢出漏洞。此後,在對這一塊內存區域進行操做時,就會致使堆內存遭到破壞。受限於Android系統的權限控制,須要反覆利用這個漏洞,通過三個步驟才能最終提權到System權限,以下圖所示。

2015移動安全漏洞年報-iOS漏洞-阿里聚安全

圖13 提權到System權限的流程

該漏洞並非Android系統上第一個因爲未檢測Binder傳遞過來的命令參數而產生的漏洞,在2014年也曾披露出和Binder相關的漏洞。因爲受到用戶態漏洞緩解技術的影響,這些漏洞的利用每每更爲複雜,須要用到ROP等利用技術。目前,惡意軟件和一鍵Root工具大多仍是直接使用Kernel漏洞用以提權。但隨着Android系統權限的持續收窄,將來Android系統上將須要多個漏洞配合才能完成Root的提權工做。

2.3    Android安全生態和漏洞展望

在Google公司的主導下,Android系統一直保持了快速更新的節奏。在2014年末正式推出Android 5.0以後,2015年9月又推出了Android 6.0,新的Android系統在權限控制和漏洞緩解技術上的應用更加完善,這對保護終端用戶的手機安全具備積極意義。

具體的,Android從版本4.3起引入了SELinux做爲對整個系統權限控制的重要補充。在Android 4.3上是Permissive模式,只是記錄違反了權限控制的日誌,並非真正阻斷違反權限控制的操做。從Android 4.4起,SELinux改成Enforce模式,System分區去除了包含「s」bit位的本地程序,這也致使了在4.4版本以後的Root持久化工具被迫採用Daemon模式。在Android 5.0上,SELinux對權限的控制進一步收緊,從而致使了Root持久化工具必須在系統啓動後Patch SELinux Policy以後才能生效。隨着64位Android機型的逐漸普及,新版本的Android系統中Kernel集成了PXN特性[3],位於用戶態地址空間的代碼不能在特權模式下運行,使得Kernel漏洞的提權難度大幅增長。

2015移動安全漏洞年報-APP漏洞-阿里聚安全

圖14 安卓系統版本的權限控制

但相對於蘋果iOS系統,新的Android系統的普及速度緩慢,2015年國內真正使用上Android 6.0系統的用戶極少。這在很大程度上與Android產業鏈過長密切相關。在一個新的Android版本正式發佈以後,還須要通過芯片廠商和終端廠商的適配工做才能到達用戶手中。在一些客觀因素的制約下(例如研發成本限制),用戶要通過漫長的等待後才能得到新的系統推送,部分機型在發佈後甚至就再也不進行更新。

2015移動安全漏洞年報-應用漏洞-阿里聚安全

圖15 Android各系統版本的用戶量佔比

這種現況對用戶的系統安全帶來了很大的負面影響。一方面,用戶不能享受到新的系統中更完善的安全機制;更重要的是,系統漏洞的延遲修復會使得用戶長期暴露在危險的、易受到攻擊的狀態下。

從積極的意義上來看,目前國內外一些研發實力較強的廠商可以快速響應系統漏洞,及時發佈更新版本。遺憾的是,考慮到我國智能手機基數巨大,依然有大量的用戶被直接暴露在危險之中。

事實上,2015年Android系統漏洞大規模爆發,不管是絕對數量仍是增加數量都是歷年之最,預計在2016年內Android系統的漏洞數量也依然會保持在高位。形成這種現況的核心緣由並非Android系統自身變得更差,而是由於大量的安全人員把目光放在了Android系統上。長期來看,愈來愈多研究人員的關注必然會進一步的提升系統的總體安全性。但在中短時間內,系統漏洞的批量爆發加之部分用戶不能及時得到安全更新同時也會提高整個Android生態的安全風險。

第三章 2015iOS系統漏洞

 

2015年註定是iOS安全史上不平凡的一年,除了在應用層發生的XcodeGhost事件外,在系統安全方面也發生了不少使人難忘的事件。

3.一、iOS系統漏洞綜述

2015年iOS系統漏洞呈現爆發式增加,整年漏洞總量達654個,同比上漲128%。不管是從絕對數量上仍是從漏洞增加率,都位居2009年以來的首位。

2015年iOS的系統漏洞量上漲主要緣由是關注移動安全的研究人員愈來愈多,不少之前被忽略的系統攻擊被發現並從中找到了漏洞提交給Apple修復。相信2016年iOS系統漏洞的數量依然會保持在一個較高的水準。

2015移動安全漏洞年報-漏洞-阿里聚安全

圖16 iOS系統漏洞數量趨勢

iOS系統漏洞中,拒絕服務、代碼執行、信息泄露的佔比最高,分別爲18%、17%、16%。

2015移動安全漏洞年報-移動安全-阿里聚安全

圖17 iOS系統漏洞類別佔比

在2015年,除了iOS越獄相關的漏洞之外,蘋果公司操做系統的漏洞數量也比往年增長了不少。特別是在CVE(通用漏洞披露)的數量上超過了不少IT公司,所以不少媒體開始批評蘋果公司系統的安全性。實際上,蘋果公司比其餘廠商更加劇視安全方面的問題,針對安全研究人員提交的漏洞都會認真審覈修復和幫助申報CVE。 iOS用戶並不須要過分恐慌iOS的安全性問題,只要及時升級iOS系統到最新版本,即可以防護絕大多數的漏洞攻擊。另外一方面,因爲蘋果操做系統的分層安全機制,能直接對用戶安全構成威脅的漏洞就更少了。

3.二、典型iOS系統漏洞

目前iOS系統漏洞主要應用於越獄,然而因爲蘋果操做系統的安全機制,完成Untethered Jailbreak(完美越獄)須要多個漏洞的配合,典型的越獄漏洞組合利用流程是:沙箱逃逸完成文件注入,簽名繞過,最後經過利用內核漏洞完成內核代碼修改完全關閉iOS的安全機制。

1.  文件注入漏洞

在越獄前,須要經過文件注入漏洞,把目標文件加載到iPhone設備上。DDI(DeveloperDiskImage race condition,by comex),被普遍應用於近幾回完美越獄當中。該漏洞主要經過race condition,在檢查簽名以後、掛載以前,將正常的dmg替換掉,從而實現了文件的注入。在最新的iOS 9完美越獄上,使用了一種全新的文件注入方式,直接在沙箱內經過IPC完成了對任意目錄的文件注入。

2.  沙箱任意代碼執行漏洞

2015年,CVE-2014-4492漏洞細節披露,其服務端存在於networkd進程,經過IPC實現沙箱與該進程通信,該服務中的通信處理函數沒有對xpc_data對象進行類型校驗,進而直接調用xpc_data_get_bytes_pointer,經過傳入其餘類型數據混淆,以及fake object構造,最終能夠控制PC並執行任意代碼。

該漏洞能如此順利利用,得益於蘋果系統自身另外兩個弱點:一是Heap建立的地址相對固定,可以讓攻擊者經過Heap Spary將攻擊內容建立在幾乎準確的某個位置上;二是dyld_share_libray_cache在不一樣進程的image base是同樣的,讓攻擊者無需忌諱ASLR直接構建攻擊ROP garget。

值得一提的是,這類漏洞能在非越獄設備上直接經過沙箱觸發,給用戶帶來極大的風險。

3.  內核漏洞

在越獄過程當中內核漏洞的主要目標是將漏洞利用轉化成穩定的任意讀寫能力,而後對內核代碼進行修改,從內核關閉iOS的安全機制。

雖然iOS內核有諸多安全機制:SMAP、DEP、KASLR , 但只有少數堆溢出漏洞能獨立利用並繞過這些安全機制。2015年越獄的漏洞都屬於這種類型,可是這些漏洞是須要在完成沙箱逃逸和簽名繞事後才能觸發,不會直接形成安全威脅。最近數次完美越獄(iOS7.1.2~iOS9.0)的內核漏洞都是從開源驅動模塊IOHIDFamily中找到的。

用於iOS8.1.2越獄的CVE-2014-4487漏洞,存在於IOHIDFamily- IOHIDLibUserClient中,是典型的堆溢出漏洞,漏洞模型是:能用IOMalloc建立任意Size的Buffer,並釋放到任意Size的kalloc.zone(iOS內核堆內存快速分配機制)。iOS kalloc.zone freelist是LIFO,這樣釋放到比本來自身Size要大的kalloc.zone而後使用建立較大Size kalloc zone的OOL Mach Msg,這樣便能覆蓋到較小Size kalloc.zone原相鄰位置的元素,完成buffer overflow的轉化。在iOS8經過buffer overflow修改vm_map_copy的kdata實現內核任意讀。獲取到內核kaslr image base後,再進一步轉化相鄰對象成IOUserClient SubClass重寫getExternalTrapForIndex虛函數,進一步轉化成任意讀寫。

用於iOS9越獄的CVE-2015-6974漏洞,存在於IOHIDFamily- IOHIDLibUserClient,典型的UAF漏洞,在釋放IOService SubClass(C++ object)後沒有將指針置空。釋放該對象後,用戶態還能經過IOHIDResourceUserClient調用該函數的虛函數,並且能控制參數。而後經過Heap Feng Shui建立對象再釋放地址,進一步泄露內核基礎和控制vtable找到合適的gadget轉化成任意讀寫能力。

蘋果爲了破壞堆溢出系列利用作了很多努力:先是屏蔽了mach_port_kobject(CVE-2014-4496) , mach_port_space_info(CVE-2015-3766),這兩個接口在利用過程當中能夠用於判斷page的邊界,屏蔽後會影響Heap Feng Shui的穩定性。隨後在iOS9.0大幅修改了vm_map_copy對象,使得構造任意size釋放和任意地址讀更加困難。此外,加入KPP機制等,整體來說內核變得愈來愈安全。

3.三、iOS漏洞展望

2015年,隨着iOS系統漏洞的持續增加,XcodeGhost事件的發酵,咱們能夠看到iOS系統上仍然存在着不少被忽略的攻擊面。好比在非越獄的狀況下,沙箱能夠經過漏洞獲取root代碼執行權限,竊取用戶隱私和其餘第三方數據等等。

咱們能夠大膽預測,2016年iOS系統安全註定會是不平凡的一年:會有更多的iOS內核漏洞利用及iOS 9.2和9.3的越獄發佈;相似Android上的StageFright漏洞也可能在iOS系統上出現,咱們也可能看到更多相似「Airdrop-eaque」攻擊的再次披露,使得攻擊者在必定範圍內在任意設備上發送和安裝惡意應用。

可是攻防永遠是相對的,在2016年蘋果全球開發者大會上將推出新的iOS 10操做系統,必定會帶來更新更堅固的安全機制。安全研究者在新的一年也必定會投入更多的精力到iOS系統安全研究上,相信在和蘋果公司的「互動」下,iOS系統的安全性也會更上一個臺階。

相關文章
相關標籤/搜索