MIT CSAIL 的 Joseph Ravichandran 报告了此问题,并指出该漏洞会影响使用 CONFIG_MBUF_MCACHE 编译的内核。Ravichandran 已在 macOS 14.2、14.3 和 14.4 的 X86_64 版本上验证了该漏洞的存在。
CVE-2024-27815 的根本原因在于内核中消息缓冲区的处理。消息缓冲区(或mbuf)由标头和数据部分组成,两者的大小都是固定的。在受影响的内核中,消息缓冲区的总大小 (_MSIZE) 为 256 字节,其中标头占用 32 字节,剩下 224 字节 (MLEN) 用于数据部分。
该漏洞是由sbconcat_mbufs函数中的错误边界检查触发的。具体来说,此函数中使用的宏仅在 _MSIZE 小于一个字节时才发出边界检查,而不是使用 MLEN(数据可用空间的实际长度)。此疏忽允许攻击者将最多 255 个字节的数据写入消息缓冲区的数据字段(该字段只有 224 个字节长),从而导致缓冲区溢出。
苹果的安全公告指出,“应用程序可能能够以内核权限执行任意代码。” 如果利用此越界写入问题,攻击者将能够在内核级别执行任意代码,从而可能导致整个系统被入侵。
Apple 在与 macOS 14.5、iOS 17.5 和 visionOS 1.2 一起发布的 XNU 内核版本 xnu-10063.121.3 中解决了此漏洞。修复涉及正确比较 MLEN(而不是 _MSIZE)与 UINT8_MAX。这可确保正确执行边界检查,从而防止溢出。当常量 MLEN 始终大于 UINT8_MAX 时,编译器可以优化此检查,从而确保安全,因为 CASSERT 保证 sa_len 最多为 255。
对于那些有兴趣深入了解技术细节的人, 可以通过 Joseph Ravichandran 和 MIT CSAIL 提供的资源找到概念验证(PoC) 漏洞代码和进一步的 CVE-2024-27815 分析。
https://github.com/jprx/CVE-2024-27815
原文始发于微信公众号(独眼情报):【PoC 】CVE-2024-27815:Apple XNU 内核漏洞PoC发布
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论