Что такое iOS App Sandboxing?

Песочница приложений iOS — это базовая архитектура безопасности, которая ограничивает каждое приложение собственным выделенным контейнером, не позволяя ему получать доступ к системным файлам, другим данным приложения или аппаратным ресурсам без явного согласия пользователя. При установке приложения операционная система создает уникальный каталог песочницы для этого приложения, и весь его код, данные, предпочтения и кэши живут внутри этого каталога. Приложение не может покинуть свой контейнер для чтения или записи файлов, принадлежащих другому приложению или самой системе. Этот дизайн гарантирует, что даже если приложение скомпрометировано, ущерб содержится в этой единственной песочнице.

Модель песочницы применяется на уровне ядра, что означает, что она применяется ко всем приложениям, включая те, которые распространяются через App Store, корпоративные развертывания и даже системные приложения в значительной степени. Операционная система опосредует каждую операцию файловой системы, сетевое соединение и аппаратный вызов, позволяя только те действия, которые попадают в предоставленные приложениям права. Это делает iOS одной из самых безопасных мобильных операционных систем, поскольку она слои изоляции поверх других защит, таких как подписание кода и шифрование данных.

Техническая архитектура, стоящая за песочницей

На уровне ядра iOS использует обязательные элементы управления доступом (MAC), навязанные при помощи платформы Seatbelt sandbox. Seatbelt определяет набор правил для каждого процесса приложения, указывая, к каким файлам, каталогам, конечным точкам сети и системным службам может получить доступ процесс. Эти правила компилируются в профиль песочницы, который загружается при запуске приложения. Профиль уникален для каждого приложения и не может быть переопределен самим приложением.

Каждое приложение получает свой собственный каталог контейнеров, обычно расположенный по адресу . В этом контейнере система далее делит хранилище на подкаталоги, такие как , и . Приложение может свободно читать и писать внутри своего собственного контейнера, но любая попытка доступа к путям за пределами этого контейнера вызывает отказ от ядра. Это включает попытки чтения других контейнеров приложений, системных рамок или аппаратных устройств, явно не предоставленных.

Профили Sandbox также ограничивают межпроцессную связь (IPC). Приложения не могут вызывать произвольные системные службы или запускать фоновые процессы без конкретных прав. Это означает, что даже если приложению удается выполнять произвольный код, оно не может, например, запустить демон, который постоянно работает в фоновом режиме или отправлять сообщения в процесс другого приложения. Сочетание изоляции файловой системы и ограничений IPC образует основу безопасности iOS.

Основные меры безопасности в iOS

Песочница не работает изолированно. Она является частью многоуровневой модели безопасности, которая включает в себя несколько дополнительных мер, предназначенных для защиты пользовательских данных и целостности системы на каждом уровне.

Разрешения на приложения и контроль пользователей

iOS требует от приложений запрашивать разрешение перед доступом к конфиденциальным данным или аппаратному обеспечению. Это включает в себя камеру, микрофон, службы определения местоположения, библиотеку фотографий, контакты, календарь, Bluetooth и датчики движения. Разрешения предоставляются через запрос времени выполнения, который появляется при первой попытке приложения получить доступ к ресурсу. Пользователи могут позже просматривать и отзывать разрешения в любое время через приложение Настройки.

Apple неуклонно ужесточает контроль разрешений с каждым выпуском iOS. Например, iOS 14 добавила примерный обмен местоположением и возможность предоставлять доступ к фотографиям на основе изображения. iOS 15 представила отчет о конфиденциальности приложений, в котором регистрируется, к каким ресурсам каждое приложение имело доступ. iOS 16 и 17 дополнительно усовершенствовали уведомления о доступе к буферу обмена, подсказки разрешения на пастель и режим блокировки для пользователей с высоким риском. Эти механизмы гарантируют, что даже если приложение является доброкачественным, пользователи сохраняют детальный контроль над тем, какие данные передаются.

Подписание кода и валидация приложений

Каждое приложение, работающее на iOS, должно быть подписано Apple в цифровом виде с помощью сертификата, выданного разработчику. Этот процесс, известный как подписание кода, гарантирует, что код не был подделан с момента его подписания. Когда система загружает приложение, она проверяет подпись на инфраструктуру открытого ключа Apple. Если подпись недействительна, отсутствует или истекла, приложение не будет запущено.

Подписание кода выходит за рамки установки приложения. Система также проверяет подписи кода во время выполнения для динамически загружаемых библиотек и фреймворков. Это предотвращает загрузку приложения неподписанного кода после запуска, что является распространенной техникой, используемой вредоносным ПО для обхода первоначальных проверок. Служба нотариального заверения Apple для macOS служит аналогичной цели, но на iOS принудительное исполнение обязательно для всех приложений, а не только для тех, которые распространяются через App Store.

Шифрование данных в режиме покоя и транзита

