如何深入分析macOS漏洞CVE-2019-8507


这篇文章给大家介绍如何深入分析macOS漏洞CVE-2019-8507,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。2019年3月25日,苹果发布了macOS Mojave 10.14.4和iOS 12.2。这两个版本修复了大量的安全漏洞,其中包括QuartzCore(即CoreAnimation)中的CVE-2019-8507。关于苹果更新的详细信息,可以参考这篇【公告】。在这篇文章中,我们将对macOS中的漏洞CVE-2019-8507进行详细分析。QuartzCore,也就是CoreAnimation,它是macOS和iOS用来创建动画场景的图形框架。CoreAnimation使用了一种免费云主机域名独特的渲染模型,这种模型会以单独得进程来进行图形化操作。在macOS中,这个进程为WindowServer。在iOS中,这个进程为backboard。QuartzCore中名为com.apple.CARenderServer的服务通常被称为CARenderServer。这个服务macOS和iOS中都有,可以直接从Safari沙盒环境中访问。但是,在macOS上,当QuartzCore在处理一个CA::Render::Decoder::decode_shape()函数中的图形对象时,就会发生内存崩溃(漏洞),这将导致应用程序意外终止运行。下面给出的是Windows Server进程在遇到问题时的程序崩溃日志:接下来,我将演示如何使用我们的PoC来触发该漏洞。PoC代码如下所示:原始Mach信息跟修改后的Mach信息对比如下图所示:通过对二进制源码进行分析后,我们发现只需要将偏移量0xB6的在一个字节由0x06修改为0x86,即可触发该漏洞。如PoC代码所示,为了发送专门制作的Mach消息来触发该漏洞,我们首先需要发送一个msgh_id为40202的Mach消息,服务器中对应的处理器为_XRegisterClient,然后获取每一个新连接客户端的链接ID。当我们获取到了连接ID之后,我们就可以在特质的Mach消息中偏移量0x2C的位置设置这个值了。最后,我们只需要发送这个Mach消息就可以触发该漏洞了。接下来,我们将使用LLDB来对漏洞进行动态调试,并分析导致漏洞产生的根本原因。注意:我们需要通过SSH模式来调试WindowServer进程。通过对崩溃日志进行分析,我们可以获取到崩溃线程的堆栈回溯信息,并使用下列命令在CA::Render::Server::ReceivedMessage::run_command_stream函数处设置断点:conn_id的值可以通过在PoC代码的第86行设置断点来获取。断点命中后,我们可以直接读取特制Mach消息的缓冲区数据,寄存器r13指向的就是特制的Mach消息。函数CA::Render::Decoder::decode_object(CA::Render::Decoder *this,CA::Render::Decoder *a2)可以用来解码这种类型的对象数据。开始于偏移量0x70000907dd52处的缓冲区数据为一个图片对象(绿色高亮标记):下面的代码段可以用来解析CA::Render::Decoder::decode_object函数中的图片对象数据:下图显示的是函数CA::Render::Image::decode(),我添加了部分注释方便大家查看:我们可以看到偏移量0x70000907dd52处的一个字节从0x06变为了0x86,所以变量v4现在等于0x86。接下来,程序会跳转到LABEL_31来执行其他分支代码,因为变量v4已经大于0x20了。在LABEL_31结尾处,程序会调用CA::Render::Texture::decode(CA::Render::Texture *this,CA::Render::Decoder *a2)函数来继续处理后续数据。我们可以看到,它会调用函数CA::Render::Decoder::decode_shape来处理Shape对象数据。接下来,我们看看其他的数据集是如何处理的。我们可以看到变量v2等于0x02它可以给缓冲区分配一个8字节大小的区域。最后,它会调用函数CA::Render::Decoder::decode_bytes来解码多个字节的数据。导致该问题存在的根本原因在于CA::Render::Decoder::decode_shape函数缺乏限制验证机制。下面我们看看苹果方面是如何修复这个漏洞的:根据苹果的安全公告,这个漏洞只会影响macOS。该问题存在于QuartzCore中,由于缺少输入验证限制,因此当QuartzCore在处理一个CA::Render::Decoder::decode_shape()函数中的图形对象时,就会触发该漏洞。通过对比补丁代码,我们可以看到苹果通过增强输入验证机制修复了该问题。关于如何深入分析macOS漏洞CVE-2019-8507就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关推荐: apache跨域问题

CorsFilter org.apache.catalina.filters.CorsFilter cors.allowed.origins * cors.allowed.methods GET,POST,HEAD,OPTIONS,PUT cors.allow…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/04 17:41
下一篇 02/04 17:41