Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-64788 — Доказательство концепции для CVE-2026-64788, use-after-free в расширении ядра IOGPUFamily на iOS 26.6, демонстрирующее эксплуатацию через создание текстур Metal и распыление кучи. | Kitploit
Инструменты/GitHubGitHub/bytev0rtex/cve-2026-64788
Безопасность iOSАнализ уязвимостейЭксплуатацияОбратная инженерияМобильная безопасностьЭксплуатация Бинарных Файлов
GitHubbytev0rtex/cve-2026-64788

CVE-2026-64788

Доказательство концепции для CVE-2026-64788, use-after-free в расширении ядра IOGPUFamily на iOS 26.6, демонстрирующее эксплуатацию через создание текстур Metal и распыление кучи.

Репозиторий
19 ч 40 мин назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

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

Компонент: расширение ядра IOGPUFamily (com.apple.iokit.IOGPUFamily)
Затрагивает: iOS / iPadOS 26.6 (23G71) и более ранние версии
Исправлено в: iOS / iPadOS 26.6.1 (23G83)
Тип: Use-After-Free в IOGPUDevice::create_resource_iosurface
Воздействие: повреждение памяти ядра; разыменование UAF подтверждено на A14 (iPhone 12)


Авторы

Обнаружено: f00l (@PPPF00L), 3ndy1 (@_3ndy1), Minghao Lin (@Y1nkoc), 云散花折, Arjanit Isufi
(согласно бюллетеню безопасности Apple — iOS 26.6.1)


Первопричина

IOGPUDevice::create_resource_iosurface выделяет объект IOGPUSysMemory (~0x100 байт, зона ) и регистрирует его в таблице ресурсов IOSurface устройства. Перед возвратом срабатывает проверка переполнения размеров через . Ветвь переполнения переходит к возврату ошибки , оставляя активную запись в таблице ресурсов, указывающую на освобождённую память.

kalloc.256
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

Устаревшая запись в таблице сохраняется до тех пор, пока тот же идентификатор ресурса не будет переиспользован или устройство не будет закрыто.


Разыменование UAF

IOGPUDevice::set_resource_purgeable(id) выполняет поиск устаревшего ID через get_resource_by_id(), находит висячую запись и обращается к ней невиртуально:

СмещениеОперацияОписание
+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; cbz → skip, если 0

Поведение PoC

PoC запускает UAF с помощью newTextureWithDescriptor:iosurface:plane: из Metal с подделанными размерами переполнения. Перед разыменованием 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 возвращает освобождённые объекты IOGPUSysMemory обратно в свободный список зоны со стабильным типом. Как [obj+0x10] (IOMemoryDescriptor), так и [obj+0x18] (IOGPUDevice) удерживают внешние счётчики ссылок и остаются активными после освобождения объекта. В результате completeMemory() всегда выполняется над корректными данными ivar — разыменование UAF подтверждено, но примитив чтения/записи ядра только через этот путь заблокирован на iOS 26 без вторичного примитива для обхода секвестрации зон.


Требования

  • iOS 26.6 (23G71) или более ранняя версия
  • GPU Apple A-серии (протестировано: 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-17Авторы указаны в бюллетене безопасности Apple

Ссылки

  • Бюллетень безопасности Apple — iOS 26.6.1
  • Публикация Full Disclosure
Скачать инструмент