Somisomair/CVE-2026-43655-AppleM2ScalerCSCDriver-UAF
GitHub: Somisomair/CVE-2026-43655-AppleM2ScalerCSCDriver-UAF
CVE-2026-43655 的修复后技术披露存档,包含 AppleM2ScalerCSCDriver use-after-free 漏洞的 PoC 源码、编译产物及详细根因分析。
Stars: 0 | Forks: 0
# CVE-2026-43655:AppleM2ScalerCSCDriver 共享调度器 use-after-free
关于 **CVE-2026-43655** 的公开技术披露,这是一个 `AppleM2ScalerCSCDriver` 的 use-after-free 漏洞,可在无需任何特殊 entitlements 的情况下,从默认的 iOS app 沙箱中触发。
Apple 已在 iOS 26.5 / iPadOS 26.5 / macOS Tahoe 26.5 中修复了此问题。本仓库包含了源代码、最小化的 entitlements、已编译的 IPA,以及用于公开修复后审查的详细技术说明。
## 根本原因
`AppleM2ScalerCSCDriver` 维护着一个供 scaler 操作使用的共享调度器堆。PoC 通过来自受害者 `IOSurfaceAcceleratorClient` 连接的异步操作来填充该调度器,随后关闭受害者连接。
漏洞在于,teardown 会释放受害者连接的基于客户端的操作对象,而陈旧的调度器条目仍然可以引用那些已被释放的操作。在已释放的池槽被另一个连接重用之后,随后的 scaler 调度周期可能会处理这些陈旧的条目。
在观察到的易受攻击行为中:
- 受害者操作携带标记 `0xDEAD0001`;
- 替换喷射操作携带标记 `0xBEEF0002`;
- 随后的内核错误观察到 `x9 = 0x00000000BEEF0002`,即替换标记,而不是受害者标记。
这种标记交换证明调度器读取了一个已被释放然后被重新分配的池槽:即 use-after-free。
## 物理设备重现步骤
重要的重现细节:点击 **TEARDOWN UAF** 后,设备不一定会立即崩溃。首先要填充陈旧的调度器状态。漏洞会在下一个 scaler 调度周期触发,在实际操作中,这会在 SpringBoard/compositor 活动驱动 scaler 时发生。在我的物理设备重现过程中,当 PoC 完成对陈旧调度器状态的填充后,我通过点击/交互 **Dynamic Island** 触发了该调度器周期。
重现流程:
1. 在运行 PoC 之前重启易受攻击的设备。
2. 安装并启动 PoC app。
3. 点击 **TEARDOWN UAF**。
4. 等待 PoC 创建带有标记 `0xDEAD0001` 的受害者异步操作。
5. PoC 关闭受害者连接,留下陈旧的调度器条目。
6. PoC 打开带有标记 `0xBEEF0002` 的喷射连接。
7. 当 app 打印出触发提示时,点击/交互 **Dynamic Island** 以强制 SpringBoard/compositor 活动,从而驱动 scaler 调度器。
8. 处理陈旧调度器条目时,设备会崩溃/重启。
9. 重启后,验证崩溃寄存器状态是否包含 `x9 = 0x00000000BEEF0002`。
`BEEF0002` 值是喷射值。看到它而不是 `DEAD0001` 是证明调度器在内存被释放并被不同连接重用后对其进行了访问的关键证据。
## 文件
| 文件 | 描述 |
| --- | --- |
| [`ScalerTeardownUAF.m`](./ScalerTeardownUAF.m) | Objective-C PoC 源代码。打开受害者连接,提交异步操作,将其销毁,喷射替换连接,并保持调度压力处于活动状态。 |
| [`ScalerTeardownUAF.ipa`](./ScalerTeardownUAF.ipa) | 构建好的 IPA,保留了重现构件。 |
| [`entitlements.plist`](./entitlements.plist) | 仅包含 `get-task-allow` 的最小化 entitlement 文件。 |
## 编译
```
xcrun -sdk iphoneos clang -framework Foundation -framework UIKit -framework IOKit \
-framework IOSurface -isysroot $(xcrun --sdk iphoneos --show-sdk-path) \
-arch arm64 -arch arm64e -miphoneos-version-min=16.0 -fobjc-arc \
-o iPhoneProbe.app/iPhoneProbe ScalerTeardownUAF.m
ldid -S entitlements.plist iPhoneProbe.app/iPhoneProbe
mkdir -p /tmp/pkg/Payload
cp -r iPhoneProbe.app /tmp/pkg/Payload/
cd /tmp/pkg && zip -qr ScalerTeardownUAF.ipa Payload
```
## 备注
这是一个用于技术验证和防御性研究的修复后 CVE 披露存档。
标签:CVE监控, iOS, PoC, Use-After-Free, Web报告查看器, 内核漏洞, 暴力破解, 漏洞披露