Описанная выше ошибка в SDK Android — далеко не единственная. Так, уязвимость Cloak and Dagger актуальна для Android вплоть до 7.1.2. Из-за ошибки в SDK вредоносное приложение, используя разрешения SYSTEM_ALERT_WINDOW и BIND_ACCESSIBILITY_SERVICE , может получить практически полный контроль над операционной системой и доступ к конфиденциальной информации пользователя, а также фиксировать нажатия клавиш. Вкратце суть сводится к тому, что разрешение SYSTEM_ALERT_WINDOW позволяет вывести на экран «системное окно» — View-элемент, который отобразится поверх любого другого элемента интерфейса, даже если это будет Activity из стороннего приложения. При этом перекрытые Activity об этом не узнают и продолжат работать так, как будто ничего и не произошло. Это может сделать любое приложение, если разрешение SYSTEM_ALERT_WINDOW заявлено в его манифесте. Разместив несколько «невидимых» системных окон друг над другом и обрабатывая нажатия на них, злоумышленник может создать кейлоггер. А с помощью разрешения BIND_ACCESSIBILITY_SERVICE вредоносная программа способна получить доступ к другим объектам ОС и хранящимся на устройстве данным.
Уязвимости встречаются и в программной прошивке аппаратных устройств. Благодаря одной такой ошибке существует возможность взломать практически любое мобильное устройство производство компании Apple начиная с iPhone 5 и заканчивая самыми современными версиями iPhone и iPad. Речь идет об известной уязвимости checkm8 (checkmate), самой «свежей» на сегодняшний день уязвимости в мобильной технике Apple, наделавшей много шума в конце 2019 — начале 2020 года. Рассмотрим ее подробнее, чтобы понять, как работают и используются на практике подобные уязвимости.
Название «checkm8» произносится по-английски примерно как checkm-eight, что созвучно со словом checkmate — «шах и мат», символизирующим окончание шахматной партии. Отсюда и характерный логотип одноименного эксплоита в виде опрокинутой фигуры шахматного короля. «Игра окончена, ребята из Купертино, — как бы намекают нам авторы сплоита, — you lose». Самое интересное во всей этой истории с checkm8 то, что уязвимость была обнаружена не на программном, а на аппаратном уровне яблочной техники, причем охватывает она очень большой диапазон моделей, начиная с самых древних устройств на чипе А5 вроде iPhone 4S и заканчивая вполне современным iPhone X. «Дыра» прячется в механизме BootROM, который играет ключевую роль в процессе загрузки айфонов и айпадов. Причем исправить ее программными заплатками невозможно: для того чтобы решить проблему, нужно пересмотреть аппаратную конфигурацию самого устройства, чего, как вы понимаете, за пару месяцев никак не сделать.
Для пользователя загрузка айфона выглядит крайне просто: нажал на кнопочку — и спустя пару секунд на экране появляется привычный интерфейс iOS. С технической точки зрения все немного сложнее. За начальный этап запуска яблочного устройства отвечает так называемый SecureROM, он же BootROM. Это — самый первый код, который запускается при холодной загрузке в Application Processor. Фактически он представляет собой урезанную и упрощенную версию загрузчика iBoot. Основная задача SecureROM — получить образ загрузчика из энергонезависимой памяти и передать ему управление. Этот код хранится непосредственно в чипе на аппаратном уровне, доступен только на чтение и потому не может быть изменен никаким образом извне. SecureROM — это самый доверенный код в Application Processor, который выполняется без каких-либо проверок. Он же отвечает за переход устройства в сервисный режим восстановления DFU (Device Firmware Update), активизируемый нажатием специальной комбинации кнопок при включении девайса. Для нас важно, что в режиме DFU доступна загрузка на устройство файлов через интерфейс USB.
Рис. 23. Так выглядят «этапы большого пути» — загрузки устройства с iOS
Архитектурно SecureROM представляет собой первое звено цепочки безопасной загрузки, придуманной Apple для защиты от самого главного врага «яблочных» мобильных устройств — вредоносных программ и джейлбрейков. В SecureROM вшит криптографический ключ Apple, используемый для расшифровки образов, которые задействованы на последующих этапах загрузки, а также имеется необходимый инструментарий для работы с криптоалгоритмами. Получив управление от SecureROM, загрузчик iBoot расшифровывает и запускает ядро операционной системы, после чего загружается образ самой iOS с графическим интерфейсом пользователя. Однако все эти этапы запуска iPhone или iPad выполняются, только если инициализация SecureROM прошла успешно.
Читать дальше
Конец ознакомительного отрывка
Купить книгу