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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-64747 — Анализ первопричины и PoC достижимости для CVE-2026-64747 — переполнения буфера в расширении ядра AppleAVE2. Включает восстановленный проводной протокол IOKit, математику переполнения и пользовательский PoC, управляющий путём настройки. | Kitploit
Инструменты/GitHubGitHub/eddinos2/cve-2026-64747
Фреймворки для эксплойтовАнализ уязвимостейЭксплуатацияОбратная инженерияАппаратная БезопасностьЭксплуатация Бинарных Файлов
GitHubeddinos2/cve-2026-64747

CVE-2026-64747

Анализ первопричины и PoC достижимости для CVE-2026-64747 — переполнения буфера в расширении ядра AppleAVE2. Включает восстановленный проводной протокол IOKit, математику переполнения и пользовательский PoC, управляющий путём настройки.

Репозиторий
2021 дней назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-64747 — драйвер ядра AppleAVE2: формат провода + PoC достижимости

Анализ первопричины и proof-of-concept достижимости для macOS по CVE-2026-64747, переполнению буфера в расширении ядра видеокодера AppleAVE2 (com.apple.driver.AppleAVE2), исправленному в macOS 26.6 (kext 905.40.1).

AppleAVE2 — Воздействие: приложение может выполнить произвольный код с привилегиями ядра. Переполнение буфера при вычислении размера рабочего буфера кодера было устранено улучшенной проверкой границ.

Этот репозиторий документирует полностью реверснутый IOKit wire-протокол AppleAVE2UserClient (создание сессии → конфигурация → обработка каждого кадра), точное место переполнения (32-битный калькулятор размера рабочего буфера LRB в HEVC 10-битном многопроходном пути) и userspace PoC, который открывает user client, проводит путь конфигурации через стек валидации ядра и демонстрирует разницу между уязвимой (905.36.1) и исправленной (905.40.1) сборками.

Уровень (честно): достижимость + полный RE протокола + аналитически доказанная математика переполнения. Не RCE, без демонстрации живого переполнения — лабораторный хост работает на исправленном kext, а аппаратный шлюз возможностей (присутствующий в обеих сборках) отклоняет переполняющие размеры до запуска уязвимого калькулятора. Для срабатывания переполнения нужна цель, чья таблица возможностей допускает требуемые размеры (см. FIRE_READY.md §5-6).

Содержание

файлчто это
poc_ave2_reach.cIOKit userspace PoC: открывает AppleAVE2UserClient, создаёт сессию, проводит конфигурацию с реверснутыми структурами. Права не требуются.
ave2_wire.hРеверснутый wire-формат: номера селекторов, размеры структур и каждое значимое смещение поля (width/height, encType, views/layers, chroma, bit depth)
WIRE_FORMAT.mdСправочник по wire-формату: раскладка dispatch-таблицы, особенность PAC, контракты по селекторам
FIRE_READY.mdМатематика переполнения (LRB-калькулятор режима 5), точный вход для его срабатывания, доказательства запуска на пропатченном хосте и оставшиеся неизвестные
evidence/Захват ioreg + журналы ядра с запусков на пропатченном хосте (прохождение стека валидации)

Сборка и запуск

root@kitploit:~
clang -O0 -g -arch arm64 -framework IOKit -framework CoreFoundation \
      -o poc_ave2_reach poc_ave2_reach.c
./poc_ave2_reach        # root не требуется; сервис открывается из пользовательского контекста

Баг в одном абзаце

Кодер AppleAVE2 вычисляет размер рабочего буфера LRB (lookaside reference buffer) с 32-битной арифметикой и без проверки переполнения. В HEVC 10-битном многопроходном пути (калькулятор вызывается с param_2 = 5) такие размеры, как 64656×8080 (которые проходят ограничение драйвера w*h ≤ 0x1FFE0000), делают сумму компонентов 0x80000000 — установлен знаковый бит. Уязвимый калькулятор возвращает голую 32-битную сумму; размер далее трактуется как отрицательный, выделяется буфер DART/IOMMU заниженного размера, и DMA кодера записывает за его пределы → повреждение кучи ядра/DART → выполнение кода в ядре. Исправленный калькулятор добавляет проверки знака по каждому компоненту и 64-битную проверку суммы и регистрирует LRB size overflow.

Ключевые результаты RE

  • Dispatch-таблица декодирована из секции __const метакласса (строки со шагом 0x18 = {func, inSize<<32, outSize<<32}, с особенностью PAC-указателя).
  • IOServiceOpen обязательно должен использовать type=1 (type=0 → создание отклоняется).
  • sel1 = CREATE (структура 0x920 байт: строка версии @+0x28, encType @+0x918), sel2 = DESTROY, sel4 = CONFIGURE (структура 0x1a0a0 байт) = точка входа CVE.
  • Width @ вход конфигурации +0xd90, height +0xd94; конфигурация должна идти через IOConnectCallAsyncStructMethod (синхронный путь отклоняется на шлюзе IO_Config:337 до валидации).
  • Полное прохождение стека валидации задокументировано на пропатченном хосте (запуски 4-7): асинхронный шлюз → ограничение размеров → шлюзы iNumViews/iNumLayers → аппаратный шлюз возможностей устройства, который сейчас блокирует переполнение.

Для образовательных и защитных исследовательских целей. Баг исправлен в текущей macOS; тестируйте только на оборудовании, которым владеете.

Скачать инструмент