
CVE-2026-28992 IOHIDFamily FastPathUserClient состояние гонки PoC — исследование безопасности
Репозиторий для исследования безопасности. Два приложения PoC, демонстрирующие состояния гонки в IOHIDFamily's FastPathUserClient на iOS 18.7.1 и более ранних версиях.
⚠️ Оба PoC вызовут kernel panic и перезагрузят устройство. Сохраните работу сначала.
| Поле | Подробности |
|---|
| CVE | CVE-2026-28992 |
| Компонент | IOHIDFamily — IOHIDEventServiceFastPathUserClient |
| Тип | Повреждение памяти (состояние гонки / UAF) |
| Достижимо из | Песочница обычного приложения, не требуется никаких прав |
| Исправлено в | iOS 18.7.9 / iOS 26.5 |
| Исследователь | Johnny Franks (@zeroxjf) |
sel0 (open/gate) проверяет FastPathHasEntitlement и FastPathMotionEventEntitlement в словаре OSDictionary, предоставленном вызывающим, а не флаги прав, сохраненные во время initWithTask. Песочница приложение проходит проверку, включая эти ключи в свой входной словарь.
Отсюда следуют два вектора:
UAFPoc/UAFPoc.xcodeproj
Гонка: close (sel1) сбрасывает состояние провайдера и очищает смещение +0x109 без блокировки. copyEvent (sel2) проверяет смещение +0x108 под блокировкой на соединение, затем вызывает провайдера. Несколько соединений к одному провайдеру означают, что close и copyEvent выполняются в разных доменах блокировок на одних и тех же объектах на стороне провайдера.
Тип падения:
AOPPanicPoc/AOPPanicPoc.xcodeproj
Гонка: mach_port_destroy запускает асинхронный didTerminate → teardown, не синхронизированный с параллельными путями открытия sel0 на других соединениях. Teardown освобождает состояние, используемое провайдером, в то время как потоки открывателя итерируют его. Также насыщает почтовый ящик провайдеров на основе SPU → тайм-аут сторожевого таймера AOP.
git clone https://github.com/clogan9019-dotcom/IOHIDFamily-PoC-Research.git
cd IOHIDFamily-PoC-Research
Вариант UAF:
UAFPoc/UAFPoc.xcodeproj в XcodeВариант AOP:
AOPPanicPoc/AOPPanicPoc.xcodeproj в XcodeПосле перезагрузки устройства:
Panic (файл .ips)panic-logs/ и зафиксируйте для анализаАльтернативно через Терминал:
# После перезагрузки получите лог
idevicecrashreport -u <UDID> ./panic-logs/
На A18 (iPhone 16e) вы должны увидеть одно из:
MTE tag check fault — вариант UAF, освобождающий и перераспределяющий тегированный объект кучиAOP watchdog timeout — вариант AOP, насыщающий почтовый ящик SPUКлючевые поля:
Kernel version: Darwin Kernel Version ...
Hardware Model: iPhone17,5
panic(cpu N ...): <the actual panic string>
Backtrace:
... IOHIDEventServiceFastPathUserClient ...
Имена функций в backtrace точно указывают, какой путь кода был запущен.
| Дата | Событие |
|---|---|
| Неизвестно | Ошибка обнаружена Johnny Franks (@zeroxjf) |
| 11 мая 2026 | Исправлено в iOS 18.7.9 / iOS 26.5 |
| 21 июня 2026 | Публичный выпуск кода PoC |
Новые варианты или связанные ошибки можно сообщить по адресу: https://security.apple.com/submit
Для ошибок ядра: опишите компонент, шаги воспроизведения, тип падения и приложите лог паники .ips.
| CVE | Компонент | Статус на 18.7.1 |
|---|---|---|
| CVE-2025-43510 | AppleM2ScalerCSCDriver (DarkSword Stage 5) | Не исправлено (исправлено в 18.7.2) |
| CVE-2026-28992 | IOHIDFamily FastPathUserClient | Не исправлено (исправлено в 18.7.9) |
| CVE-2026-43655 | AppleM2ScalerCSCDriver OOB read | Не исправлено и никогда не переносилось на 18.x |
| CVE-2026-20687 | Kernel UAF → write kernel memory | Не исправлено (исправлено в 18.7.7) |
Только для образовательных целей и ответственного раскрытия.