zeroxjf/AppleKeyStore-close-UAF

GitHub: zeroxjf/AppleKeyStore-close-UAF

AppleKeyStoreUserClient close()方法的UAF漏洞PoC及补丁diff分析,演示了IOKit服务中多线程竞态条件导致的内核恐慌问题。

Stars: 23 | Forks: 7

# AppleKeyStoreUserClient close() UAF PoC 由 [@zeroxjf](https://x.com/zeroxjf) 提供 **这会导致您的设备发生内核恐慌。请保存您的工作。** 在 iOS 26.2.1 (23C71) 上测试。已在 iOS 26.3 RC (23D125) 中修复。 ## 触发原理 `IOServiceClose` 同步调用 `terminate()`,但保持 Mach port 处于存活状态。随后工作循环(workloop)异步执行 `close()`,从而释放门控(gate)。与此同时,竞争线程通过仍然存活的端口大量发起 `IOConnectCallMethod` 调用——它们的 `externalMethod()` 调用会在单独的 MIG 线程上对已释放的门控进行解引用。 ``` Racers (32 threads): Trigger: IOConnectCallMethod(conn, 10) IOServiceClose(conn) IOConnectCallMethod(conn, 10) -> terminate() [sync] IOConnectCallMethod(conn, 10) -> returns to userland | | port still alive Workloop (async): | close() -> frees gate v this+272 dangles externalMethod() -> *(this+272) -> FAULT Finalization (later): port mapping removed ``` ## 内核恐慌 ``` panic(cpu 1 caller 0xfffffe00503c08e0): Kernel tag check fault (expected tagged address: 0xf6fffe205d518d88) at pc 0xfffffe00502c34e0, lr 0xfffffe00502c3418 Panicked task: pid 17598: UAFTester Kernel Extensions in backtrace: com.apple.driver.AppleSEPKeyStore(2.0) ``` ## 构建与运行 1. 在 Xcode 中打开 `PoC/UAFTester.xcodeproj` 2. 选择您的 iOS 设备(需要 iOS < 26.3 RC 版本) 3. 构建并运行 4. 点击按钮
标签:0day, AppleKeyStore, IOKit框架, iOS26, iOS安全, iOS漏洞, Kernel Panic, Mach端口, macOS安全, PoC, UAF, UML, Xcode, XNU内核, 内核崩溃, 内核漏洞, 拒绝服务, 暴力破解, 漏洞分析, 竞态条件, 越狱研究, 路径探测, 释放后重用