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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-65349 — Доказательство концепции для записи за пределами границ в XNU vfs_attr_pack_internal (getattrlist) на iOS 26.6, демонстрирующее повреждение кучи ядра и заметки по эксплуатации для подделки указателей PAC. | Kitploit
Инструменты/GitHubGitHub/bytev0rtex/cve-2026-65349
Безопасность iOSАнализ уязвимостейЭксплуатацияОбратная инженерияЭксплуатация Бинарных Файлов
GitHubbytev0rtex/cve-2026-65349

CVE-2026-65349

Доказательство концепции для записи за пределами границ в XNU vfs_attr_pack_internal (getattrlist) на iOS 26.6, демонстрирующее повреждение кучи ядра и заметки по эксплуатации для подделки указателей PAC.

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

Популярное

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

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

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

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

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

CVE-2026-65349 — запись за пределами буфера в vfs_attr_pack_internal (getattrlist)

Компонент: XNU VFS — vfs_attr_pack_internal (системный вызов getattrlist)
Затронуто: iOS / iPadOS 26.6 (23G71) и более ранние версии
Исправлено в: iOS / iPadOS 26.6.1 (23G83)
Тип: запись за пределами буфера вызывающего кода
Воздействие: повреждение кучи ядра; из контекста ядра (после получения доступа на чтение/запись к ядру) позволяет записать PAC-подписанный указатель в буфер, контролируемый атакующим


Авторы

Обнаружено анонимным исследователем
(согласно Apple Security Advisory — iOS 26.6.1)


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

vfs_attr_pack_internal перебирает запрошенную битовую карту атрибутов и последовательно записывает каждый атрибут в буфер вызывающего кода. Перед записью слота 51 (SETXATTR_SLOT) , не превысил ли текущий выходной сдвиг значение .

не проверяется
bufsize

Для файла с именем из 16 символов полный корректный вывод атрибутов составляет 0x1a4 (420) байт. Слот 51 начинается со смещения 0x198 (408 байт). Когда вызывающий код предоставляет буфер меньше 0x198 + 8, ядро записывает 8 байт за конец буфера:

root@kitploit:~
; vfs_attr_pack_internal (затронутый путь, 26.6 / 23G71)
; запись слота 51 — нет проверки границ перед сохранением
str  x_attr_data, [buf + 0x198]   ; OOB, если bufsize < 0x198 + 8

Битовая карта атрибутов

Допустимые маски атрибутов, подтверждённые проверкой на устройстве (getattrlist для имени файла из 16 символов, iOS 26.6):

ПолеМаска
commonattr0xffe7ffff (биты 19, 20 недействительны в этом ядре)
fileattr0x0000363f
forkattr0xffffe003

С этими масками для имени файла из 16 символов общий вывод = 0x1a4 байт. Выход за границы происходит в слоте 51 (buf+0x198) всякий раз, когда bufsize < 0x1a0.


Примечания по эксплуатации на iOS 26

На iOS 26 изоляция KHEAP_TEMP не позволяет записи за пределами буфера напрямую повредить соседние выделения кучи полезным образом из пользовательского пространства. В данном исследовании ошибка классифицируется как только повреждение кучи ядра:

  • Из пользовательского пространства: запись за пределами буфера попадает в собственный пользовательский стек/кучу вызывающего кода — это наблюдаемо, но не эксплуатируемо для повышения привилегий без дополнительного примитива.
  • Из контекста ядра (после примитива записи в ядро из CVE-2026-64788): запись PAC-подписанного указателя в буфер ядра через смещение за пределами буфера, затем запуск vfs_attr_pack_internal из контролируемой точки вызова.

В цепочке джейлбрейка iOS 26.6 эта ошибка используется на финальном этапе для записи PACIA-подделанного указателя в выделение ядра, смежное с буфером вызывающего кода.


Поведение PoC

poc_getattrlist_oob.c демонстрирует границу выхода за пределы буфера с помощью трёх вызовов:

ВызовРазмер буфераОжидаемый результат
164 байтаЯдро записывает 0x1a4 байт → выход за границы на buf+0x198 (344 Б за концом)
20x198 байтЗапись за пределами буфера начинается ровно в конце буфера
30x1a4 байтТочный допустимый размер → чистый успех

PoC создаёт имя файла из 16 символов (/var/root/aaaaaaaaaaaaaaaa) в качестве тестовой цели, выполняет все три вызова getattrlist() и выводит коды возврата. Журнал паники ядра (если она произойдёт) покажет сбой на buf+0x198.


Требования

  • iOS 26.6 (23G71) или более ранняя версия
  • Доступ на запись в /var/root/ (для создания тестового файла из 16 символов; путь можно изменить на любое доступное для записи место)
  • Никаких прав (entitlements) не требуется

Сборка

root@kitploit:~
# Автономный C-бинарник — фреймворки не нужны
clang -arch arm64 -o poc poc/poc_getattrlist_oob.c

# Для запуска на устройстве:
clang -arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) \
      -o poc poc/poc_getattrlist_oob.c
codesign -s "Apple Development" poc

Хронология

ДатаСобытие
2026-08-17Выпущена iOS 26.6.1 с исправлением
2026-08-17Apple опубликовала авторов в бюллетене безопасности

Ссылки

  • Apple Security Advisory — iOS 26.6.1
Скачать инструмент