IOThunderboltFamily中的OS X內核UAF漏洞分析

在沒有獲得引用的情況下,IOThunderboltFamilyUserClient在+0xE0地址通過IOServiceOpen存儲了一個任務結構指針。

通過kill這個任務,我們可以釋放掉這個指針,從而為用戶端留下一個掛起指針。

IOThunderboltFamilyUserClient使用這個掛起指針來創建可讀寫的IOMemoryBuffers(假設它可以讀寫被調用進程的任務)。通過重新分配一個帶有許可權進程的task struct結構體,以此覆蓋被釋放掉的那個結構體,我們可以得到IOThunderboltFamilyUserClient來造成內存崩潰。

你也可以利用這個bug引發內核內存崩潰。

build: clang -o thunderbolt_task_uaf thunderbolt_task_uaf.c -framework IOKit

你應該設置gzalloc_min=1024,gzalloc_max=2048 或者類似於UAF的實際錯誤,否則可能會得到一些奇怪的崩潰。

已在 MacBookAir5,2 ,OS X 10.11.5(15F34)上測試。


推薦閱讀:

iOS 10 給開發者帶來了什麼
獨立開發一個 App 是一種怎樣的體驗?
2016年寫文章總結
說一下 iOS 簡中翻譯的事情

TAG:iOS | iOS应用 | 网络安全 |