天天看點

黑雲壓城城欲摧 - 2016年iOS公開可利用漏洞總結

黑雲壓城城欲摧 - 2016年ios公開可利用漏洞總結

作者:蒸米,耀刺,黑雪 @ team oversky

黑雲壓城城欲摧 - 2016年iOS公開可利用漏洞總結

ios的安全性遠比大家的想象中脆弱,除了沒有公開的漏洞以外,還有很多已經公開并且可被利用的漏洞,本報告總結了2016年比較嚴重的ios漏洞(可用于遠端代碼執行或越獄),希望能夠對大家移動安全方面的工作和研究帶來一些幫助。

<b>mach_portal攻擊鍊:</b>該攻擊鍊是由google project zero的ian beer公布的。整個攻擊鍊由三個漏洞組成:損壞的核心port的uref可導緻任意程序的port被越權替換(cve-2016-7637),powerd任意port替換可導緻dos(cve-2016-7661),因為set_dp_control_port沒有上鎖導緻的xnu核心uaf(cve-2016-7644)。

攻擊者先使用cve-2016-7637将launchd與”com.apple.iohideventsystem”系統服務具有發送權限的port替換成自己控制的程序的port,并攻擊者還具有該port的接收權限。然後,攻擊者利用cve-2016-7661對powerd這個程序進行dos,使其重新開機。在啟動過程中,因為powerd的啟動需要用到”com.apple.iohideventsystem”系統服務,于是将task port發送給了這個系統服務。但因為攻擊者利用之前的cve-2016-7637漏洞擷取了”com.apple.iohideventsystem”系統服務port的接收權限,是以攻擊者獲得了powerd的task port,進而控制了具有root權限并且在沙盒外的powerd程序。攻擊者随後利用powerd程序的task port擷取到了host_priv port,然後利用host_priv port觸發因set_dp_control_port沒有上鎖而導緻的xnu核心uaf(cve-2016-7644)漏洞,進而控制了kernel task port。攻擊者在擷取了kernel task以後,就可以利用系統提供的mach_vm_read()和mach_vm_write()去進行任意核心讀寫了。

2016年12月22日,qwertyoruiop在ian beer公布的mach_portal攻擊鍊的基礎上,加入了kpp的繞過、核心patch和cydia的安裝,并在自己的twitter上釋出了ios 10.1.*的越獄。

黑雲壓城城欲摧 - 2016年iOS公開可利用漏洞總結

<b>pegasus 三叉戟攻擊鍊:</b>該攻擊鍊是在對阿聯酋的一位人權活動家進行apt攻擊的時候被發現。整個攻擊鍊由三個漏洞組成:jsc遠端代碼執行(cve-2016-4657),核心資訊洩露(cve-2016-4655),核心uaf代碼執行(cve-2016-4656)。

黑雲壓城城欲摧 - 2016年iOS公開可利用漏洞總結

<b>iomobileframebuffer heapoverflow 核心漏洞:</b> 該漏洞存在于iomobileframebuffer這個核心服務中。在iomobileframebuffer::swap_submit(iomfbswap *)這個函數中,因為沒有對使用者态傳入的iomfbswap資料進行校驗,進而導緻核心堆溢出。利用該漏洞可以在沙盒内(不需要沙盒逃逸)直接對核心進行攻擊,并完成非完美越獄。該漏洞在ios 9.3.3盤古越獄(女娲石)中被使用。

<b>webkit rce heappopmin 遠端代碼執行漏洞:</b> 因為webkit子產品中的webcore ::timerbase::heappopmin()存在記憶體破壞漏洞,利用該漏洞可以對ios裝置進行遠端攻擊。當用mobile safari浏覽有惡意攻擊代碼的網頁的時候,safari将會被黑客控制。但要注意的事,被控制的僅僅是safari,想要擷取使用者資料還需要進行沙盒逃逸,想要控制手機還需要對核心進行攻擊。另外,因為webkit不光存在于ios中,是以該漏洞還被用于ps4,kindle等裝置的越獄。

<b>gasgauge 條件競争核心漏洞: </b>該漏洞存在于gasgauge這個核心服務中,因為在free記憶體的時候沒有進行加鎖操作,黑客可以開多個線程進行free操作,當競争成功的時候可以造成double free的漏洞,随後可以轉化為任意zone的uaf并控制核心,并完成非完美越獄。需要注意的是,該核心服務并不能在沙盒内直接通路,是以想要利用該漏洞,需要先做到沙盒逃逸。

黑雲壓城城欲摧 - 2016年iOS公開可利用漏洞總結

<b> inputbag heapoverflow 核心漏洞: </b>該漏洞是阿裡移動安全的oversky團隊發現并公布的,該漏洞存在于iohiddevice這個核心服務中,因為沒有對input report的szie做檢測進而造成核心堆溢出。利用該漏洞可以對核心進行攻擊,并完成非完美越獄。需要注意的是,該核心服務需要在沙盒外并擁有"com.apple.hid.manager.user-access-device"這個entilement才能通路,是以想要利用該漏洞,需要先做到沙盒逃逸,然後繞過entilement的檢測才能利用。

<b>cve-2015-7037 photos 沙盒逃逸漏洞:</b> 該漏洞存在于com.apple.persistenturltranslator.gatekeeper這個系統服務中,在盤古越獄中被使用,通過利用改漏洞,一個在沙盒内的app可以做到mobile權限的沙盒外任意檔案讀寫,配合dyld的漏洞可以做到沙盒外的任意代碼執行。

<b>cve-2015-7084 ioregistryiterator 核心漏洞: </b>該核心漏洞存在于iokit中,因為ioregistryiterator對象沒有線程互斥的保護,導緻對成員進行操作的時候可能出現錯誤。該漏洞可以在沙盒内直接通過race condition觸發, 随後轉化為核心資訊洩露以及核心的代碼執行,并做到非完美越獄。

黑雲壓城城欲摧 - 2016年iOS公開可利用漏洞總結

 <b>cve-2015-6974 iohidfamily 核心漏洞:</b>該漏洞存在于iohidresource這個核心服務中,在terminatedevice後,系統沒有将device設定為null, 進而造成uaf漏洞。該漏洞在盤古ios 9.0越獄中被使用,利用該漏洞可以做到核心的任意讀寫,并完成非完美越獄。需要注意的是,該核心服務并不能在沙盒内直接通路,是以想要利用該漏洞,需要先做到沙盒逃逸。

可以看到2016年的公開可利用的漏洞數量是非常巨大的,相對2015年可以說是有了一個指數級的增長。雖然蘋果更新系統的速度非常快并且無法降級,但随着老裝置(iphone 4s及以下已無法更新ios 10)越來越多,并且使用者對新系統期望越來越低,ios裝置的更新率已經變得非常緩慢。

黑雲壓城城欲摧 - 2016年iOS公開可利用漏洞總結

根據某專業移動分析平台2016年12月的資料可以看到,僅有3.28%的裝置更新了最新版的ios 10.2。這意味着96.72%的裝置都有被最近剛釋出的mach_portal漏洞攻擊的風險。我們相信,在新的一年,ios的漏洞數量還會持續增加,并且随着漏洞利用技術的公開,黑灰産也極有可能利用漏洞對使用者進行攻擊,希望廣大使用者一定要注意自己ios裝置的安全。

繼續閱讀