主要观点:
- 介绍了 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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。