
CVE-2026-28992 PoC per race condition in IOHIDFamily FastPathUserClient — ricerca sulla sicurezza
Repository di ricerca sulla sicurezza. Due app PoC che dimostrano le race condition in IOHIDFamily's FastPathUserClient su iOS 18.7.1 e versioni precedenti.
⚠️ Entrambi i PoC causeranno un kernel panic e il riavvio del dispositivo. Salva prima il tuo lavoro.
| Campo | Dettaglio |
|---|
| CVE | CVE-2026-28992 |
| Componente | IOHIDFamily — IOHIDEventServiceFastPathUserClient |
| Tipo | Corruzione della memoria (race condition / UAF) |
| Raggiungibile da | Sandbox normale delle app, zero entitlements richiesti |
| Corretto in | iOS 18.7.9 / iOS 26.5 |
| Ricercatore | Johnny Franks (@zeroxjf) |
sel0 (open/gate) verifica FastPathHasEntitlement e FastPathMotionEventEntitlement
nell'OSDictionary fornito dal chiamante anziché nei flag di entitlement memorizzati durante
initWithTask. Un'app in sandbox supera il gate includendo quelle chiavi nel proprio dict di input.
Da qui derivano due vettori:
UAFPoc/UAFPoc.xcodeproj
Race: close (sel1) elimina lo stato del provider e azzera l'offset +0x109 senza lock.
copyEvent (sel2) controlla l'offset +0x108 sotto un lock per-connessione, quindi chiama
il provider. Con più connessioni allo stesso provider, close e copyEvent vengono eseguiti in
domini di locking differenti sugli stessi oggetti condivisi lato provider.
Tipo di crash:
AOPPanicPoc/AOPPanicPoc.xcodeproj
Race: mach_port_destroy innesca didTerminate → teardown asincrono, non sincronizzato
con i percorsi sel0 open concorrenti su altre connessioni. Il teardown libera lo stato
esposto al provider mentre i thread opener lo iterano. Satura inoltre la mailbox dei provider
basati su SPU → timeout del watchdog AOP.
git clone https://github.com/clogan9019-dotcom/IOHIDFamily-PoC-Research.git
cd IOHIDFamily-PoC-Research
Variante UAF:
UAFPoc/UAFPoc.xcodeproj in XcodeVariante AOP:
AOPPanicPoc/AOPPanicPoc.xcodeproj in XcodeDopo che il dispositivo si riavvia:
Panic più recente (file .ips)panic-logs/ e committalo per l'analisiIn alternativa tramite Terminale:
# Dopo il riavvio, estrai il log
idevicecrashreport -u <UDID> ./panic-logs/
Su A18 (iPhone 16e) dovresti vedere uno dei seguenti:
MTE tag check fault — la variante UAF che libera e rialloca un oggetto heap con tagAOP watchdog timeout — la variante AOP che satura la mailbox SPUCampi chiave da annotare:
Kernel version: Darwin Kernel Version ...
Hardware Model: iPhone17,5
panic(cpu N ...): <la stringa di panic effettiva>
Backtrace:
... IOHIDEventServiceFastPathUserClient ...
I nomi delle funzioni nel backtrace indicano esattamente quale percorso di codice ha innescato il problema.
| Data | Evento |
|---|---|
| Sconosciuta | Bug scoperto da Johnny Franks (@zeroxjf) |
| 11 maggio 2026 | Corretto in iOS 18.7.9 / iOS 26.5 |
| 21 giugno 2026 | Codice PoC pubblico rilasciato |
Le varianti non corrette o i bug correlati possono essere segnalati a: https://security.apple.com/submit
Per i bug del kernel: descrivi componente, passaggi di riproduzione, tipo di crash e allega il log di panic .ips.
| CVE | Componente | Stato su 18.7.1 |
|---|---|---|
| CVE-2025-43510 | AppleM2ScalerCSCDriver (DarkSword Stage 5) | Non corretto (corretto in 18.7.2) |
| CVE-2026-28992 | IOHIDFamily FastPathUserClient | Non corretto (corretto in 18.7.9) |
| CVE-2026-43655 | AppleM2ScalerCSCDriver lettura OOB | Non corretto e mai backportato su 18.x |
| CVE-2026-20687 | UAF del kernel → scrittura in memoria del kernel | Non corretto (corretto in 18.7.7) |
Solo a scopo educativo e di divulgazione responsabile.