主要观点:
- 介绍了 CVE-2024-27815 这一 XNU 内核中的缓冲区溢出漏洞,包括其在不同系统版本中的情况、修复过程及相关证明等。
关键信息: - 漏洞位于
sbconcat_mbufs函数,影响编译了CONFIG_MBUF_MCACHE的内核,在xnu-10002.1.13引入,xnu-10063.121.3修复,分别对应 macOS 14.0/ iOS 17.0 和 macOS 14.5/ iOS 17.5 等。 - 给出了漏洞的时间线,包括各个系统版本的发布及相关内核更新。
- 阐述了安全公告的链接及
TURPENTINE.c文件的相关信息,包括其哈希值。 - 分析了漏洞的根本原因是在特定条件下
bcopy操作导致数据超出mlen范围,以及苹果的修复方式是正确比较MLEN与UINT8_MAX。 - 提供了利用该漏洞的概念验证(PoC)代码及示例崩溃情况,包括调试信息和相关内核扩展。
重要细节: mbuf由固定大小的头和数据部分组成,_MSIZE为总大小,MLEN为数据部分长度,asa->sa_len可达 255 字节。- 引入漏洞的宏错误使用了
_MSIZE而不是MLEN。 - PoC 只需 3 个系统调用,需内核编译时启用
CONFIG_MBUF_MCACHE,通过创建特定大小的套接字地址触发溢出。 - 示例崩溃显示为
kernel_task中的通用保护故障,调试信息显示了寄存器状态等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。