主要观点:
- 发现崩溃只是漏洞研究的开始,漏洞开发往往是漫长的过程,并非所有漏洞都可利用,如之前的 macOS IONVMeFamily 驱动拒绝服务问题。
- 在最近的模糊测试中,发现 macOS 多年来实施的各种缓解措施使得一个原本可能可利用的漏洞(NULL 指针引用漏洞)变得不可利用。
- 详细介绍了历史上 macOS 中 NULL 指针引用漏洞的利用方式,如在早期 macOS 版本(Intel 架构)通过在用户空间的 NULL 地址映射虚假对象来利用,在 32 位二进制文件中可通过特定编译标志绕过页零保留来利用等。
- 介绍了现代 macOS Apple Silicon 中的缓解措施,包括严格的 NULL 页映射保护、硬件执行和访问控制(PXN/PAN)、指针认证代码(PAC)、移除遗留利用向量、改进的内核内存管理和检查等,使得 NULL 指针引用漏洞在现代系统中几乎不可利用。
- 讨论了在现代 macOS 上 NULL 指针引用漏洞是否仍可利用的问题,认为其主要作为拒绝服务漏洞存在,且 Apple 仍在修复此类问题但不总是将其归类为安全问题,同时给出了报告 NULL 指针引用漏洞前的可利用性检查清单。
关键信息:
- 不同版本 macOS 中 NULL 指针引用漏洞的利用方式及相关案例。
- 现代 macOS Apple Silicon 中的缓解措施及其作用机制。
- NULL 指针引用漏洞在现代系统中的可利用性及相关讨论。
重要细节:
- 在 ARM64 架构下,地址 0 在虚拟内存中通常未映射,NULL 指针引用通常触发内存访问故障,导致内核停止执行以保护自身。
- macOS 中 64 位进程默认不能在地址 0 映射内存,有
__PAGEZERO
段保留低地址区域。 - 早期可通过编译 32 位二进制文件并禁用页零保留来利用 NULL 指针引用漏洞,如 Cisco Talos 的相关研究。
- 现代 macOS 中引入了多种缓解措施,如严格的 NULL 页映射保护、PXN/PAN、PAC 等,使得利用 NULL 指针引用漏洞变得极其困难。
- 报告 NULL 指针引用漏洞前需进行一系列可利用性检查,如检查指针来源、是否可操纵等。
- Apple 仍在修复 NULL 指针引用相关问题,但不总是将其归类为安全问题,且自 macOS Big Sur 以来未公开报告过此类漏洞被利用的情况。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。