加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

BlackHat 2018 | iOS越狱细节揭秘:伤害的用户态只读内存

发布时间:2018-08-16 09:44:06 所属栏目:业界 来源:陈良
导读:技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战 议题提纲 当代操纵体系根基都已经在硬件级别(MMU)支持了用户态只读内存,只读内存映射在担保了跨历程间通讯、用户态与内核间通讯高效性的同时,也担保了其安详性。直到DirtyCOW裂痕
副问题[/!--empirenews.page--] 技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战

议题提纲

当代操纵体系根基都已经在硬件级别(MMU)支持了用户态只读内存,只读内存映射在担保了跨历程间通讯、用户态与内核间通讯高效性的同时,也担保了其安详性。直到DirtyCOW裂痕的呈现,这种信赖界线被彻底冲破。

在iOS中,这样的可信界线好像是安详的,然而跟着苹果装备的快速更新和成长,引入了越来越多的酷炫成果。很多酷炫成果依靠iOS与一些独立芯片的配合协作。个中,DMA(直接内存会见)技能让iOS与这些独立芯片之间的数据通讯变得越发高效。

然而,很少有人意识到,这些新成果的引入,清静使得成立已久的可信界线被冲破。科恩尝试室颠末长时刻的研究,发明白一些间接袒露给用户应用的DMA接口。固然DMA的通讯机制计划的较量美满,可是在软件实现层呈现了题目。将一系列的题目串联起来后,将会形成了一个危害庞大的进攻链,乃至可导致iOS手机被长途越狱。部门技能曾在客岁的MOSEC大会长举办演示,但焦点细节与技能从未被果真。该议题将初次对这些技能细节、裂痕及操作进程举办分享,显现怎样串联多个模块中袒露的“不相干”题目,最终获取iOS内核最高权限的新型进攻模式。

BlackHat 2018 | iOS越狱细节揭秘:伤害的用户态只读内存

作者简介

陈良,腾讯安详科恩尝试室安详研究专家,专注于赏识器高级操作技能、Apple系操纵体系(macOS/iOS)的裂痕发掘与操作技能研究。他曾多次教育团队得到Pwn2Own 、Mobile Pwn2Own的冠军,并多次实现针对iOS体系的越狱。

BlackHat 2018 | iOS越狱细节揭秘:伤害的用户态只读内存

议题理会

当代操纵体系城市实现内存掩护机制,让进攻变得更坚苦。iOS在差异级别实现了这样的内存掩护,譬喻,MMU的TBE属性实现NX、PXN、AP等,以及更底层的KPP、AMCC等:

image.png

个中,用户态只读内存机制,在iOS上有许多应用,好比可执行页只读、历程间只读以及内核到用户态内存的只读:

image.png

假如一旦这些只读内存的掩护被粉碎,那么最初的可信界线就会被彻底粉碎,在多历程通讯的模式下,这可以导致沙盒绕过。而对付内核和用户态内存共享模式下,这也许可以导致内核代码执行:

image.png

然而打破这样的限定并不轻易,在iOS中,内核代码会阻止这样的环境产生:每个内存页都有一个max_prot属性,假如这个属性配置为不能大于只读,那么全部配置成writable的重映射哀求城市被阻止:

image.png

跟着手机新技能的成长,DMA技能也被应用于手机上,DMA是一种让内存可以不通过CPU举办处理赏罚的技能,也就是说,全部CPU级此外内存掩护,对付DMA所有无效。

那么,是不是说,DMA没有内存掩护呢?究竟并非云云,这是由于两个缘故起因:第一,对付64位手机装备,很多手机的周边装备(譬喻WIFI装备)照旧32位的,这使得有须要举办64位和32位地点间转换;第二是由于DMA技能自己必要须要的内存掩护。

image.png

正由于云云,IOMMU的观念被提出了。在iOS装备中,DART模块用来实现这样的地点转换。

究竟上DMA有两种:Host-to-device DMA以及device-to-host DMA,前者用于将体系内存映射到装备,尔后者用户将装备内存映射于体系假造内存。在2017年中,Google Project Zero的研究员Gal Beniamini先将WIFI芯片攻破,然后通过修改Host-to-device DMA的一块内存,因为内核充实信赖这块内存,忽略了一些须要的界线搜查,导致乐成通过WIFI来攻破整个iOS体系:

image.png

然而Gal的进攻方法存在必然范围,由于必需在短间隔模式下才气完成:进攻WIFI芯片必要进攻者和受害者在统一个WIFI情形中。

我们有没有步伐通过DMA的题目实现远间隔攻破,这听上去并不行行,由于DMA接口自己并不会袒露于iOS用户态。

然而通过科恩尝试室的研究发明,也许存在一些间接接口,可以用来做DMA相干的操纵,譬喻iOS中的JPEG引擎以及IOSurface transform等模块。我们选择研究IOSurface transform模块的事变机制。以下是IOSurface transform模块的事变机制:

image.png

IOSurfaceAccelerator接口通过用户态提供的两个IOSurface地点作为用户参数,通过操纵Scaler装备,将IOSurface对应的地点转换成Scaler装备可见的装备地点,然后启动scaler装备举办transform,整个进程如下:

image.png

另一方面,在这个Host-to-device DMA进程中,用户态内存的只读属性是否被思量在内,是一个较量迷惑的题目。我们颠末研究,发此刻IOMMU中是支持内存属性的:

image.png

在TTE的第8和第9位,是用于执行内存页的读写属性的:

image.png

因此我们获得这样的页表属性界说:

image.png

我们之后先容了苹果图形组件的事变模式:

image.png

在iPhone7装备中,一共有128个Channel,这些Channel被分成三类:CL、GL和TA,内核未来自用户态的画图指令包装并塞入这128个channel,然后守候GPU的处理赏罚。因为GPU处理赏罚是高并发的,因此必要很健全的关照机制。

image.png

起首GPU会映射一个128个元素的stampArray给kernel,kernel也会把这块内存映射到用户态。与此同时,内核也维护了一个stamp address array,用于生涯每个channel的stamp地点:

image.png

值得留意的是,GPU每处理赏罚完一个画图指令后,城市将对应channel的stamp值加1。另一方面,对付每个画图指令,城市有一个祈望stamp值,这个值被封装于IOAccelEvent工具中:

image.png

体系通过简朴的较量expectStamp于当前channel的stamp值就可以确定这个画图指令是否已经完成。为了进步处理赏罚服从,部门IOAccelEvent工具会被映射到用户态,属性只读。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读