
Действительно ли iPhone безопасен? Анализ Jailbreak, защиты Keychain и Face ID в ходе пентеста iOS-приложений
Большинство пользователей воспринимают iOS как одну из наиболее защищённых мобильных платформ. Действительно, многоуровневые механизмы защиты, созданные Apple — App Sandbox, Secure Enclave, Keychain, Code Signing и другие технологии — обеспечивают высокий уровень безопасности мобильных устройств. Однако практика показывает: как бы надёжно ни была защищена сама платформа, ошибки при разработке приложений и неправильная конфигурация могут привести к серьёзным проблемам с безопасностью.
Пентест iOS-приложений, проводимый специалистами по кибербезопасности, направлен именно на выявление подобных уязвимостей. В ходе пентеста глубокому анализу подвергаются внутренняя архитектура приложения, механизмы хранения данных, системы аутентификации, сетевой трафик и надёжность защитных механизмов.
Сегодня многие iOS-приложения, предназначенные для финансовых сервисов, электронной коммерции, государственных услуг и корпоративных систем, обрабатывают конфиденциальные данные пользователей. Поэтому любая уязвимость в них может повлечь значительный финансовый ущерб или утечку данных.
Основные этапы пентеста iOS
Тестирование iOS-приложения, как правило, включает несколько взаимосвязанных этапов:
- Выполнение джейлбрейка устройства;
- Получение и анализ пакета приложения (IPA);
- Статический анализ;
- Динамический анализ;
- Перехват сетевого трафика;
- Проверка хранения конфиденциальных данных;
- Тестирование биометрической аутентификации;
- Анализ механизмов обнаружения джейлбрейка;
- Итоговая оценка безопасности и разработка рекомендаций.
Перечисленные этапы реализуются в соответствии с техниками MITRE ATT&CK для мобильных устройств, а также требованиями OWASP Mobile Application Security Verification Standard (MASVS).
Джейлбрейк — необходимый шаг для глубокого анализа
Apple, как правило, не предоставляет пользователям доступ к внутренним компонентам системы. Именно поэтому исследователи безопасности и пентестеры прибегают к джейлбрейку устройства.
В результате джейлбрейка:
- получаются права root;
- открывается полный доступ к файловой системе;
- появляется возможность внедрять внешний код в процессы приложений;
- становится доступным мониторинг данных в оперативной памяти;
- упрощается использование инструментов Frida и Objection.
Для процессоров Apple предыдущего поколения (чипы A11 и более ранние) существуют методы джейлбрейка, основанные на аппаратной уязвимости checkm8, которую невозможно полностью устранить путём обновлений iOS.
Наиболее широко применяемые на сегодняшний день инструменты для изучения безопасности iOS:
- palera1n;
- checkra1n;
- Frida;
- Objection;
- Пакетный менеджер Sileo.
Получение IPA-файла и статический анализ
iOS-приложения распространяются в формате IPA. По своей сути IPA — это ZIP-архив, содержащий все компоненты приложения.
В ходе статического анализа исследуются:
Файл Info.plist
Этот файл содержит конфигурацию приложения:
- адреса серверов;
- URL-схемы;
- разрешения;
- интеграции;
- идентификаторы приложения.
Во многих случаях именно здесь обнаруживаются адреса тестовых сред или внутренних API.
Анализ бинарного файла
Основной исполняемый код приложения компилируется под архитектуру ARM64.
Пентестеры проверяют наличие:
- ASLR (Address Space Layout Randomization — рандомизация адресного пространства);
- PIE (Position Independent Executable — позиционно-независимый исполняемый файл);
- защиты Stack Canary;
- ARC (Automatic Reference Counting — автоматический подсчёт ссылок);
- степени обфускации кода.
Если хотя бы один из перечисленных механизмов настроен неверно или вовсе не применяется — вероятность успешной эксплуатации уязвимости возрастает.
Жёстко закодированные (Hardcoded) данные
В ходе статического анализа ведётся поиск:
- API-ключей;
- JWT-токенов;
- криптографических ключей;
- конфигураций OAuth;
- данных, относящихся к тестовой среде.
На практике во многих приложениях конфиденциальные ключи хранятся непосредственно в коде.
Динамический анализ и возможности Frida
Если статический анализ раскрывает структуру приложения, то динамический анализ позволяет наблюдать за его реальным поведением во время работы.
Для этого широко применяется Frida.
С помощью Frida можно:
- трассировать методы;
- изменять возвращаемые значения функций;
- получать данные из оперативной памяти;
- исследовать механизмы аутентификации;
- тестировать защиту SSL Pinning.
Динамический анализ позволяет выявить, какие решения принимает приложение непосредственно во время выполнения.
Защита SSL Pinning и её значение
SSL Pinning гарантирует, что приложение доверяет только определённому сертификату.
При отсутствии SSL Pinning становится возможным:
- перехват трафика;
- мониторинг HTTPS-соединений;
- подмена API-запросов;
- получение сессионных токенов.
Согласно стандартам OWASP MASVS, применение SSL Pinning рекомендуется для приложений, работающих с финансовыми и конфиденциальными данными.
В ходе пентеста данный механизм защиты тестируется с помощью Burp Suite и Frida.
Во многих приложениях SSL Pinning реализован с ошибками, из-за чего защиту удаётся обойти без особых усилий.
Безопасность Keychain
Механизм Apple Keychain предназначен для хранения конфиденциальных данных.
Как правило, в нём хранятся:
- пароли;
- токены аутентификации;
- сертификаты;
- API-ключи.
Однако ключевым фактором безопасности является не само место хранения данных, а способ их хранения.
В ходе пентеста могут быть выявлены следующие проблемы:
kSecAttrAccessibleAlways
При неправильном выборе данного параметра данные могут быть прочитаны даже при заблокированном устройстве. В результате злоумышленник может легко завладеть:
- JWT-токенами;
- сессиями аутентификации;
- API-ключами.
Данные, не привязанные к биометрии
Если элемент Keychain не связан с Face ID или Touch ID, получить к нему доступ на устройстве с джейлбрейком значительно проще.
Наиболее защищённым подходом считается совместное использование:
- Secure Enclave;
- Face ID;
- Keychain Access Control.
Тестирование биометрической аутентификации
Многие iOS-приложения используют технологии Face ID и Touch ID. Для этого, как правило, применяется объект LAContext из фреймворка LocalAuthentication.
Если приложение:
- принимает результат аутентификации как простое логическое значение (true/false);
- выполняет проверку важных операций только на стороне клиента —
такой результат можно изменить путём манипуляций во время выполнения (runtime manipulation).
В подобном случае приложение может засчитать успешную аутентификацию даже без прохождения пользователем биометрической проверки.
Вместе с тем аппаратные механизмы защиты на базе Secure Enclave считаются значительно более надёжными, поскольку функционируют независимо от операционной системы, и непосредственное воздействие на них с помощью Frida или других инструментов пользовательского уровня практически невозможно.
Механизмы обнаружения джейлбрейка
Грамотно разработанные приложения пытаются обнаружить устройства с джейлбрейком.
Для этого применяются следующие методы:
- поиск файлов Cydia;
- проверка наличия SSH-сервиса;
- тестирование ограничений Sandbox;
- обнаружение динамических библиотек;
- проверка наличия сервера Frida;
- обращение к специфическим URL-схемам.
Однако в большинстве случаев подобные проверки реализованы на уровне приложения и могут быть обойдены с помощью Frida.
Именно поэтому механизм обнаружения джейлбрейка следует рассматривать не как самостоятельный рубеж защиты, а лишь как дополнительный уровень безопасности.
Наиболее распространённые уязвимости, выявляемые в ходе пентеста
Практический опыт свидетельствует о том, что в iOS-приложениях регулярно встречаются следующие недостатки:
- отсутствие SSL Pinning;
- некорректное хранение токенов в Keychain;
- хранение API-ключей непосредственно в коде;
- чрезмерное доверие к результатам Face ID;
- слабая реализация обнаружения джейлбрейка;
- отсутствие дополнительных проверок на стороне сервера;
- неправильное применение криптографических алгоритмов;
- хранение данных в незащищённых базах SQLite.
iOS-платформа является одной из наиболее передовых экосистем в области мобильной безопасности. Тем не менее защищённость самой платформы не означает автоматической защищённости работающих на ней приложений.
Пентесты наглядно показывают: большинство уязвимостей возникает не из-за недостатков инфраструктуры Apple, а вследствие ошибочных решений, принятых в процессе разработки приложений, и недостаточного внимания к требованиям безопасности.
Ключевые принципы безопасности современных iOS-приложений включают:
- защиту конфиденциальных данных с помощью Secure Enclave;
- привязку элементов Keychain к биометрической аутентификации;
- корректное использование SSL Pinning;
- внедрение дополнительных проверок на стороне сервера;
- соответствие требованиям OWASP MASVS;
- проведение регулярных пентестов мобильных приложений.
Только такой комплексный подход позволяет поддерживать iOS-приложения в устойчивом и надёжном состоянии перед лицом современных киберугроз.



