iOS的安全性遠(yuǎn)比大家的想象中脆弱,除了沒有公開的漏洞以外,還有很多已經(jīng)公開并且可被利用的漏洞,本報(bào)告總結(jié)了2016年比較嚴(yán)重的iOS漏洞(可用于遠(yuǎn)程代碼執(zhí)行或越獄),希望能夠?qū)Υ蠹乙苿?dòng)安全方面的工作和研究帶來一些幫助。
0x01 iOS 10.1.1 公開的可利用漏洞
1. mach_portal攻擊鏈:該攻擊鏈?zhǔn)怯蒅oogle Project Zero的Ian Beer公布的。整個(gè)攻擊鏈由三個(gè)漏洞組成:損壞的內(nèi)核port的uref可導(dǎo)致任意進(jìn)程的port被越權(quán)替換(CVE-2016-7637),powerd任意port替換可導(dǎo)致DoS(CVE-2016-7661),因?yàn)閟et_dp_control_port沒有上鎖導(dǎo)致的XNU內(nèi)核UaF(CVE-2016-7644)。
攻擊者先使用CVE-2016-7637將launchd與”com.apple.iohideventsystem”系統(tǒng)服務(wù)具有發(fā)送權(quán)限的port替換成自己控制的進(jìn)程的port,并攻擊者還具有該port的接收權(quán)限。然后,攻擊者利用CVE-2016-7661對(duì)powerd這個(gè)進(jìn)程進(jìn)行DoS,使其重啟。在啟動(dòng)過程中,因?yàn)閜owerd的啟動(dòng)需要用到”com.apple.iohideventsystem”系統(tǒng)服務(wù),于是將task port發(fā)送給了這個(gè)系統(tǒng)服務(wù)。但因?yàn)楣粽呃弥暗腃VE-2016-7637漏洞獲取了”com.apple.iohideventsystem”系統(tǒng)服務(wù)port的接收權(quán)限,因此攻擊者獲得了powerd的task port,從而控制了具有root權(quán)限并且在沙盒外的powerd進(jìn)程。攻擊者隨后利用powerd進(jìn)程的task port獲取到了host_priv port,然后利用host_priv port觸發(fā)因set_dp_control_port沒有上鎖而導(dǎo)致的XNU內(nèi)核UaF(CVE-2016-7644)漏洞,從而控制了kernel task port。攻擊者在獲取了kernel task以后,就可以利用系統(tǒng)提供的mach_vm_read()和mach_vm_write()去進(jìn)行任意內(nèi)核讀寫了。
2016年12月22日,qwertyoruiop在Ian Beer公布的mach_portal攻擊鏈的基礎(chǔ)上,加入了KPP的繞過、內(nèi)核patch和cydia的安裝,并在自己的twitter上發(fā)布了iOS 10.1.*的越獄。