
CVE-2026-28992 IOHIDFamily FastPathUserClient race condition PoC — security research
Security research repository. Two PoC apps demonstrating the race conditions in IOHIDFamily's FastPathUserClient on iOS 18.7.1 and earlier.
⚠️ Both PoCs will kernel-panic and reboot your device. Save your work first.
| Field | Detail |
|---|---|
| CVE | CVE-2026-28992 |
| Component | IOHIDFamily — IOHIDEventServiceFastPathUserClient |
| Type | Memory corruption (race condition / UAF) |
| Reachable from | Normal app sandbox, zero entitlements required |
| Patched in | iOS 18.7.9 / iOS 26.5 |
| Researcher | Johnny Franks (@zeroxjf) |
sel0 (open/gate) checks FastPathHasEntitlement and FastPathMotionEventEntitlement
in the caller-supplied OSDictionary rather than the entitlement flags stored during
initWithTask. A sandboxed app passes the gate by including those keys in its input dict.
Two vectors follow from there:
UAFPoc/UAFPoc.xcodeproj
Race: close (sel1) drops provider state and clears offset +0x109 without a lock.
copyEvent (sel2) checks offset +0x108 under a per-connection lock, then calls into
the provider. Multiple connections to the same provider mean close and copyEvent run in
different locking domains on the same shared provider-side objects.
Crash type:
AOPPanicPoc/AOPPanicPoc.xcodeproj
Race: mach_port_destroy triggers async didTerminate → teardown, unsynchronized
with concurrent sel0 open paths on other connections. Teardown frees provider-facing
state while opener threads iterate it. Also saturates SPU-backed providers' mailbox →
AOP watchdog timeout.
git clone https://github.com/clogan9019-dotcom/IOHIDFamily-PoC-Research.git
cd IOHIDFamily-PoC-Research
UAF variant:
UAFPoc/UAFPoc.xcodeproj in XcodeAOP variant:
AOPPanicPoc/AOPPanicPoc.xcodeproj in XcodeAfter the device reboots:
Panic log (.ips file)panic-logs/ and commit for analysisAlternatively via Terminal:
# After reboot, pull the log
idevicecrashreport -u <UDID> ./panic-logs/
On A18 (iPhone 16e) you should see one of:
MTE tag check fault — the UAF variant freeing and reallocating a tagged heap objectAOP watchdog timeout — the AOP variant saturating the SPU mailboxKey fields to note:
Kernel version: Darwin Kernel Version ...
Hardware Model: iPhone17,5
panic(cpu N ...): <the actual panic string>
Backtrace:
... IOHIDEventServiceFastPathUserClient ...
The function names in the backtrace tell you exactly which code path triggered.
| Date | Event |
|---|---|
| Unknown | Bug discovered by Johnny Franks (@zeroxjf) |
| May 11, 2026 | Patched in iOS 18.7.9 / iOS 26.5 |
| June 21, 2026 | Public PoC code released |
Unpatched variants or related bugs can be reported at: https://security.apple.com/submit
For kernel bugs: describe component, reproduction steps, crash type, and attach the .ips panic log.
For educational and responsible disclosure purposes only.
| CVE | Component | Status on 18.7.1 |
|---|
| CVE-2025-43510 | AppleM2ScalerCSCDriver (DarkSword Stage 5) | Unpatched (fixed in 18.7.2) |
| CVE-2026-28992 | IOHIDFamily FastPathUserClient | Unpatched (fixed in 18.7.9) |
| CVE-2026-43655 | AppleM2ScalerCSCDriver OOB read | Unpatched and never backported to 18.x |
| CVE-2026-20687 | Kernel UAF → write kernel memory | Unpatched (fixed in 18.7.7) |