
CVE-2026-28992 IOHIDFamily FastPathUserClient の競合状態 PoC — セキュリティ研究
セキュリティ研究リポジトリ。iOS 18.7.1 以前の IOHIDFamily の FastPathUserClient における競合状態を実証する 2 つの PoC アプリ。
⚠️ どちらの PoC もカーネルパニックを引き起こし、デバイスが再起動します。事前に作業を保存してください。
| フィールド | 詳細 |
|---|---|
| CVE | CVE-2026-28992 |
| コンポーネント | IOHIDFamily — IOHIDEventServiceFastPathUserClient |
| タイプ | メモリ破損 (競合状態 / UAF) |
| 到達可能な手段 | 通常のアプリサンドボックス、エンタイトルメントは不要 |
| 修正バージョン | iOS 18.7.9 / iOS 26.5 |
| 研究者 | Johnny Franks (@zeroxjf) |
sel0 (open/gate) は、initWithTask 中に保存されたエンタイトルメントフラグではなく、呼び出し元が提供する OSDictionary 内の FastPathHasEntitlement と FastPathMotionEventEntitlement をチェックします。サンドボックス化されたアプリは、入力辞書にこれらのキーを含めることでゲートを通過します。
そこから 2 つのベクトルが続きます:
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 を開くAOP バリアント:
AOPPanicPoc/AOPPanicPoc.xcodeproj を開くデバイスが再起動した後:
Panic ログ (.ips ファイル) を見つけるpanic-logs/ に保存し、分析のためにコミットするまたはターミナルを使用:
# After reboot, pull the log
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 ...
バックトレース内の関数名は、どのコードパスがトリガーされたかを正確に示します。
| 日付 | イベント |
|---|---|
| 不明 | Johnny Franks (@zeroxjf) によって発見されたバグ |
| 2026年5月11日 | iOS 18.7.9 / iOS 26.5 で修正 |
| 2026年6月21日 | 公開 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 で修正) |