
CVE-2026-28992 IOHIDFamily FastPathUserClient Race Condition PoC — Sicherheitsforschung
Sicherheitsforschungs-Repository. Zwei PoC-Apps, die die Race Conditions in IOHIDFamily's FastPathUserClient auf iOS 18.7.1 und früher demonstrieren.
⚠️ Beide PoCs verursachen einen Kernel-Panic und starten Ihr Gerät neu. Speichern Sie vorher Ihre Arbeit.
| Feld | Detail |
|---|---|
| CVE | CVE-2026-28992 |
| Komponente | IOHIDFamily — IOHIDEventServiceFastPathUserClient |
| Typ | Speicherkorruption (Race Condition / UAF) |
| Erreichbar von | Normaler App-Sandkasten, keine Berechtigungen erforderlich |
| Behoben in | iOS 18.7.9 / iOS 26.5 |
| Forscher | Johnny Franks (@zeroxjf) |
sel0 (open/gate) prüft FastPathHasEntitlement und FastPathMotionEventEntitlement
im vom Aufrufer bereitgestellten OSDictionary anstatt der während initWithTask gespeicherten Berechtigungsflags.
Eine sandboxierte App umgeht die Prüfung, indem sie diese Schlüssel in ihr Eingabe-Dictionary aufnimmt.
Daraus ergeben sich zwei Vektoren:
UAFPoc/UAFPoc.xcodeproj
Race: close (sel1) verwirft den Provider-Status und löscht Offset +0x109 ohne eine Sperre.
copyEvent (sel2) prüft Offset +0x108 unter einer verbindungsspezifischen Sperre und ruft dann den Provider auf.
Mehrere Verbindungen zum selben Provider bedeuten, dass close und copyEvent in unterschiedlichen Sperrbereichen auf denselben gemeinsam genutzten Provider-Objekten ausgeführt werden.
Absturztyp:
AOPPanicPoc/AOPPanicPoc.xcodeproj
Race: mach_port_destroy löst asynchrones didTerminate → teardown aus, unsynchronisiert
mit gleichzeitigen sel0-Open-Pfaden auf anderen Verbindungen. Teardown gibt providerbezogenen Zustand frei, während Opener-Threads darüber iterieren. Sättigt auch den Mailbox von SPU-gestützten Providern → AOP-Watchdog-Timeout.
git clone https://github.com/clogan9019-dotcom/IOHIDFamily-PoC-Research.git
cd IOHIDFamily-PoC-Research
UAF-Variante:
UAFPoc/UAFPoc.xcodeproj in XcodeAOP-Variante:
AOPPanicPoc/AOPPanicPoc.xcodeproj in XcodeNachdem das Gerät neu gestartet ist:
Panic-Protokoll (.ips-Datei) findenpanic-logs/ speichern und zur Analyse committenAlternativ über Terminal:
# Nach Neustart das Protokoll abrufen
idevicecrashreport -u <UDID> ./panic-logs/
Auf A18 (iPhone 16e) sollten Sie eines der folgenden sehen:
MTE tag check fault — die UAF-Variante, die ein getaggtes Heap-Objekt freigibt und neu alloziertAOP watchdog timeout — die AOP-Variante, die die SPU-Mailbox sättigtWichtige Felder zur Beachtung:
Kernel version: Darwin Kernel Version ...
Hardware Model: iPhone17,5
panic(cpu N ...): <the actual panic string>
Backtrace:
... IOHIDEventServiceFastPathUserClient ...
Die Funktionsnamen im Backtrace zeigen Ihnen genau, welcher Codepfad ausgelöst wurde.
| Datum | Ereignis |
|---|---|
| Unbekannt | Fehler entdeckt von Johnny Franks (@zeroxjf) |
| 11. Mai 2026 | Behoben in iOS 18.7.9 / iOS 26.5 |
| 21. Juni 2026 | Öffentlicher PoC-Code veröffentlicht |
Nicht behobene Varianten oder verwandte Fehler können gemeldet werden unter: https://security.apple.com/submit
Bei Kernel-Fehlern: Komponente, Reproduktionsschritte, Absturztyp beschreiben und das .ips-Panik-Protokoll anhängen.
| CVE | Komponente | Status auf 18.7.1 |
|---|---|---|
| CVE-2025-43510 | AppleM2ScalerCSCDriver (DarkSword Stage 5) | Nicht behoben (behoben in 18.7.2) |
| CVE-2026-28992 | IOHIDFamily FastPathUserClient | Nicht behoben (behoben in 18.7.9) |
| CVE-2026-43655 | AppleM2ScalerCSCDriver OOB read | Nicht behoben und nie auf 18.x zurückportiert |
| CVE-2026-20687 | Kernel UAF → write kernel memory | Nicht behoben (behoben in 18.7.7) |
Nur zu Bildungs- und verantwortungsvollen Offenlegungszwecken.