iOS 10.3.1 ziVA內核漏洞將是打造越獄工具最佳的漏洞之一

ios 10 3 1 ziva

iOS 10.2以上越獄工具何時會推出?已經不少越獄用戶已經都在期待與等待,最近開發和設計全球頂尖移動安全技術的以色列信息安全公司Zimperium成員@doadam,揭露了iOS內核漏洞ziVA,該漏洞從2017年1月底就被發現,直到5月才被在iOS 10.3.1修補, 而該漏洞也是打造越獄工具最重要的沙盒漏洞。

我們可以將ziVA當成是一名擁有統治江山的武將,而這名武將目前正被關在iOS的牢房內,目前@doadam找到釋放ziVA後,可讓ziVA獲得握有三個可推翻iOS皇朝奪位武林秘笈(漏洞),可直接推翻iOS皇朝,並獲得命令文武百官的最高權限。

不過還缺少協助ziVA脫逃牢房的路線和方式,在過去Google Project Zero的Ian Beer就公佈了Triple_Fetch的漏洞App,不過漏洞已經被蘋果的iOS 10.3.2 (CVE-2017-7047)上被修補,但這漏洞也可以搭配ziVA漏洞共同使用,那就可以協助ziVA沿著指定的路線逃離牢房,我們可以稱這為沙盒逃脫(Sandbox Escape)。

最後有了這些,我們還缺少諸葛亮、司馬懿這類的軍師,來協助逃脫與奪權,否則iOS江山難以掌握,一位好的君主身旁還需要有名軍師來引導指引,目前越獄工具也還在等這位軍師的出現。

萬事俱備,只欠東風。

但可別忘了每台iOS的環境,就像是三國亂世的一個個獨立城池,在也需要花費時間攻佔,才能穩定並達成統一iOS時代,全部達成後,那我們看見iOS越獄工具就已經離我們不遠。

漏洞分析

原始碼:https://github.com/doadam/ziVA

本段分析轉貼自蒸米spark

ios 10 3 1 ziva 1

1. 首先執行system(“id”);表明自己是普通的mobile 用戶。

2. 然後調用offsets_init()獲取一些偏移量,這裡只獲取了iPhone 6 10.2的偏移量,想要其他的機型和版本的話,還要自己去計算。

3. initialize_iokit_connections()所做的是初始化一些iokit userclient,包括AppleAVEDriver以及IOSurfaceRoot。

4. heap_spray_init()是堆噴前的準備,這裡用到了一種新的堆風水姿勢:利用偽造的sysctl buffer和IOSurface的external method來進行堆噴。

5. kernel_read_leak_kernel_base()首先利用了AppleAVE.kext的CVE-2017-6989內核信息洩露洞獲取了IOSurface對像在內核堆上的地址,然後利用IOSurface的一個race condition漏洞(貌似是CVE-2017-6979)獲取了IOFence的vtable,從而計算出kernel slide。

6. offsets_set_kernel_base()和heap_spray_start_spraying()分別設置了kernel base和並根據計算出來的kernel slide構造rop並進行了堆噴。

7. apple_ave_pwn_use_fake_iosurface()利用了AppleAVE.kext的CVE-2017-6995類型混淆漏洞來偽造iosurface對象控制pc,做到內核內存的任意讀寫。

8. test_rw_and_get_root()利用內核內存的任意讀寫修改內核堆中的credentials信息,並將自己的進程提升為root 權限。

9. 最後再執行一次system(“id”);證明exp成功獲取了root 權限。

總結一下,雖然這個exp的利用需要在沙盒外才行,但因為PJ0已經發布了一個沙盒外代碼執行的exp,所以這兩個exp 配合即可做到iOS 10.3.1上的內核任意讀寫。隨後繞過kpp並給kernel打補丁後,即可完成非完美越獄。可以說目前越獄的進度已經達到了66% (Sandbox Escape 33% + Kernel RW 33%)。

喜歡這篇文章教學,後續想了解更多Apple資訊、iPhone、Mac、3C隱藏技巧,歡迎追蹤 瘋先生FB粉絲團瘋先生LINE@訂閱瘋先生Google新聞TelegramInstagram以及 訂閱YouTube頻道,將會有更多非常實用的技巧教學分享給大家。

返回頂端
Share to...