手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中

CVE-2019-8635: Apple macOS double free漏洞分析

来源:本站整理 作者:佚名 时间:2019-07-06 TAG: 我要投稿

Trend Micro研究人员在macOS中发现一个double free漏洞,漏洞CVE编号为CVE-2019-8635。该漏洞是由于AMD组件中的内存破坏漏洞引发的。如果该漏洞被成功利用,攻击者就可以实现权限提升,并在系统中以root权限执行?#25105;?#20195;码。目前苹果公司已经?#22836;?#20102;漏洞补丁。
CVE-2019-8635包含2个漏洞,分别是discard_StretchTex2Tex方法和AMD Radeon类的processing of sideband tokens处理AMDRadeonX400_AMDSIGLContext。这是IOAccelGLContext2提取的类,这是从IOAccelContext2类中扩展得到的。这些类的作用是在macOS机器上进行图形渲染。漏洞存在于AMDRadeonX4000_AMDSIGLContext类的discard_StretchTex2Tex和AMDSIGLContext::process_StretchTex2Tex函数中,可以使用AMDRadeonX4000_AMDSIGLContext userclient和selector 2函数IOAccelContext2::submit_data_buffers来进行访问,AMDRadeonX4000_AMDGraphicsAccelerator客户端可以用connect type 1打开。
AMDRadeonX4000_AMDSIGLContext discard_StretchTex2Tex Double Free权限提升漏洞
该漏洞允许攻击者在用户空间(userspace)执行代码。为了利用该漏洞,攻击者必须首先可以在目标macOS系?#25104;现?#34892;低权限的代码。该漏洞是由于没有对用户提供的数据进行?#23454;?#39564;证造成的,最终会导致对分配的数据结构的读。攻击者正是利用了这一点和其他漏洞一起来进行权限提升,获取kernel级权限。
AMDRadeonX4000_AMDSIGLContext Double Free权限提升漏洞
在该ADM类的sideband tokens处理工程中还存在double free漏洞。该漏洞允许本地攻击者在受影响的macOS系统中执行?#25105;?#20195;码。跟前面的漏洞相似,攻击者必须首先获取目标系统中执行低权限代码的能力。前面的漏洞存在于AMDRadeonX4000_AMDSIGLContext: discard_StretchTex2Tex函数中,本漏洞存在于AMDRadeonX4000_AMDSIGLContext::process_StretchTex2Tex函数中。漏洞产生的原因是在该对象中执行操作前没有对该对象进行有效性验证。攻击者可以利用该漏洞来提升权限到kernel?#19969;?#36825;两个漏洞在利用方面是相似的,不同点在于所利用的函数。
漏洞根源分析


图1. 伪随机代码段:函数 AMDRadeonX4000_AMDSIGLContext: discard_StretchTex2Tex (上), 函数AMDRadeonX4000_AMDSIGLContext::process_StretchTex2Tex (下)
如图1 (上)所示,如果cmdinfo+32等于0x8c00,IOAccelResource v10和v11都是来自于IOAccelShared2,*(shareMem_start_address_187_offset16+8)和*(shareMem_start_address_187_offset16+12)值是索引。该函数会使用 IOAccelResource2::clientRelease() 函数来?#22836;?#20004;个加速器资源。但是这两个索引值可以通过?#25104;?#20869;存用IOAccelContext2 userclient从用户空间控制。如果用户空间从函数lookupResource?#25104;?#20102;相同的索引值,clientRelease就会?#22836;?次相同的资源客户端,此时double free漏洞就发生了。
如图1 (下) 所示,如果v15等于0x8c00,那么accelResource_offset8和accelResource_offset12都来源于IOAccelShared2,共享的内存offset 24和28就说索引。最后,函数会从IOAccelShared2 _rst中?#22836;臿ccelResource_offset12,如果accelResource_offset8->member2?#22351;?#20110;10,该函数就会从IOAccelShared2中?#22836;臿ccelResource_offset8。但设置共享内存offset 24和28为相同的值会?#22836;?次accelResource。
在 process_StretchTex2Tex()函数中,完成stretch操作会使用函数 IOAccelResource2::clientRelease()?#22836;?个资源客户端。但这两个来自accelShare2共享内存的accelResource2会?#22836;?个资源客户端。但这两个都是来自于AMDRadeonX4000_AMDSIGLContext类的共享内存的,并使用IOAccelShared2::lookupResource 函数和每个索引。该索引可以通过?#25104;?#20869;存和IOAccelContext2 userclient从用户空间进行控制。如果用户空间?#25104;?#20102;与lookupResource函数相同的索引,clientRelease就会?#22836;?#30456;同的资源客户端2次,这也就说double free漏洞发生的原因。
这两个漏洞是伪代码端都表明指向命令流信息offset 24的共享内存地址。但命令流信息缓存其实是在 IOAccelContext2::processSidebandBuffer函数中设置的。如图2所示,v5指向shareMem offset 16,this->member196指向commandStreamInfo offset 24。

图2. IOAccelContext2::processSidebandBuffer伪代码段
图3是IOAccelContext2::clientMemoryForType函数的伪代码段。该函数是由IOConnectMapMemory64 API调用的,该API可以?#25104;?#29992;户空间缓冲区和kernel空间。在使用IOConnectMapMemory64函数时,应当设定connect object, memory type和其他参数。在这个例子中,connect object是IOAccelContext2的实例,memory type为0,如图3所示。当把memory type设为0时, clientMemoryForType函数就会创建一个缓冲内存描述符(buffer memory descriptor)并返回开始地址到用户空间。还会设置缓冲内存地址为变量shareMem_start_vm_address_187。该变量其实就是IOAccelContext2::processSidebandBuffer函数中使用的值。这样,共享的缓冲就可?#21592;?#25511;制,两个资源索引也被设置为相同的值,然后就可以触发double free漏洞。

图3. IOAccelContext2::clientMemoryForType 函数伪代码段
下面是应用奔溃日志的backtrace信息,其中如果使用函数discard_StretchTex2Tex,那么只有“AMDRadeonX4000AMDRadeonX4000_AMDSIGLContext::process_StretchTex2Tex”和函数offset“process_StretchTex2Tex(IOAccelCommandStreamInfo&) + 2893”是不同的。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.rliwo.live)登载此文出于传递更多信息之目的,并不代表本站赞同其观点?#25237;?#20854;真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱[email protected],我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载
        购买彩票权威网址
        手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中
        排球女将电视剧 华东15选5 网上博彩是违法的吗 封神演义剧情 2015法兰克福特锦赛 海底总动员英文版 对决沙龙返水 吉利分分彩走势图 天津麻将胡牌 麻将来了那个猜猜乐怎么完成