
исследование по поиску бага и исправлению CVE-2026-84616 и CVE-2026-84607
[!IMPORTANT] Этот репозиторий создан при содействии исследованию ИИ-агентами
[!NOTE]
Открытое исследование
Вклад приветствуется
iOS 27.0, advisory 149034, компонент AVEVideoEncoder: «Песочничное приложение может выполнить произвольный код с привилегиями ядра» — «состояние гонки устранено за счёт улучшенного управления состоянием». В этом разборе: где находится исправление и что оно делает.
Ответ: новая проверка согласованности состояния для каждого кадра в com.apple.driver.AppleAVE2, которая
сравнивает eEncType клиента с sEnc.eType сессии и отклоняет кадр
при несовпадении. Проверяемое поле записывается через цепочку без блокировок — исправление через валидацию, а не через блокировку.
Исправление не вошло в GM. Оно появилось на шаге beta 2 → beta 4 цикла iOS 27.0:
| шаг | что изменилось |
|---|---|
b8 → GM 24A435 | только BTI (рост __text на +0x2168 = 2148 новых инструкций bti; −40 байт функционального кода) |
| b1 → GM | +7463 инструкции реального кода — работу выполнил бета-цикл |
| b2 → b4 | шаг исправления: +68 новых строк = сплошное усиление защиты памяти ядра + одна новая проверка состояния |
| b4 → b5 | только работа над функцией MCTF |
0xfffffff008734d14 ldr w8, [x22, #0x58] ; client eEncType
0xfffffff008734d18 ldr w9, [x19, #0x270] ; session sEnc.eType
0xfffffff008734d1c cmp w8, w9 ; the new state-consistency guard
0xfffffff008734d20 b.ne → divert ; mismatch NEVER reaches frame processing
EncType mismatch with session — отсутствует в beta 2, присутствует начиная с beta 4.sub_fffffff008733654.0xfffffff008737f98), и его цепочка записи (2 уровня, заканчивается косвенной диспетчеризацией) не вызывает
никаких вспомогательных функций блокировки — читатель и писатель находятся в разных доменах блокировок.Сплошная проверка b2→b4 также добавила ~22 проверки целочисленного переполнения в семействе
калькуляторов размера буфера AVE_CalcBufSizeOf* (площадь пикселей, DPB, LRB, выход HSC/MCTF, …):
ave.videoencoder / AppleVideoEncoder.bundle не диффился в пределах
окна (копии до исправления находятся в бета-версиях общих кэшей dyld).[!NOTE]
Отказ от ответственности
Все утверждения ссылаются на проверяемые артефакты; перепроверьте их, прежде чем доверять любому из них. Код эксплойта не включён. Исправление уже выпущено в iOS 27.0 (24A435) — этот репозиторий документирует уже исправленный код. использовать только в образовательных целях. Код эксплойта отсутствует.