Новые функции безопасности Android 7
Функция Direct Boot ответственна за своевременную подготовку исполнения системных файлов Android на зашифрованном устройстве. Так как предыдущие версии Android использовали метод шифрования Full Disc Encryption (FDE), т. е. шифрование памяти устройства целиком, загрузчику необходимо было знать код разблокировки устройства для расшифровки системных файлов (в качестве компонента ключа шифрования Android использует код разблокировки устройства). В такой схеме пользователю нужно было ввести код разблокировки дважды после перезагрузки устройства: в первый раз для разблокировки системных файлов, а второй для разблокировки самого устройства.
Своей реализацией Direct Boot обязана тому факту, что Android 7 переключилась с использования шифрования FDE на шифрование per-file, т. е. каждого отдельного файла. Такая схема шифрования уже давно применяется в iOS.
Under the hood, file-based encryption enables this improved user experience. With this new encryption scheme, the system storage area, as well as each user profile storage area, are all encrypted separately. Unlike with full-disk encryption, where all data was encrypted as a single unit, per-profile-based encryption enables the system to reboot normally into a functional state using just device keys. Essential apps can opt-in to run in a limited state after reboot, and when you enter your lock screen credential, these apps then get access your user data to provide full functionality.
Источник
Другое security-улучшение касается печально известного системного сервиса под названием MediaServer. Этот компонент работает с повышенными правами и отвечает за проигрывание различного мультимедийного контента. Уязвимости в нем регулярно закрывались в обновлениях безопасности Android, о которых мы писали в блоге. Функция безопасности под названием overflow sanitization помогает закрыть целый класс уязвимостей Android, которые были обнаружены в библиотеке libstagefright. Данную библиотеку использует MediaServer. Другое улучшение безопасности MediaServer касается работы всего мультимедийного стека компонентов, каждый из которых теперь находится в условиях изоляции своего собственного окружения sandbox.
First, by incorporating integer overflow sanitization, part of Clang«s UndefinedBehaviorSanitizer, we prevent an entire class of vulnerabilities, which comprise the majority of reported libstagefright bugs. As soon as an integer overflow is detected, we shut down the process so an attack is stopped. Second, we«ve modularized the media stack to put different components into individual sandboxes and tightened the privileges of each sandbox to have the minimum privileges required to perform its job. With this containment technique, a compromise in many parts of the stack grants the attacker access to significantly fewer permissions and significantly reduced exposed kernel attack surface.
Рис. В Android 7 сервис MediaServer разбит на различные подсистемы (мультимедийный стек), которые работают с ограниченными правами и в ограниченном окружении (sandbox). Видно, что новая система присвоения прав сервисам является гораздо эффективной с точки зрения безопасности, поскольку позволяет задать приложению только нужные ему права. В новой версии библиотека libstagefright функционирует в сервисе MediaCodecService, который имеет минимальные права в системе. Таким образом, эксплуатация уязвимостей в этом компоненте для Android 7 не принесет атакующим никаких результатов.
Новая функция Verified Boot строго контролирует целостность загрузчика, предотвращая загрузку устройства в случае его компрометации. Улучшению подвергся и механизм изоляции приложений (sandbox) ядра Linux, известный как seccomp. Кроме этого, были улучшены настройки конфигурации подсистемы безопасности SELinux. Обе этих меры позволяют полностью закрыть механизм безопасности sandbox приложений, а также уменьшить риск успешной эксплуатации других методов атак, используемых эксплойтами.
Об улучшениях безопасности ядра Android мы писали ранее. Они включают в себя реализацию DEP для виртуальной памяти режима ядра (Kernel DEP), функцию типа SMAP, которая позволяет блокировать доступ к страницам пользовательской виртуальной памяти для кода режима ядра. Несколько новых функций относятся к технике, известной под названием Attack Surface Reduction (ASR), она позволяет существенно сократить успешность эксплуатации целого класса уязвимостей. В рамках ASR. Android 7 поддерживает удаление доступа по умолчанию отладки устройства, а также запрещает приложениям использовать некоторые команды с использованием функции ioctl.
Улучшенным стал и механизм обновлений Android 7 «по воздуху» (OTA update). Теперь размер обновлений стал более компактным, а время установки существенно сократилось. Сокращение времени установки обуславливается еще и тем фактором, что в новой версии не будет этапа «подготовки приложений», который занимал больше всего времени в процессе установки обновления в предыдущих версиях Android.
be secure.
Комментарии (2)
7 сентября 2016 в 18:35
0↑
↓
Увы, это никак не предотвратит предустановку дырявых «улучшайзеров» производителями устройств и полную невозможность удалять их без «рутования» устройства.
7 сентября 2016 в 20:07
0↑
↓
Два самых толстых вектора атаки — это GPU и апаратные кодеки. И у того, и у другого есть своя прошивка и есть возможность работать с любой памятью в обход ядра. При чем, аппаратные кодеки чаще всего управляются мелким ARM-ядром, соотвественно набор комманд известен.
Поэтому, то что MediaServer будет изолирован на уровня ядра линукса никак не спасет от хитрого видео-файла, который вызовет переполнение стека в коде аппаратного декодера и исполнение произвольного кода на отдельном процессорном ядре.
Мне кажется, что такие атаки непопулярны только потому что они будут таргетированны только на конкретную модель устройства.