Безопасность в процессе выполнения в iOS и iPadOS
iOS и iPadOS помогают обеспечить безопасность в процессе выполнения с помощью механизма песочницы, декларирования прав и технологии случайного расположения в адресном пространстве (ASLR).
Песочница
Все приложения сторонних разработчиков помещаются в песочницы, что ограничивает их доступ к файлам, хранящимся в других приложениях, и не позволяет вносить изменения в работу устройства. Песочницы были разработаны для того, чтобы не позволить приложениям собирать и изменять информацию, сохраняемую другими приложениями. Каждое приложение использует для своих файлов уникальную домашнюю папку, которая назначается случайным образом при установке приложения. Если приложению стороннего разработчика необходимо получить доступ к чужой информации, оно может сделать это только при помощи специальных служб iOS и iPadOS.
Системные файлы и ресурсы также отделены от приложений пользователей. Большинство системных файлов и ресурсов iOS и iPadOS, а также все приложения сторонних разработчиков работают с правами непривилегированного «мобильного» пользователя. Весь раздел операционной системы подключен только для чтения. Системное программное обеспечение не содержит ненужных инструментов, таких как службы удаленного входа, а API не позволяют приложениям расширять свои полномочия для изменения других приложений или самой iOS и iPadOS.
Использование прав
Для контроля доступа приложений сторонних разработчиков к информации пользователя и таким функциям, как iCloud и расширения, используется декларирование прав. Права — это пары «ключ-значение», которые зарегистрированы в приложении и обеспечивают аутентификацию без привязки ко времени выполнения, аналогично идентификатору пользователя в UNIX. Поскольку права защищены цифровой подписью, их невозможно изменить. Системные приложения и демоны широко используют права для выполнения конкретных привилегированных операций — в противном случае для их выполнения требовалось бы использовать корневые процессы. Это значительно снижает вероятность передачи прав взломанным системным приложением или демоном.
Кроме того, приложения могут выполнять фоновую обработку только через системные API. Таким образом приложения продолжают работать без снижения производительности или значительного сокращения времени работы от аккумулятора.
Технология случайного расположения в адресном пространстве
Технология случайного расположения в адресном пространстве (ASLR) помогает защититься от атак, связанных с использованием повреждения памяти. Встроенные приложения используют ASLR, что помогает случайным образом перераспределять все регионы памяти при запуске. В дополнение к работе при запуске технология ASLR случайно располагает в памяти адреса исполняемого кода, системных библиотек и связанных с ними системных компонентов, снижая вероятность использования уязвимостей. Например, атака типа «возврат в библиотеку» пытается путем подмена вынудить устройство выполнить вредоносный код, манипулируя адресами стека и системных библиотек. Случайное размещение этих элементов повышает сложность проведения атаки, особенно при атаке на несколько устройств. Xcode, а также среда разработки iOS и iPadOS, автоматически включает поддержку ASLR в приложения сторонних разработчиков при их компиляции.
Функция Execute Never
Функция Execute Never (XN) архитектуры ARM в iOS и iPadOS помечает страницы памяти как неисполняемые, обеспечивая дополнительную защиту. Страницы памяти, помеченные как доступные для записи и исполняемые, могут использоваться только в жестко контролируемых условиях: ядро проверяет наличие права динамического подписания кода, которое предоставляется только Apple. Даже при его наличии можно выполнить только один вызов mmap
для запроса исполняемой и доступной для записи страницы, которой присваивается случайный адрес. Safari использует эту функцию в своем компиляторе JavaScript Just‑in‑Time (JIT).