Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/bytev0rtex/cve-2026-64788
iOSセキュリティ脆弱性分析エクスプロイトリバースエンジニアリングモバイルセキュリティバイナリエクスプロイト
GitHubbytev0rtex/cve-2026-64788

CVE-2026-64788

CVE-2026-64788の概念実証。iOS 26.6のIOGPUFamilyカーネル拡張におけるuse-after-freeであり、Metalテクスチャ生成とヒープスプレーによる悪用を実証する。

リポジトリを見る
19時間40分前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-64788 — IOGPUFamily の Use-After-Free

コンポーネント: IOGPUFamily カーネル拡張(com.apple.iokit.IOGPUFamily)
影響を受けるバージョン: iOS / iPadOS 26.6(23G71)以前
修正バージョン: iOS / iPadOS 26.6.1(23G83)
種別: IOGPUDevice::create_resource_iosurface における Use-After-Free
影響: カーネルメモリ破壊。A14(iPhone 12)で UAF の逆参照を確認


クレジット

発見者: f00l(@PPPF00L)、3ndy1(@_3ndy1)、Minghao Lin(@Y1nkoc)、云散花折、Arjanit Isufi
(Apple セキュリティアドバイザリ — iOS 26.6.1 より)


根本原因

IOGPUDevice::create_resource_iosurface は IOGPUSysMemory オブジェクト(約 0x100 バイト、kalloc.256 ゾーン)を割り当て、デバイスの IOSurface リソーステーブルに登録します。戻る前に、ADDS width+height → b.hs による次元オーバーフローチェックが発動します。オーバーフローパスは オブジェクトを解放せずに エラーリターンへ分岐し、解放済みメモリを指すライブエントリがリソーステーブルに残ります。

root@kitploit:~
create_resource_iosurface:
  kalloc(0x100) → obj          ; IOGPUSysMemory を割り当て
  table[new_id] = obj           ; 参照付きで登録
  ADDS w_result, w_width, w_height
  b.hs error_path               ; ← オーバーフロー: ここへジャンプ
error_path:
  ; オブジェクトは解放されず、テーブルエントリもクリアされない
  return kIOReturnInvalid

古いテーブルエントリは、同じリソース ID が再利用されるかデバイスが閉じられるまで残り続けます。


UAF の逆参照

IOGPUDevice::set_resource_purgeable(id) は get_resource_by_id() で古い ID を検索し、ダングリングエントリを見つけて非仮想的にアクセスします:


PoC の動作

PoC は Metal の newTextureWithDescriptor:iosurface:plane: を細工したオーバーフロー次元で使用して UAF をトリガーします。UAF の逆参照の前に:

  • 300× MTLBuffer(0x100, StorageModeShared) をスプレーして解放された kalloc.256 スロットを埋める
  • スプレーデータは [+0x10]=0、[+0x24]=0、[+0x28]=0 を設定 → Call2 と Call3 は安全にスキップされる
  • UAF の逆参照は攻撃者が制御するヒープメモリ上で実行される

トリガー検出: 存在しないリソースに対する set_resource_purgeable は 0xe00002c2 を返します。UAF + スプレーでスロットが再利用された後、同じ呼び出しは 0xe0002be(リソースが見つかり、Call1 が発火)を返します — 古いエントリがスプレーデータで処理されていることを確認します。


iOS 26 での悪用に関するメモ

iOS 26 のゾーン隔離(zone sequestration)により、解放された IOGPUSysMemory オブジェクトは型安定ゾーンのフリーリストに戻されます。[obj+0x10](IOMemoryDescriptor)と [obj+0x18](IOGPUDevice)はどちらも外部参照カウントを保持しており、オブジェクト解放後も生存し続けます。その結果、completeMemory() は常に有効な ivar データ上で実行されます — UAF の逆参照は確認されていますが、iOS 26 ではこの経路のみによるカーネル読み書きプリミティブは、ゾーン隔離を破る二次プリミティブなしではブロックされます。


要件

  • iOS 26.6(23G71)以前
  • Apple A シリーズ GPU(テスト済み: A14 Bionic、iPhone 12)
  • 権限(entitlements)は不要 — Metal 対応のサンドボックス化されたアプリから到達可能

ビルド

root@kitploit:~
clang -arch arm64 -framework Metal -framework IOSurface \
      -framework IOKit -framework Foundation \
      -o poc poc/poc_iogpu_uaf.m

または Xcode で開き、有効な署名チームを設定してデバイス上で実行します。


タイムライン

日付イベント
2026-08-17修正を含む iOS 26.6.1 がリリース
2026-08-17Apple がセキュリティアドバイザリでクレジットを公開

参考情報

  • Apple セキュリティアドバイザリ — iOS 26.6.1
  • Full Disclosure 投稿
ツールをダウンロード
オフセット操作説明
+0x010cldaddl w9(-4), w8, [obj+0x24][obj+0x24] のアトミック減算。旧値 → w8
+0x0128cbz w8, skip; ldr x1, [obj+0x28]旧 [+0x24] != 0 の場合: [obj+0x28] を IOGPUMemory::setAllocation の引数としてロード
+0x0134ldr x0, [obj+0x10][obj+0x10] を IOCommandGate の引数としてロード。0 の場合は cbz → skip