
CVE-2026-28992 IOHIDFamily FastPathUserClient condition de course PoC — recherche en sécurité
Dépôt de recherche en sécurité. Deux applications PoC démontrant les race conditions dans le FastPathUserClient d'IOHIDFamily sur iOS 18.7.1 et versions antérieures.
⚠️ Les deux PoC provoqueront un kernel panic et redémarreront votre appareil. Sauvegardez d'abord votre travail.
| Champ | Détail |
|---|
| CVE | CVE-2026-28992 |
| Composant | IOHIDFamily — IOHIDEventServiceFastPathUserClient |
| Type | Corruption mémoire (race condition / UAF) |
| Accessible depuis | Sandbox d'application standard, aucun entitlement requis |
| Corrigé dans | iOS 18.7.9 / iOS 26.5 |
| Chercheur | Johnny Franks (@zeroxjf) |
sel0 (open/gate) vérifie FastPathHasEntitlement et FastPathMotionEventEntitlement
dans l'OSDictionary fourni par l'appelant plutôt que dans les flags d'entitlement stockés lors de
initWithTask. Une application sandboxée passe la vérification en incluant ces clés dans son dictionnaire d'entrée.
Deux vecteurs d'attaque en découlent :
UAFPoc/UAFPoc.xcodeproj
Race : close (sel1) supprime l'état du provider et efface l'offset +0x109 sans verrou.
copyEvent (sel2) vérifie l'offset +0x108 sous un verrou par connexion, puis effectue un appel dans
le provider. Plusieurs connexions au même provider impliquent que close et copyEvent s'exécutent dans
des domaines de verrouillage différents sur les mêmes objets partagés côté provider.
Type de crash :
AOPPanicPoc/AOPPanicPoc.xcodeproj
Race : mach_port_destroy déclenche un didTerminate → teardown asynchrone, non synchronisé
avec les chemins d'ouverture sel0 concurrents sur d'autres connexions. Le teardown libère l'état
côté provider tandis que les threads d'ouverture l'itèrent. Il sature également la mailbox des
providers basés sur SPU → timeout du watchdog AOP.
git clone https://github.com/clogan9019-dotcom/IOHIDFamily-PoC-Research.git
cd IOHIDFamily-PoC-Research
Variante UAF :
UAFPoc/UAFPoc.xcodeproj dans XcodeVariante AOP :
AOPPanicPoc/AOPPanicPoc.xcodeproj dans XcodeAprès le redémarrage de l'appareil :
Panic le plus récent (fichier .ips)panic-logs/ et committez-le pour analyseAlternative via le Terminal :
# After reboot, pull the log
idevicecrashreport -u <UDID> ./panic-logs/
Sur A18 (iPhone 16e), vous devriez voir l'un des éléments suivants :
MTE tag check fault — la variante UAF qui libère et réalloue un objet de tas taguéAOP watchdog timeout — la variante AOP qui sature la mailbox SPUChamps clés à noter :
Kernel version: Darwin Kernel Version ...
Hardware Model: iPhone17,5
panic(cpu N ...): <the actual panic string>
Backtrace:
... IOHIDEventServiceFastPathUserClient ...
Les noms de fonctions dans la backtrace vous indiquent exactement quel chemin de code a été déclenché.
| Date | Événement |
|---|---|
| Inconnue | Bug découvert par Johnny Franks (@zeroxjf) |
| 11 mai 2026 | Corrigé dans iOS 18.7.9 / iOS 26.5 |
| 21 juin 2026 | Code PoC public publié |
Les variantes non corrigées ou les bugs liés peuvent être signalés sur : https://security.apple.com/submit
Pour les bugs du noyau : décrivez le composant, les étapes de reproduction, le type de crash et joignez le journal de panic .ips.
| CVE | Composant | Statut sur 18.7.1 |
|---|---|---|
| CVE-2025-43510 | AppleM2ScalerCSCDriver (DarkSword Stage 5) | Non corrigé (corrigé en 18.7.2) |
| CVE-2026-28992 | IOHIDFamily FastPathUserClient | Non corrigé (corrigé en 18.7.9) |
| CVE-2026-43655 | AppleM2ScalerCSCDriver — lecture OOB | Non corrigé et jamais rétroporté vers 18.x |
| CVE-2026-20687 | UAF du noyau → écriture en mémoire du noyau | Non corrigé (corrigé en 18.7.7) |
À des fins éducatives et de divulgation responsable uniquement.