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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-20700 — PoC для CVE-2026-20700, демонстрирующий page-in linking в dyld как оракул подписи PAC на arm64e. Включает собственноручно созданные генераторы Mach-O, инструменты анализа chained-fixup и детерминированные пресеты краша/эксплойта для iOS 18.5. | Kitploit
Инструменты/GitHubGitHub/r3n3r0/cve-2026-20700
Анализ уязвимостейЭксплуатацияОбратная инженерияШелл-кодCTFАппаратная БезопасностьСтатьи и ИсследованияОбучение и ОбразованиеРазработка Полезной НагрузкиЭксплуатация Бинарных ФайловЛаборатории и Практика
1032 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHub
r3n3r0/cve-2026-20700

CVE-2026-20700

PoC для CVE-2026-20700, демонстрирующий page-in linking в dyld как оракул подписи PAC на arm64e. Включает собственноручно созданные генераторы Mach-O, инструменты анализа chained-fixup и детерминированные пресеты краша/эксплойта для iOS 18.5.

Репозиторий

dyld-signing-oracle-poc

Контролируемое исследование подкачки страниц dyld и механизма цепочечных исправлений как оракула подписи PAC, в контексте CVE-2026-20700.

На arm64e каждый указатель на функцию аппаратно аутентифицирован. Цель здесь — показать, что dyld можно заставить — с помощью специально созданного Mach-O — создавать PAC-валидные указатели на выбранные атакующим слоты, используя только свой собственный нормальный механизм исправлений.

Протестировано на: iPhone 14 (iOS 18.5, arm64e).


Что это демонстрирует

  1. Контролируемое связывание цепочечного исправления — dyld принимает специально созданный Mach-O dylib и записывает PAC-валидные указатели на функции в выбранные слоты собственного __DATA.
  2. Детерминированный сбой в fixupPage64 — некорректные значения page_start / next выводят dyld за границы страницы, что доказывает достижимость ветвления.
  3. Исполнение цикла обработки событий — PAC-валидный указатель, записанный dyld, регистрируется как обработчик таймера dispatch_source_t и вызывается естественным образом через цикл событий, без прямого вызова из кода PoC.

Структура репозитория

root@kitploit:~
dyld-signing-oracle-poc/
├── Makefile                        ← управляет полным конвейером
├── src/
│   └── launcher.c                  ← загрузчик iOS (2 потока + цепочка диспетчера)
├── generators/
│   ├── gen_exports.py              ← генерирует exports.c  (N фиктивных символов)
│   ├── gen_client.py               ← генерирует client.c  (N импортов, нагрузка на ворота dyld)
│   └── gen_malformed_dylib.py      ← генерирует libmalformed.dylib (специально созданный Mach-O)
├── tools/
│   ├── scan_pointers.py            ← классифицирует секции указателей Mach-O как W/R
│   └── inspect_fixups.py           ← разбирает заголовок LC_DYLD_CHAINED_FIXUPS
└── blog/
    ├── it/
    │   └── dyld-signing-oracle.md  ← подробное описание на итальянском
    └── en/
        └── dyld-signing-oracle.md  ← подробное описание на английском

Результаты сборки (не сохраняются)


Требования

  • macOS с инструментами командной строки Xcode
  • iOS SDK (xcrun --sdk iphoneos --show-sdk-path)
  • Python 3
  • Для тестирования на устройстве: Sideloadly или сертификат разработчика + профиль подготовки

Сборка

root@kitploit:~
# Полная сборка по умолчанию (arm64, 99k символов)
make

# Быстрая сборка для итераций
make SYMBOLS=10000

Предустановки

root@kitploit:~
# Детерминированный сбой в fixupPage64 (доказательство достижимости ветвления)
make stress

# Стабильная запись-куда-угодно внутри образа
make exploit

# dyld записывает PAC-валидный указатель → диспетчер вызывает его естественным образом
make chain_close

Инструменты анализа

root@kitploit:~
# Проверить макет сгенерированного блока цепочечных исправлений
make verify

# Разобрать заголовок LC_DYLD_CHAINED_FIXUPS libmalformed.dylib
make inspect

# Сканировать секции указателей (GOT/неленивые) в скомпилированных бинарниках
make scan

Настраиваемые параметры


Установка на устройство

root@kitploit:~
# Ad-hoc подпись (Sideloadly)
make chain_close
# перетащите PoCApp.ipa в Sideloadly

# Настоящий сертификат
make resign IDENTITY="iPhone Developer: ..." PROFILE=embedded.mobileprovision

# Мониторинг логов
idevicesyslog | grep "POC"

Как это работает

Порядок загрузки в рантайме внутри PoCApp:

  1. libexports.dylib — загружается первым (RTLD_GLOBAL), предоставляет write_target_value и attacker_hook для любого последующего dlopen.
  2. libclient.dylib — загружается потоком B (стек 128 КБ); около 99k целей связывания нагружают ворота подкачки страниц dyld.
  3. libmalformed.dylib — загружается потоком A; специально созданная цепочка цепочечных исправлений заставляет dyld разрешить и записать _write_target_value (и, опционально, _attacker_hook) в __DATA+0x10 / +0x20.
  4. Поток A читает записанные слоты, проверяет канарейки, вызывает указатель функции, записанный dyld.
  5. В режиме chain_close главный поток регистрирует __DATA+0x20 как обработчик таймера — цикл событий вызывает его через 1 секунду без прямого вызова из кода PoC.

Блог

Полное техническое описание на итальянском и английском. Охватывает: аппаратные механизмы PAC, dyld как производитель указателей, кодирование цепочечных исправлений с нуля, механику ворот подкачки страниц, тонкости создания Mach-O (sizeofcmds, количество секций, шаг), макет данных с проверкой канареек, ворота 99k символов, доказательство достижимости сбоя, стабильный примитив внутри образа, концепцию оракула подписи arm64e, цепочку закрытия таймера диспетчера.

  • 🇮🇹 Italiano — blog/it/dyld-signing-oracle.md
  • 🇬🇧 English — blog/en/dyld-signing-oracle.md
Скачать инструмент
ФайлСоздан с помощью
exports.cgenerators/gen_exports.py + символы-маяки Makefile
client.cgenerators/gen_client.py
libmalformed.dylibgenerators/gen_malformed_dylib.py
libexports.dylibclang из exports.c
libclient.dylibclang из client.c
PoCAppclang из src/launcher.c
PoCApp.ipaшаг package Makefile
ПеременнаяПо умолчаниюОписание
SYMBOLS99000Количество целей связывания в libclient (< 100k для ворот до 26.3, < 64k для 26.3+)
STACK_KB128Размер стека рабочего потока в КБ
BURN_KB0КБ стека для потребления перед dlopen (0 = авто)
MARGIN_KB24Запас для автоматического потребления
ARM64E0Использовать формат DYLD_CHAINED_PTR_ARM64E_USERLAND24
MALFORM_PAGEIN0Включить некорректную цепочку подкачки страниц
MALFORM_TARGET_OFFSET—Целевое смещение внутри __DATA (например, 0x10)
CHAIN_CLOSE0Второй слот → _attacker_hook, включить демонстрацию диспетчера
dispatch_source_t