
CVE-2026-28992 IOHIDFamily FastPathUserClient race condition PoC — pesquisa de segurança
Repositório de pesquisa de segurança. Dois aplicativos PoC demonstrando as condições de corrida no FastPathUserClient do IOHIDFamily no iOS 18.7.1 e anteriores.
⚠️ Ambos os PoCs causarão kernel panic e reiniciarão seu dispositivo. Salve seu trabalho primeiro.
| Campo | Detalhe |
|---|---|
| CVE | CVE-2026-28992 |
| Componente | IOHIDFamily — IOHIDEventServiceFastPathUserClient |
| Tipo | Corrupção de memória (condição de corrida / UAF) |
| Acessível a partir de | Sandbox normal de aplicativo, zero entitlements necessários |
| Corrigido em | iOS 18.7.9 / iOS 26.5 |
| Pesquisador | Johnny Franks (@zeroxjf) |
sel0 (open/gate) verifica FastPathHasEntitlement e FastPathMotionEventEntitlement
no OSDictionary fornecido pelo chamador, em vez dos flags de entitlement armazenados durante
initWithTask. Um aplicativo em sandbox passa pela verificação incluindo essas chaves em seu dicionário de entrada.
Dois vetores surgem a partir daí:
UAFPoc/UAFPoc.xcodeproj
Corrida: close (sel1) remove o estado do provider e limpa o offset +0x109 sem um lock.
copyEvent (sel2) verifica o offset +0x108 sob um lock por conexão e então faz chamadas para
o provider. Múltiplas conexões ao mesmo provider fazem com que close e copyEvent sejam
executados em domínios de lock diferentes sobre os mesmos objetos compartilhados do lado do provider.
Tipo de crash:
AOPPanicPoc/AOPPanicPoc.xcodeproj
Corrida: mach_port_destroy dispara didTerminate → teardown assíncrono, não sincronizado
com caminhos de abertura sel0 concorrentes em outras conexões. O teardown libera o estado voltado
para o provider enquanto threads de abertura o iteram. Também satura a mailbox dos providers com
suporte SPU → estouro do watchdog do AOP.
git clone https://github.com/clogan9019-dotcom/IOHIDFamily-PoC-Research.git
cd IOHIDFamily-PoC-Research
Variante UAF:
UAFPoc/UAFPoc.xcodeproj no XcodeVariante AOP:
AOPPanicPoc/AOPPanicPoc.xcodeproj no XcodeApós o dispositivo reiniciar:
Panic mais recente (arquivo .ips)panic-logs/ e faça commit para análiseAlternativamente, via Terminal:
# After reboot, pull the log
idevicecrashreport -u <UDID> ./panic-logs/
No A18 (iPhone 16e) você deve ver um dos seguintes:
MTE tag check fault — a variante UAF liberando e realocando um objeto de heap com tagAOP watchdog timeout — a variante AOP saturando a mailbox da SPUCampos-chave a observar:
Kernel version: Darwin Kernel Version ...
Hardware Model: iPhone17,5
panic(cpu N ...): <the actual panic string>
Backtrace:
... IOHIDEventServiceFastPathUserClient ...
Os nomes de funções no backtrace mostram exatamente qual caminho de código foi acionado.
| Data | Evento |
|---|---|
| Desconhecida | Bug descoberto por Johnny Franks (@zeroxjf) |
| 11 de maio de 2026 | Corrigido no iOS 18.7.9 / iOS 26.5 |
| 21 de junho de 2026 | Código PoC público lançado |
Variantes sem correção ou bugs relacionados podem ser reportados em: https://security.apple.com/submit
Para bugs do kernel: descreva o componente, os passos de reprodução, o tipo de crash e anexe o log de panic .ips.
Apenas para fins educacionais e de divulgação responsável.
| CVE | Componente | Status no 18.7.1 |
|---|
| CVE-2025-43510 | AppleM2ScalerCSCDriver (DarkSword Stage 5) | Sem correção (corrigido no 18.7.2) |
| CVE-2026-28992 | IOHIDFamily FastPathUserClient | Sem correção (corrigido no 18.7.9) |
| CVE-2026-43655 | AppleM2ScalerCSCDriver leitura OOB | Sem correção e nunca portado para 18.x |
| CVE-2026-20687 | UAF do kernel → escrita na memória do kernel | Sem correção (corrigido no 18.7.7) |