Главная » Безопасность » Безопасность Андроид: Обзор инструментов безопасности Android 5.0 Lollipop

Безопасность Андроид: Обзор инструментов безопасности Android 5.0 Lollipop

Безопасность Android

С другой стороны, шифрование никак не защитит устройство в том случае, если юзер не установит на экран блокировки PIN-код или не воспользуется функцией Smart Lock (о ней мы поговорим позже). Поэтому заявления Google о том, что они сделали априори секьюрную операционку, которая не потребует лишних телодвижений от пользователя, как минимум лукавство.

Во всем остальном реализация шифрования осталась на прежнем уровне. Это поблочное шифрование раздела /data с помощью модуля dm-crypt и алгоритма AES-128 в режиме СВС с задействованием функции ESSIV:SHA256 для получения векторов инициализации (IV). Сам ключ шифрования защищен с помощью КЕК-ключа, который может быть или получен из PIN-кода с помощью прогонки через функцию script, или сгенерирован случайным образом и сохранен в ТЕЕ. При этом, если юзер купит смартфон на базе Android 5.0 с активированным по умолчанию шифрованием и затем установит PIN-код, последний также будет использован для генерации КЕК.

Функция script для получения ключа из PIN-кода используется начиная с Android 4.4 и заменяет применявшийся ранее алгоритм PBKDF2. Последний оказался уязвимым для подбора на GPU (6-значный цифровой PIN за 10 с, 6-значный знаковый — 4 ч с помощью hashcat), тогда как script, по заявлению создателей, увеличивает время подбора примерно в 20 ООО раз и вообще не подходит для GPU по причине высоких требований к памяти.

Безопасность Андроид
Безопасность Андроид

В заключение хочу сказать, что шифрование будет активировано только для устройств, изначально основанных на Android 5.0. Уже существующие девайсы, получившие обновление по воздуху, останутся незашифрованными.

Seandroid

Технология SELinux, разработанная Агентством национальной безопасности США, уже давно используется во многих корпоративных и настольных дистрибутивах для защиты от самых разных видов атак. Одно из основных применений SELinux — это ограничение приложениям доступа к ресурсам ОС и данным других приложений. С помощью SELinux можно, например, сделать так, чтобы сервер Apache имел доступ только к определенным файлам и диапазону портов, не мог запускать бинарники помимо заранее оговоренных и имел ограниченный доступ к системным вызовам. По сути, SELinux запирает приложение в песочницу, серьезно ограничивая возможности того, кто сможет его взломать.

Вскоре после появления на свет Android разработчики SELinux начали проект SEAndroid с целью перенести систему в мобильную операционную систему  и разработать ряд SELinux-правил для зашиты ее компонентов. Начиная с версии 4.2, наработки этого проекта входят в состав Android, но на первых порах (версия 4.2-4.3) используются исключительно для сбора информации о поведении компонентов системы (с целью последующего составления правил). В версии 4.4 Google перевела систему в активный режим, но с мягкими ограничениями для нескольких системных демонов (installd, netd, void и zygote). На полную же катушку SELinux заработал только в 5.0.

В Android 5.0 предусмотрено более 60 доменов SELinux (проще говоря — правил ограничений) почти для каждого системного компонента, начиная от первичного процесса init и заканчивая пользовательскими приложениями. На практике это означает, что многие векторы атак на Android, которые в прошлом использовались как самими юзерами для получения root, так и разного рода малварью, более не актуальны.

Так, уязвимость CVE-2011-1823, имевшая место во всех версиях Android до 2.3.4 и позволяющая вызвать memory corruption в демоне void, а далее передать управление шеллу с правами root (эксплойт Gingerbreak), не могла бы быть использована, будь она найдена в 5.0 — здесь, согласно правилам SELinux, void не имеет права запускать другие бинарники. То же самое справедливо и в отношении уязвимости CVE-2014-3100 в Android 4.3, позволяющей вызвать переполнение буфера в демоне keystore, и 70% других уязвимостей.

SELinux значительно снижает риск того, что устройством завладеют через эксплуатацию уязвимостей в низкоуровневых компонентах системы (многочисленных написанных на С и C++ демонах, исполняемых от имени root), но в то же время затрудняет получение root, так сказать, «для себя». Более того, отныне права root сами по себе не гарантируют полного контроля над системой, так как для SELinux нет разницы между обычным юзером и суперпользователем.

безопасность андроид устройств

К счастью, это ограничение довольно легко обойти, если заставить приложения с поддержкой root выполнять привилегированные действия в неограниченном SELinux-контексте init. Такая функциональность реализована в SuperSU с версии 2.23 (посредством прокси, который запускается на раннем этапе загрузки, работает в контексте init и исполняет команды, принятые от бинарника su). Однако для его установки нужен кастомный recovery, который, в свою очередь, может быть установлен либо после «получения полноценного root» на устройстве (проблема курицы и яйца), либо после разблокировки загрузчика.

Также стоит иметь в виду, что SELinux не обязательно будет включен в твоем устройстве, тем более если речь идет о девайсе, который изначально поставлялся с более ранней версией Android.

Гостевой режим

Многопользовательский режим в Android появился еще в версии 4.2, но на протяжении развития четвертой ветки ОС оставался доступен только для планшетов (с возможностью включения на смартфоне с помощью хаков, например приложения 4.2 Multiple User Enabler). В 4.3 в его реализации появилась функция ограничения юзеров в полномочиях, что можно было использовать для запрета звонков, СМС и других возможностей девайса.

В Lollipop многопользовательский режим распространился также и на смартфоны, причем с несколькими весьма интересными доработками.

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

Второе новшество — это screen pinning, функция, не относящаяся напрямую к многопользовательскому режиму, но преследующая ту же цель. Она позволяет заблокировать экран на одном приложении без возможности получить доступ к домашнему экрану, «шторке» и другой функциональности ОС. Функция активируется в разделе «Безопасность» в настройках, далее необходимо запустить нужное приложение, нажать кнопку переключения между приложениями и тапнуть по значку в нижней правой части превью.

Для выхода из режима screen pinning достаточно одну-две секунды удерживать ту же кнопку переключения между приложениями. Однако устройство можно защитить, если установить PIN-код или графический ключ на экран блокировки и отметить соответствующую галочку при закреплении приложения на экране. В этом случае юзер не сможет получить доступ к ОС без ввода PIN’a или ключа.

Продолжение статьи на следующей странице.

Один комментарий

  1. Аватар
    Джеймс Бонд

    Спасибо за статью, очень полезная и нужная информация для всех.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *