[原创]CVE-2019-8635:macOS double free root cause
发表于:
2019-6-30 14:11
5730
[原创]CVE-2019-8635:macOS double free root cause
在macOS存在一个double free漏洞,这个漏洞由AMD组件的内存损坏所引起。如果成功被利用,攻击者可以完成权限提升并且可以再root权限下执行恶意代码。
其实这个cve包含2个相似的漏洞:
下面简要介绍下这两个漏洞的成因:
第二个漏洞: 如上图函数AMDRadeonX4000_AMDSIGLContext::process_StretchTex2Tex的伪代码片段。结构和上一个漏洞很类似,如果v15==0x8c00, accelResource_offset8和accelResource_offset12会从IOAccelShared2获取到,索引为共享内存+24和共享内存+28的值。最后,这个函数会从 IOAccelShared2 _rst释放accelResource_offset12, 如果 accelResource_offset8->member2!=10, 这个函数也会从IOAccelShared2释放accelResource_offset8,这样的话,如果我们设置共享内存偏移24和28的位置为相同的值,将会释放相同得对象accelResource两次,引发了漏洞。 在AMDRadeonX4000_AMDSIGLContext类里的process_StretchTex2Tex函数中,IOAccelResource2::clientRelease()将会释放这两个对象,而这两个对象accelResource2均来自accelShare2共享内存,对象通过IOAccelShared2::lookupResource函数以各自的索引值为参数来得到,这两个索引值可以被用户态通过 IOAccelContext2设置共享内存来控制。 如果用户态映射了两个相同的索引值,就会释放两次相同的对象。
接下来看IOAccelContext2::processSidebandBuffer: 这两个漏洞的伪代码片段显示了共享内存指向了command stream info +24,这个command stream info buffer在IOAccelContext2::processSidebandBuffer设置,在图中,我们看到 v5=共享内存+16 ,并且v5赋值给了this->member196, this->member196也指向了commandStreamInfo+24。
上图是 IOAccelContext2::clientMemoryForType伪代码片段,被API IOConnectMapMemory64所调用。IOConnectMapMemory64函数可以映射用户态到内核态。当调用这个函数时,它的参数应该有连接对象,内存类型,和其他的参数。这里,我们把连接对象设置为IOAccelContext2的实例,内存类型为0,当设置了内存类型为0的时候,clientMemoryForType函数将会创建一个buffer,它的起始地址是这个变量“shareMem_start_vm_address_187”,也就是在IOAccelContext2::processSidebandBuffer命名的。 从这里开始,共享内存可以被控制,两个resource索引也可以被设置相同的,可以触发这个bug。
接下来我们看一下应用crash的backtrace信息。“AMDRadeonX4000`AMDRadeonX4000_AMDSIGLContext::process_StretchTex2Tex”和“process_StretchTex2Tex(IOAccelCommandStreamInfo&) + 2893”的偏移会有所不同,如果discard_StretchTex2Tex被用来触发漏洞,也同样可以注意到。 当内核检测到系统错误时,这个错误会在内核代码段检测到,就会抛出没有解决的处理器异常,像无效内存地址引用,或者在调用链中的bug等等,mac系统就会产生kernel panic,加入log。我们可以看到所出现的panic log.
在log中也会看到寄存器信息,$r12指向共享内存+16的位置,为0xffffff87299cb9b4,这两个resource索引都为0x42.
苹果在 macOS Mojave 10.14.4已更新补丁,此漏洞由同组研究人员发现并分析。另外,小组在广招二进制漏洞方向的实习生,简历可发我邮箱,jesse_chang#trendmicro.com 坐标:趋势科技南京,如有违规,请及时告知处理。 欢迎大家一起交流。 引用:
https://blog.trendmicro.com/trendlabs-security-intelligence/cve-2019-8635-double-free-vulnerability-in-apple-macos-lets-attackers-escalate-system-privileges-and-execute-arbitrary-code/
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课