Устройства iOS используют аппаратное шифрование для защиты данных, хранящихся на флэш-памяти. Каждое устройство имеет встроенный в систему на чипе выделенный движок AES, который шифрует и расшифровывает данные с помощью аппаратно-специфического ключа. Система применяет разные классы шифрования к разным типам данных:

  • Класс A (полная защита): Данные шифруются с помощью ключа, полученного из пароля пользователя, и доступны только при разблокировке устройства.
  • Класс B (защищенные до первого разблокирования): Данные становятся доступными после первой разблокировки и остаются доступными до перезагрузки устройства.
  • Класс C (защищено, если не открыто): Данные доступны до тех пор, пока файл открыт, даже если устройство заблокировано.
  • Класс D (без защиты): Данные шифруются, но ключ всегда доступен после загрузки.

В дополнение к шифрованию в режиме покоя iOS обеспечивает безопасность транспортного уровня (TLS) для всех сетевых соединений, выполняемых системными службами и многими приложениями. Apple требует, чтобы приложения использовали HTTPS по умолчанию и с течением времени преуменьшали исключения из правил безопасности транспорта приложений (ATS). Это гарантирует, что данные, передаваемые между устройством и серверами, шифруются транзитом, что затрудняет перехват или изменение трафика злоумышленниками.

Безопасная цепь загрузок и аппаратные корни доверия

Когда устройство iOS включается, оно выполняет код из загрузочного ПЗУ считывания, который сжигается в чипе во время производства. Этот загрузочный ПЗУ неизменен и является аппаратным корнем доверия. Он проверяет подпись загрузчика следующего этапа (iBoot) с использованием открытого ключа Apple. iBoot затем проверяет ядро, а ядро проверяет операционную систему и все расширения системы.

Если какой-либо компонент не проходит проверку подписи, процесс загрузки прекращается, и устройство переходит в режим восстановления. Эта цепочка доверия гарантирует, что только авторизованное Apple программное обеспечение может работать на устройстве, с самой первой инструкции. Это предотвращает сохранение вредоносных программ при перезагрузке и делает джейлбрейк все более трудным с каждым поколением оборудования.

Как песочница предотвращает общие векторы атаки

Понимание практического воздействия песочницы помогает понять, почему iOS считается безопасной платформой.

  • Эксфильтрация данных между приложениями: Без песочницы скомпрометированное приложение могло бы читать файлы любого другого приложения на устройстве.
  • Модификация системных файлов: Вредоносный код не может перезаписывать системные двоичные файлы, библиотеки или файлы конфигурации, поскольку эти файлы находятся за пределами контейнера приложения.
  • Доступ к цепочке: iOS обеспечивает безопасную цепочку ключей для хранения чувствительных токенов и паролей. Каждое приложение может получить доступ только к своим элементам цепочки ключей, и система обеспечивает это на уровне ядра.
  • Нарушения фоновых процессов: Приложения не могут порождать фоновые демоны или агенты без явных прав, которые редко предоставляются. Это предотвращает вредоносное ПО от установления настойчивости или запуска скрытых процессов.
  • Угон ресурса: Даже если приложение получает доступ к камере или микрофону через запросы на получение разрешения, песочница не позволяет ему получить доступ к другому оборудованию, такому как контроллер NFC или Secure Enclave, без отдельных прав.

Эти меры защиты означают, что даже эксплойты с нулевым щелчком мыши, которые не требуют какого-либо взаимодействия с пользователем, сильно ограничены в том, чего они могут достичь. Злоумышленник, который успешно использует уязвимость в приложении с песочницей, все еще сталкивается с проблемой выхода из песочницы для достижения значимой настойчивости или доступа к данным.

Последствия для разработчиков

Для разработчиков iOS песочница накладывает ограничения, которые определяют, как приложения разрабатываются и тестируются. Каждое приложение должно декларировать права и возможности, которые ему нужны, и Apple рассматривает эти декларации во время процесса утверждения App Store. Разработчики должны запрашивать только минимальные разрешения, необходимые для функционирования их приложения, практика, известная как принцип наименьших привилегий.

К числу ключевых последствий для развития относятся:

  • Доступ к файловой системе: Разработчики не могут предположить, что они могут писать в произвольные каталоги.Все пользовательский контент должен храниться в каталоге приложения, а временные файлы должны заходить в .
  • Межприложения: Для обмена данными между приложениями требуются явные механизмы, такие как UIActivityViewController, UIPasteboard или общие группы доступа к Keychain, все из которых требуют конфигурации и взаимодействия с пользователем.
  • Исполнение фона: Приложения могут работать только в фоновом режиме для конкретных случаев использования, таких как воспроизведение аудио, обновления местоположения или фоновый вывод. Попытка выполнить произвольную фоновую работу приведет к приостановке приложения.
  • Управление правами: Возможности, такие как push-уведомления, Apple Pay и хранилище iCloud, требуют предоставления прав профиля. Разработчики должны настроить их на портале Apple Developer и убедиться, что они соответствуют профилю песочницы.
  • Проверка соображений: Разработчики должны протестировать свои приложения на физических устройствах, чтобы проверить соответствие песочницы, так как симулятор имеет расслабленные правила песочницы, которые не отражают реальное поведение устройства.

