温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

APPLE MACOS内核OOB写入权限提升漏洞CVE-2020-27897的示例分析

发布时间:2021-12-28 10:55:19 来源:亿速云 阅读:199 作者:小新 栏目:安全技术

这篇文章给大家分享的是有关APPLE MACOS内核OOB写入权限提升漏洞CVE-2020-27897的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

仅供参考学习使用。

漏洞分析

用户空间和英特尔内核驱动程序之间的通信是使用IOConnectCallMethod完成的,而IOConnectCallMethod最终还会使用Mach消息。IntelMTRenderFunctions是一个类,它负责处理来自客户端的内核命令以便通过execute()方法来呈现UI信息。每个内核命令都由一个数值标识,在我们的例子中,我们将关注命令0x10005。除了内核命令号之外,execute()还可以接受来自客户端缓冲区的数据。此缓冲区中的偏移量用于生成结构地址的算术运算,这个运算操作会在未进行边界检查的情况下发生,并触发越界写入漏洞。

对于代码路径IntelMTLRenderFunctions::execute()的描述如下:用户空间客户端可以通过调用IOAccelSharedUserClient2::create_shmem()函数创建两个共享内存映射,该函数由另一个内核扩展IOAcceleratorFamily2提供。第一个内存映射将用作请求的分段描述符,而第二个内存映射包含一个命令缓冲区。create_shmem()函数将使用唯一的ID注册映射并返回它们,然后将这些ID与内核命令缓冲区一起传递给IOAccelCommandQueue::s_submit_command_buffers(),这个内核命令缓冲区的大致结构(数组)如下所示:

struct command {     uint32_t type;     uint32_t size;     uint8_t *cmd; }

这个数组之后会进行分割,最终将以一个内核命令传递给IGAccelCommandQueue::processKernelCommand(),该内核命令结构如下:

struct command {     uint32_t    cmd_id;           // 0x10005     uint32_t    size;                   uint32_t    offset;           // the offset that causes no boundary check     uint32_t    loop_counter;       uint32_t    zero1;     uint32_t    zero2;     uint32_t    controlled_value; // controlled value which can be written to the offset     uint32_t    zero3; };

接下来,它将会传递给AppleIntelKBLGraphics中的IntelMTLRenderFunctions::execute()并处理内核命令0x10005:

APPLE MACOS内核OOB写入权限提升漏洞CVE-2020-27897的示例分析

下面给出的是针对该漏洞的利用PoC:

APPLE MACOS内核OOB写入权限提升漏洞CVE-2020-27897的示例分析

总结

内核驱动程序中的漏洞总是非常的有意思,它们的攻击向量往往需要伴随远程代码执行漏洞。一旦存在这种漏洞,那么将有可能导致目标设备完全被攻击者接管。

感谢各位的阅读!关于“APPLE MACOS内核OOB写入权限提升漏洞CVE-2020-27897的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oob
AI