Этот вопрос долго не давал покоя даже самим разработчикам — но
Итак, серьёзных ступеней защиты ядра на момент написания статьи (09.08.2019) всего шесть: KPP, KTRR, APRR, CoreTrust, PAC, PPL. О каждой из ступеней подробно будет расписано ниже (конечно же, на уровне понимания обычного пользователя).
Список «литературы», использованный для написания материала:
KPP (WatchTower) — Kernel Integrity (Patch) Protection
Самая первая попытка защитить части ядра от перезаписи. Впервые она была показана в iOS 9 beta для устройств 64-бит. Она успешно была обойдена
Описание, представленное разработчиком
Возможность обхода: сделан перманентный для всех прошивок и устройств,доступен в исходном коде джейлбрейка yalu (doubleh3lix) для iOS 10.x.
KTRR — Kernel Text Readonly Region
KPP (WatchTower) является неким её «прототипом» — начиная c iPhone 7 Apple начала защищать свои устройства сильнее. Начиная с iOS 10 впервые была представлена KTRR — эволюционный KPP, что оказался явно мощнее своего предшественника.
В отличие от KPP (WatchTower), KTRR реализован уже не на уровне операционной системы, а аппаратными возможностями. Как заявил Лука Тодеско два года назад, «ещё эту защиту ошибочно называют AMCC». На самом деле, никакой тройной защиты «KTRR, AMCC и memprot» не существует. Есть только одна — KTRR.
Более подробное исследование, как работает данная защита, сделал разработчик Siguza, и опубликовал у себя на
Возможность обхода: полностью обойти KTRR никогда не представится возможным. Оная существует лишь частично, как подчёркивает в презентации Siguza, при помощи специального отладчика, сделанного Ian Beer. Также, если будет найдена низкоуровневая уязвимость (наподобие De Rebus Antiquis в iBoot), KTRR можно будет отключить — именно сейчас это можно сделать при помощи bootROM-уязвимости checkm8 на устройствах с процессорами А10(Х) и А11.
Первая уязвимость была представлена в джейлбрейке iOS 10.0-10.1.1 для iPhone 7, что собрал Лука Тодеско — yaluX+extra_recipe. Ознакомиться с её исходным кодом можно на
Вторая уязвимость была представлена
APRR — Access Protection ReRouting
Наращивание системы защит Apple происходит полным ходом — и теперь Apple представляет APRR — грубо говоря, даже в чём-то сказать, это KTRR 2-го поколения. Только вот APRR — это, если верить Джонатану Левину, улучшенный KTRR, но софтверный. По сути, там, где есть APRR, находится двойная защита ядра — KTRR и APRR.
Более подробное описание Siguza представил очень недавно, у себя на
Возможность обхода: как отметил Siguza в своём описании, «APRR — отличная фича, даже если её части несколько сломаны». Первая возможность взлома была уже представлена и доступна на
PPL — Page Protection Layer
Как объявил Siguza, это «реальная смена правил игры в А12». Используется для защиты «кэша доверия» — это одна из защит в iOS 12+, что не позволяет запускать сторонние файлы помимо CoreTrust.
Возможность обхода: как мы помним, джейлбрейки unc0ver и Electra не обходят этот самый кэш, а включают в него файлы — это означает, что с PPL можно жить. Насчёт побороть — если это не аппаратная функция, то это возможно. Пока что PPL не был взломан ни разу, но… кто знает.
CoreTrust
На этом, пожалуй, закончим о защите ядра от изменений и поговорим о более «приземлённых» вещах. Конечно же, оной является CoreTrust — защита, что, по сути, ограничивает запуск бинарных файлов, что не были подписаны сертификатом Apple.
Возможность обхода: это реально, достижимо. В unc0ver, как мы знаем, CoreTrust обходится подписью каждого файла специальным сертификатом, а Chimera же, наоборот, ломает эту линию защиты. Пока что о закрытии этих двух методов объявлено не было.
PAC — Pointer Authentification Code
Отличительная особенность данной линии защиты в том, что она создана не компанией Apple, а создателями архитектуры arm. Впрочем, Siguza же в презентации отмечает, что «PAC была значительно доработана Apple». Детальный анализ создал Брендон Азад и
Согласно
Возможность обхода: тяжело, если верить словам Siguza, но всё же возможно.
Единственная возможность обхода данного слоя защиты была представлена Брендоном Азадом вместе с уязвимостью
KPPbypass / KPPLess-джейлбрейк: что лучше?
Главная линия защиты, которая отвечает за этот вопрос — KPP / KTRR / APRR. О возможностях обхода подобных защит было написано выше.
Преимущества обхода KPP / KTRR:
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
, пользуясь помощью нескольких других разработчиков, наконец, смог полностью ответить на все эти вопросы, завернув это всё в презентацию на конференции BlackHat USA 2019.Итак, серьёзных ступеней защиты ядра на момент написания статьи (09.08.2019) всего шесть: KPP, KTRR, APRR, CoreTrust, PAC, PPL. О каждой из ступеней подробно будет расписано ниже (конечно же, на уровне понимания обычного пользователя).
Список «литературы», использованный для написания материала:
- Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
KPP (WatchTower) — Kernel Integrity (Patch) Protection
Самая первая попытка защитить части ядра от перезаписи. Впервые она была показана в iOS 9 beta для устройств 64-бит. Она успешно была обойдена
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
.Описание, представленное разработчиком
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
(только для разработчиков) — Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
.Возможность обхода: сделан перманентный для всех прошивок и устройств,доступен в исходном коде джейлбрейка yalu (doubleh3lix) для iOS 10.x.
Устройства, где присутствует KPP: iPhone (5s, 6 [+], 6s [+], SE), iPod touch (6-го поколения), iPad (5-го поколения), iPad Air (1, 2), iPad mini (2, 3, 4), iPad Pro (1-го поколения).
KTRR — Kernel Text Readonly Region
KPP (WatchTower) является неким её «прототипом» — начиная c iPhone 7 Apple начала защищать свои устройства сильнее. Начиная с iOS 10 впервые была представлена KTRR — эволюционный KPP, что оказался явно мощнее своего предшественника.
В отличие от KPP (WatchTower), KTRR реализован уже не на уровне операционной системы, а аппаратными возможностями. Как заявил Лука Тодеско два года назад, «ещё эту защиту ошибочно называют AMCC». На самом деле, никакой тройной защиты «KTRR, AMCC и memprot» не существует. Есть только одна — KTRR.
Более подробное исследование, как работает данная защита, сделал разработчик Siguza, и опубликовал у себя на
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
.Возможность обхода: полностью обойти KTRR никогда не представится возможным. Оная существует лишь частично, как подчёркивает в презентации Siguza, при помощи специального отладчика, сделанного Ian Beer. Также, если будет найдена низкоуровневая уязвимость (наподобие De Rebus Antiquis в iBoot), KTRR можно будет отключить — именно сейчас это можно сделать при помощи bootROM-уязвимости checkm8 на устройствах с процессорами А10(Х) и А11.
Первая уязвимость была представлена в джейлбрейке iOS 10.0-10.1.1 для iPhone 7, что собрал Лука Тодеско — yaluX+extra_recipe. Ознакомиться с её исходным кодом можно на
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
. В своём описании KTRR, Siguza отметил, что тогда это удалось лишь потому, что KTRR «не находился в структуре памяти для чтения».Вторая уязвимость была представлена
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
на github разработчиков Google Project Zero, которую он назвал, к слову, Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
. Также она включена в джейлбрейк-утилиту checkra1n. Самое интересное, Apple отказалась фиксить данную проблему, заявив, что Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Устройства, где присутствует KTRR: iPhone 7 [+] и выше, iPad Air (3-го поколения), iPad mini (5-го поколения), iPad (6-го и 7-го поколений), iPad Pro (2-го поколения и выше), iPod touch (7-го поколения).
APRR — Access Protection ReRouting
Наращивание системы защит Apple происходит полным ходом — и теперь Apple представляет APRR — грубо говоря, даже в чём-то сказать, это KTRR 2-го поколения. Только вот APRR — это, если верить Джонатану Левину, улучшенный KTRR, но софтверный. По сути, там, где есть APRR, находится двойная защита ядра — KTRR и APRR.
Более подробное описание Siguza представил очень недавно, у себя на
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
, но стоит учесть, что не надо путать APRR с ещё одной, третьей, сильнейшей защитой ядра — PPL, о которой будет написано чуть ниже. Ошибочно было также сказано, что APRR присутствует только в А12 — нет, она пришла вместе с iPhone 8/X, поколением раньше.Возможность обхода: как отметил Siguza в своём описании, «APRR — отличная фича, даже если её части несколько сломаны». Первая возможность взлома была уже представлена и доступна на
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
разработчика. Поскольку сама линия защиты считается, судя по всему, софтверной, её возможно пропатчить, и как в итоге, к релизу iOS 13 первый обход APRR будет закрыт. Также, соответственно, на устройствах А11 APRR полностью отключаема с помощью уязвимости checkm8.Устройства, где присутствует APRR: iPhone 8 [+] и выше, iPad Air (3-го поколения), iPad mini (5-го поколения), iPad Pro (3-го поколения).
PPL — Page Protection Layer
Как объявил Siguza, это «реальная смена правил игры в А12». Используется для защиты «кэша доверия» — это одна из защит в iOS 12+, что не позволяет запускать сторонние файлы помимо CoreTrust.
Возможность обхода: как мы помним, джейлбрейки unc0ver и Electra не обходят этот самый кэш, а включают в него файлы — это означает, что с PPL можно жить. Насчёт побороть — если это не аппаратная функция, то это возможно. Пока что PPL не был взломан ни разу, но… кто знает.
Устройства, где присутствует PPL: iPhone (Xs [Max], Xr и выше), iPad Air (3-го поколения), iPad mini (5-го поколения), iPad Pro (3-го поколения).
CoreTrust
На этом, пожалуй, закончим о защите ядра от изменений и поговорим о более «приземлённых» вещах. Конечно же, оной является CoreTrust — защита, что, по сути, ограничивает запуск бинарных файлов, что не были подписаны сертификатом Apple.
Возможность обхода: это реально, достижимо. В unc0ver, как мы знаем, CoreTrust обходится подписью каждого файла специальным сертификатом, а Chimera же, наоборот, ломает эту линию защиты. Пока что о закрытии этих двух методов объявлено не было.
Присутствует на всех устройствах, где установлена iOS 12 и выше, а также iPadOS.
PAC — Pointer Authentification Code
Отличительная особенность данной линии защиты в том, что она создана не компанией Apple, а создателями архитектуры arm. Впрочем, Siguza же в презентации отмечает, что «PAC была значительно доработана Apple». Детальный анализ создал Брендон Азад и
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
.Согласно
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
, данная защита усложняет нахождение уязвимостей и запуска эксплойтов в проблемных участках памяти ядра. Следует также отметить, что PAC — главная защита, которую обязательно нужно обходить для получения джейлбрейка, без этого никак.Возможность обхода: тяжело, если верить словам Siguza, но всё же возможно.
Единственная возможность обхода данного слоя защиты была представлена Брендоном Азадом вместе с уязвимостью
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
для iOS 12.0-12.1.2. Впрочем, Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
произвёл революцию, создав методику «PACLess», что представил для unc0ver в iOS 12.1.3-12.4.1, поэтому как таковой обход этого слоя защиты может быть и необязательным для джейлбрейка.Устройства, где присутствует PAC: iPhone (Xs [Max], Xr и выше), iPad Air (3-го поколения), iPad mini (5-го поколения), iPad Pro (3-го поколения).
KPPbypass / KPPLess-джейлбрейк: что лучше?
Главная линия защиты, которая отвечает за этот вопрос — KPP / KTRR / APRR. О возможностях обхода подобных защит было написано выше.
Преимущества обхода KPP / KTRR:
- Полноценный джейлбрейк устройства (в данном значении не тот, что отвязанный, а тот, что позволяет получить полный контроль над устройством);
- Substrate / Substitute может обратиться напрямую к нужным для работы твиков защищённым частям ядра, что априори делает стабильнее cам джейлбрейк — городить велосипед с созданием вспомогательного файла не нужно (в Electra — «jailbreakd», в unc0ver — «substrated»);
- Можно провести полноценное перемонтирование файловой системы, что даёт возможность реально менять ОС девайса по своему усмотрению / желанию. При наличии обхода KPP / KTRR можно менять несколько функций файловой системы, в том числе записывать папки в корневой раздел (/), а также полноценно управлять снимком системы.
- На устройствах с KTRR, возможно, джейлбрейк будет непривязанный с возможностью даунгрейда прошивки, поскольку единственный способ отключения — найти iBoot-уязвимость.
- Создание джейлбрейка намного проще и быстрее: согласитесь, отключить KTRR для новейших устройств — та ещё задачка, с учётом того, что требуется взломать iBoot;
- Джейлбрейк останется полуотвязанным — но, впрочем, при желании его можно выключить и включить.