Apple предоставляет обширную документацию и инструменты, помогающие разработчикам работать в рамках ограничений песочницы. Xcode включает функции отладки песочницы, которые нарушают доступ к журналам, а в руководстве App Sandbox излагаются лучшие практики для разработки безопасных приложений, соответствующих песочнице.

Последствия для пользователей

Для повседневных пользователей песочница работает бесшумно в фоновом режиме, но понимание этого может помочь принимать обоснованные решения о разрешениях приложений и поведении устройств. Когда приложение запрашивает доступ к камере, микрофону или местоположению, пользователи должны рассмотреть, имеет ли запрос смысл для функциональности приложения. Приложение с фонариком, которое запрашивает доступ к микрофону, например, вероятно, нарушает ожидания конфиденциальности.

Пользователи также должны знать, что джейлбрейк удаляет защиту песочницы, отключая правоприменение на уровне ядра. Сломанное устройство больше не изолирует приложения друг от друга или от системы, делая его уязвимым для вредоносных программ, которые могут украсть данные, установить шпионское ПО или вызвать постоянную нестабильность системы. Apple решительно препятствует джейлбрейку, и компания все больше усложняет его с каждой версией iOS, закаливая цепочку Secure Boot Chain и добавляя защиту целостности ядра.

Лучшие практики для пользователей включают:

  • Регулярно просматривайте разрешения приложений в Настройках > Конфиденциальность & Безопасность.
  • Выдавать разрешения, необходимые для основной функции приложения.
  • Поддерживайте обновление iOS, чтобы получать последние исправления безопасности и улучшения песочницы.
  • Избегайте загрузки приложений из ненадежных источников, поскольку они могут обойти подпись кода Apple и проверку безопасности.
  • Включите Face ID или Touch ID для защиты ключей шифрования, которые защищают данные в песочнице.

Эволюция безопасности iOS

Apple постоянно укрепляла песочницу и меры безопасности с тех пор, как iOS впервые представила модель с iPhone OS 2.0. Ранние профили песочницы были относительно простыми и позволяли большую гибкость, но по мере созревания iOS профили стали более ограничительными и детализированными. Введение системы прав Предоставляемые права дало разработчикам возможность запрашивать конкретные возможности, сохраняя при этом песочницу по умолчанию как можно более плотной.

К числу важных этапов относятся:

  • iOS 6: Введены per-app VPN и улучшенные классы защиты данных.
  • iOS 9: По умолчанию включается функция безопасности транспорта приложений, что заставляет приложения использовать HTTPS.
  • iOS 12: Добавлена более строгая песочница для веб-контента Safari и введен режим USB Restricted Mode.
  • iOS 14: Требовалось, чтобы все приложения запрашивали разрешение на отслеживание пользователей через приложения и веб-сайты (Прозрачность отслеживания приложений).
  • iOS 16: Введен режим блокировки для пользователей, сталкивающихся со сложными угрозами, сильно ограничивающими поверхность атаки.
  • iOS 17: Расширенный режим блокировки и добавлены улучшенные функции защиты от отслеживания ссылок и безопасности связи.

Каждая итерация закрывает векторы атак, обнаруженные исследователями безопасности или эксплуатируемые в дикой природе. Apple также поддерживает программу вознаграждения за ошибки, которая вознаграждает исследователей за поиск уязвимостей, включая побеги из песочницы. Эта петля обратной связи помогает Apple выявлять слабые места и исправлять их, прежде чем они могут быть широко использованы.

Заключение

Песочница приложений iOS — это основополагающий механизм безопасности, который изолирует каждое приложение в свой контейнер, предотвращая несанкционированный доступ к системным ресурсам и другим данным приложения. В сочетании с подписью кода, шифрованием данных, цепочкой Secure Boot и гранулированными разрешениями пользователей, он создает многоуровневую защиту, которая делает iOS одной из самых безопасных мобильных платформ. Для разработчиков песочница требует тщательного проектирования и соблюдения рекомендаций Apple, но в конечном итоге она защищает пользователей и укрепляет доверие к экосистеме. Для пользователей понимание песочницы усиливает важность управления разрешениями и обновления устройств. По мере развития угроз Apple продолжает закалять профили песочницы и внедрять новые защиты, гарантируя, что модель безопасности остается эффективной против сложных атак.

Чтобы узнать больше об архитектуре безопасности iOS, обратитесь к руководству по безопасности Apple iOS и руководству по безопасному кодированию .