
Фреймворк для эксплуатации CVE-2026-86950 — целочисленного переполнения в CoreGraphics: создаёт вредоносные шрифты TrueType и PDF-файлы, извлекает утечки ASLR и строит ROP-цепочки для ARM64.
Фреймворк для эксплуатации CVE-2026-86950 — критического целочисленного переполнения в растеризаторе сглаживания CoreGraphics от Apple, затрагивающего iOS 26.7 и macOS 26.7.
Целочисленное переполнение в aa_double_to_fixed() при рендеринге шрифтов вызывает запись за границы кучи через искажённые вычисления ограничивающего прямоугольника. Эксплуатируется с помощью вредоносных шрифтов TrueType в PDF-файлах.
exploit_full.py — генератор эксплойта для macOS (шрифт + PDF + ROP-цепочка)exploit_ios.py — вариант для iOS (упрощённая сложность, 5-уровневое масштабирование)leak_extractor.py — разбор дампов падений, вычисление обхода ASLRrop_builder.py — построение цепочки ROP-гаджетов для ARM64CVE-2026-86950_ArXiv.pdf — полная техническая статья (20 страниц, готова к рецензированию)exploit.ttf / ios_exploit.ttf — вредоносные шрифты (цепочка составных глифов)exploit.pdf / ios_exploit.pdf — PDF-файлы-триггеры со встроенными шрифтамиcve_2026_86950_payload.bin — бинарная ROP-цепочка для ARM64ACADEMIC_PAPER.md — исходник исследовательской статьи в MarkdownATTRIBUTION.md — сведения об авторах и ссылкиQUICK_START.txt — руководство по настройке за 5 минутMakefile — конфигурация сборкиrun_exploit.sh — автоматизированный 6-этапный конвейерpython3 exploit_full.py .
# Outputs: exploit.ttf, exploit.pdf, Makefile
python3 exploit_ios.py .
# Outputs: ios_exploit.ttf, ios_exploit.pdf, ios_payload.bin
python3 leak_extractor.py crash.log
# Parse lldb output, calculate library bases
python3 rop_builder.py 0x0000000192200000
# Generate: cve_2026_86950_payload.bin
make -C . all
make -C . run # Requires lldb debugger
CGImageSourceCreateThumbnailAtIndex() → падение с записью за границы буфера (OOB write)Этапы 4-6 требуют реального поиска гаджетов с помощью Ghidra/IDA Pro в бинарниках CoreGraphics.
int32_t aa_double_to_fixed(double px) {
double v = 0.5 + 4096.0 * px; // No overflow check
return (int32_t)v; // Cast overflow
}
Переполнение при px > 524 288 пикселей. ARM64-различие: FCVTZS насыщается до INT32_MAX, но векторный XTN усекает → инверсия ограничивающего прямоугольника → недостаточное выделение памяти в куче.
aa_double_to_fixed() в конвейере рендеринга| macOS | iOS | |
|---|---|---|
| Доставка | Прямой PDF | PDF-вложение (Messages/WhatsApp) |
| Процесс | Preview.app | Демон ImageIO (в песочнице) |
| Уровни масштабирования | 7 | 5 (ограничение памяти) |
| Привилегии | Пользователь | Демон (требуется побег из песочницы) |
✅ Охватывает:
⚠️ Требует внешнего исследования:
Исследование предоставлено для:
Неавторизованная эксплуатация незаконна.
Автор: 34zY
Дата: октябрь 2026
Статус: исправлено, образовательный фреймворк
Отказ от ответственности: Этот проект предназначен только для авторизованного тестирования безопасности. Неавторизованный доступ к компьютерным системам незаконен.