О безопасности и уязвимостях Android написаны десятки тысяч статей и сотни книг. Разумеется, мы не будем пытаться объять необъятное; вместо этого попробуем окинуть взглядом экосистему в целом и подход Google к обеспечению безопасности платформы.
Парадоксально, но факт. Будучи самой распространённой мобильной ОС, в экосистеме Android нет ни одного устройства, сравнимого по популярности с любой моделью от Apple. Десятки тысяч моделей, тысячи прошивок, чехарда с версиями Android и невнятная политика обновлений привели к потрясающей воображение фрагментации экосистемы, объединённой по большому счёту лишь названием.
До какого-то момента Android был не только самой распространённой, но и наименее безопасной мобильной ОС. До версии 4.4 (а это – 2013 год) безопасность системы обсуждать было бессмысленно: отсутствие шифрования по умолчанию и очень слабые опциональные алгоритмы делали смартфоны с этой ОС уязвимыми для целого ряда атак. Минимально приемлемый уровень безопасности в Android был достигнут только с версией 6.0, причём только в тех устройствах, которые выходили с завода уже с Android 6.0 на борту. В последующих версиях системы Google последовательно ужесточал требования к безопасности. Последним нововведением, которое появилось в Android 9, стало шифрование «облачных» резервных копий устройств ключом, который зависел от кода блокировки экрана.
Известные уязвимости и версии Android
Говоря об уязвимостях, обнаруженных в коде операционной системы, нельзя не рассказать и о реакции на это компаний-производителей соответствующих ОС. Строго говоря, независимые исследователи обнаружили и опубликовали информацию о большем числе уязвимостей именно в iOS, а не в Android. Обе компании стараются исправлять уязвимости, и делать это достаточно оперативно. Для смартфонов на Android предусмотрены ежемесячные патчи безопасности, а обновление iOS Apple может опубликовать в любой момент.
Разница в том, что если Apple последовательно развивает и улучшает актуальную версию iOS (не будем сейчас касаться различий между версиями системы для Apple TV, HomePod и планшетов с iPad OS), то Google приходится поддерживать (или, напротив, отказаться от поддержки) целый спектр версий Android:
Как минимум пять (!) основных версий Android начиная с Android 5 Lillopop и заканчивая актуальным Android Pie в более-менее равных долях присутствуют на рынке. Ежемесячные патчи безопасности продолжают назвыисимо друг от друга выходить для Android 7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9. Но тот факт, что Google выпустит соответствующий патч безопасности, вовсе не означает, что ваш смартфон получит его немедленно (если, конечно, вы не пользователь Google Pixel). Смартфоны под управлением Android получают патчи безопасности, что называется, «под настроение». Если производителю захочется – он выпустит обновление. Не захочется – не выпустит. У некоторых производителей (Sony, Nokia, Essential) обновления выходят регулярно и оперативно. У других – в зависимости от актуальности модели, её статуса в линейке, количества проданных экземпляров и ряда других факторов, о которых конечный пользователь, как правило, даже не догадывается. Иными словами, у большинства пользователей смартфонов с Android есть шанс получить обновление безопасности в тот же месяц или немного после, получить через полгода-год или не получить никогда.
Физическая безопасность и шифрование данных
О шифровании в Android мы уже неоднократно писали. В актуальных версиях Android основных способов шифрования три (подробнее можно узнать из статьи на официальном сайте).
Классический способ шифрования Full-Disk Encryption (FDE). Именно этот способ, появившийся в пятой версии Android, используется в подавляющем большинстве смартфонов, включая модели Samsung вплоть до 2018 года выхода (включительно) независимо от версии Android. Зашифрован будет весь раздел данных; расшифровываются данные автоматически в процессе загрузки смартфона. В качестве пароля, которым защищён двоичный ключ шифрования данных, используется фраза “default_password”, поэтому все данные будут расшифрованы даже до того, как пользователь разблокирует телефон паролем или паттерном. Если вам показалось, что шифрование сотен миллионов устройств ключом “default_password” менее безопасно, чем хотелось бы, вы не ошибётесь: существует ряд решений (в частности, продукты компании Cellebrite), позволяющих загрузить большое число моделей смартфонов специальным «расшифровывающим загрузчиком» и извлечь из устройства данные моментально, даже без перебора кодов блокировки. Впрочем, нужно отдать должное этой схеме шифрования: от атаки методом извлечения микросхем она вполне эффективна.
Для многих моделей устройств, использующих FDE без Secure Startup, доступны методы мгновенного извлечения данных. Методы могут различаться. Одним из интересных способов получить доступ к содержимому устройства без перебора кодов блокировки является использование расшифровывающего загрузчика (decrypting bootloader по терминологии Cellebrite). Загрузка телефона таким загрузчиком позволяет расшифровать содержимое раздела данных. Расшифровывающие загрузчики доступны не для всех моделей и наборов системной логики.
В остальных случаях для расшифровки данных эксперту потребуется взломать код блокировки экрана. Перебор паролей доступен для многих, но не для всех моделей смартфонов с Android. В данном случае фрагментация платформы и многообразие моделей работают в сторону усиления безопасности.
Шифрование Full-Disk Encryption в режиме Secure Startup. Режим Secure Startup – опциональный. Он позволяет перешифровать ключ шифрования данных паролем, отличным от фразы “default_password”. В качестве такого пароля, как правило, выступает код блокировки экрана, но нам встречались и варианты, когда использовались разные коды блокировки и пароли для расшифровки раздела данных. Криминалисты очень не любят этот вариант: для того, чтобы получить доступ к данным, необходимо сперва подобрать код блокировки, а такая возможность есть не для каждой модели устройств. Нужно отметить, что режим Secure Startup можно включить или выключить, удалив код блокировки экрана из настроек и включив его заново. При включении Secure Startup код блокировки потребуется ввести на раннем этапе загрузки устройства. До этого момента телефон, как правило, не сможет даже принять звонок.
Пофайловое шифрование File-Based Encryption (FBE). Этот режим шифрования появился в Android 7, но относительно широкое распространение получил с выходом следующей версии системы. Важно понимать, что пользователь не может самостоятельно выбрать, использовать ли ему пофайловое или полнодисковое шифрование: этот выбор за него делает производитель устройства. Так, смартфоны Samsung, включая модели 2018 года, использовали устаревшее шифрование FDE; многие модели Huawei, Sony, Motorola, флагманские модели Xiaomi, OnePlus стали использовать пофайловое шифрование ещё на 7-й версии Android.
Файловое шифрование эксперты-криминалисты не любят ещё больше: алгоритм «новый», использующих его устройств не так много, инвестировать в очередные исследования не хочется, но приходится. Для пользователя же этот режим предлагает оптимальное сочетание безопасности FDE+Secure Startup с простотой и удобством использования классического FDE.
В этом режиме основной массив пользовательских данных зашифрован ключом, являющимся производной от кода блокировки экрана. В то же время часть данных (включая исполняемые файлы приложений и ту часть информации, необходимой для работы до первого разблокирования устройства) зашифрована посредством device credentials (аппаратных ключей) и становится доступной сразу после загрузки.
Как узнать, какой тип шифрования используется в конкретной модели? Для этого достаточно подключить телефон к компьютеру, включить USB Debugging в настройках для разработчика, установить ADB и выполнить в командной строке следующую команду:
adb shell getprop ro.crypto.type
Если команда вернула слово “file”, то смартфон использует шифрование FBE.
Изоляция приложений и доступ к файловой системе
В Android самая слабая из мобильных систем изоляция приложений. Приложения могут вмешиваться в работу других приложений. В первую очередь это разнообразные службы Accessibility, приложения, которые могут выводить информацию поверх других приложений, оверлеи, которые могут нажимать кнопки, и сторонние клавиатуры, которые автоматически получают возможность шпионить за пользователем. Приложения могут использовать известные уязвимости для эскалации привилегий. Могут собирать данные о приблизительном местоположении пользователя, даже если права на определение местоположения отсутствуют (механизм reverse BSSID lookup интересный, часто применяется на практике и заслуживает отдельной статьи). Многочисленные зловредные приложения появляются еженедельно, а в некоторых телефонах (о таких мы писали) они находятся прямо в прошивках и избавиться от них — невозможно. Как пример – получившая широкую огласку история: Google admits some Android phones shipped with malware.
Да, эта особенность (а точнее – степень свободы) заложена в систему, и является «фичей», а не «багом». Поверь, твоему ребёнку, тёще или бабушке сильно легче от этого не станет, как бы ты ни пытался натаскать их на «сюда не тыкай никогда».
Небезопасные механизмы разблокировки экрана
Казалось бы, что может пойти не так с такой простой вещью, как разблокировка экрана? Оказывается, многое. В Android встречаются любые, самые небезопасные способы аутентификации. Самый распространённый из них – эконом-вариант биометрической системы Apple Face ID. Во многих смартфонах с Android присутствует режим разблокировки по лицу пользователя, использующий единственную камеру и естественное освещение. Такие системы обманываются в лучшем случае трёхмерной моделью, а в худшем – обычной фотографией.
Режим Smart Lock, присутствующий во всех без исключения телефонах с Android, поддерживает автоматическое разблокирование телефона по местоположению (представим ситуацию, в которой ФБР не приходится платить миллион долларов за взлом iPhone 5c – вместо этого агент просто дошёл до дома подозреваемого). Или разблокирование при соединении с доверенным Bluetooth-устройством (агент включает трекер активности или магнитолу в машине подозреваемого). Некоторые способы можно запретить с помощью корпоративной политики безопасности, но для их запрета необходимо перечислить их в явном виде. Администратор забыл запретить разблокировку по Bluetooth-устройствам? Пользователи непременно воспользуются лазейкой. Если появится новый небезопасный способ разблокировки – его придётся запрещать дополнительно.
Исторически целью этих методов была попытка заставить пользователей устройств без датчика отпечатков пальцев устанавливать код блокировки. Однако вред от таких способов катастрофический: пользователю внушается ложное чувство безопасности, на самом же деле «защитой» подобные способы можно назвать лишь в кавычках. Более того, Smart Lock остаётся доступным даже в последних сборках Android и даже в устройствах, оборудованных безопасными биометрическими сканерами.
Облачная безопасность и защита от слежки
Google собирает огромное количество информации о пользователях Android. Её детальность и проработка просто фантастические: можно в деталях увидеть, где был и что делал пользователь в такое-то время такого-то числа за последние несколько лет. Что характерно, Google знает не только «где» был пользователь в терминах географических координат, но и «в каком месте» он побывал. Гостиница, ресторан, боулинг, театр, парк – Google видит координаты и соотносит их с объектами на карте и местоположением других пользователей (а их – миллиарды). Результат – компании известно всё вплоть до того, сколько времени пользователь просидел за столиком в ресторане в ожидании первого блюда и сколько людей пользуется услугами заведения в настоящий момент времени.
Поисковые запросы, открытые веб-страницы, история покупок в онлайновых магазинах, билеты на самолёт и брони гостиниц – все эти вещи мало того, что доступны компании, так ещё и целенаправленно извлекаются, анализируются и хранятся в выделенном, дистиллированном и подготовленном для просмотра виде.
Нет особого смысла писать о том, какие именно данные собирает Google и как компания это делает. В «облаке» Google найдётся всё: и история местоположения пользователя за много лет, и пароли, и история браузера, и журналы телефонных звонков и копии сообщений, а также почта, фотографии, тренировки и параметры организма, резервные копии устройств с Android и файлы в Google Drive. Сюда же входят записи голосовых запросов к ассистенту Google, история просмотра роликов на YouTube, прослушанная через Google Music музыка, просмотренные фильмы и многое другое. За единственным исключением (о нём – ниже) все эти данные хранятся в открытом виде. Неспроста: основной бизнес Google – анализ данных своих пользователей и продажа рекламы с исключительно чётким таргетингом. Соответственно, ваши данные и должны поступать и храниться в открытом виде, чтобы компания в любой момент могла получить к ним доступ.
Мы говорили о единственном исключении из правила, и оно – есть. В зашифрованном виде (ключ шифрования зависит от кода блокировки смартфона) Google сохраняет резервные копии устройств, на которых установлен Android 9 (или более свежая версия). Почему именно резервные копии, а не, скажем, пароли или параметры жизнедеятельности организма? Видимо, дело в том, что в резервных копиях Google нечего анализировать: расположение иконок на рабочем столе и данные сторонних приложений для компании не представляют интереса.
Слежку со стороны «большого брата» и сбор информации можно ограничить, а уже собранные данные – удалить, но разнообразие этих данных таково, что только их перечисление займёт несколько страниц убористого текста. Более того, время от времени Google без предупреждения включает сбор новых типов данных (яркий пример – синхронизация информации о звонках и SMS на некоторых устройствах); как отключить их сбор и хранение, не всегда понятно даже специалистам. В двух словах: ограничить сбор данных можно, но гарантии того, что запрещён сбор всей интересной информации – никакой.
Для того, чтобы извлечь из «облака» Google Account все данные (а их там не просто много, а много больше, чем хранится на одном конкретном устройстве) эксперту вполне достаточно логина и пароля (плюс второго фактора, если в учётной записи пользователя активирована двухфакторная аутентификация). Единственное ранее упомянутое ограничение – резервные копии Android 9, для доступа к которым потребуется код блокировки смартфона, с которого была создана резервная копия.
Защита от низкоуровневого доступа
Большинство телефонов с Android поставляется с незакрытыми режимами сервисного доступа к памяти, которые изначально создавались для прошивки устройств в случае неисправности. Эти же режимы можно использовать и для извлечения данных из устройства, даже если оно выключено или заблокировано. В частности, это присуще большей части процессоров Qualcomm (режимы 9006 и 9008), практически всем MediaTek, Rockchip, Allwinner, Spreadtrum, некоторым устройствам на основе Samsung Exynos. Собственный низкоуровневый сервисный протокол есть в телефонах LG, и воспользоваться им для извлечения данных -–дело техники.
Использование сервисного режима для кражи данных не оставляет следов. Защититься от кражи информации через сервисный режим довольно просто: достаточно убедиться, что на телефоне включено шифрование данных (напомним, в устройствах, вышедших с завода с Android 6 или более новой версией шифрование активировано по умолчанию).
Контроль за разрешениями приложений
Вопрос гранулярного контроля за разрешениями приложений в Android до сих пор не закрыт. В «чистом» Android (AOSP) контроль за использованием разрешений появился только с выходом версии 6.0. В сторонних прошивках он был и раньше, но работал чрезвычайно нестабильно. При этом контроль далёк от совершенства: запретить приложению работать в фоне штатными средствами невозможно, а запрет доступа к местоположению приводит только к тому, что приложение будет определять местоположение устройства другими способами с помощью использования разрешений, гранулярный контроль которых невозможен даже в свежих версиях Android. Наконец, некоторые старые приложения просто не поддерживают гранулярное управление разрешениями, и пользователь по-прежнему соглашается с запросом на предоставление целого пакета разрешений, часть из которых вовсе не безобидна. Нужно отметить, что посредством грамотно настроенных корпоративных политик безопасности некоторые очевидные уязвимости Android можно закрыть.
В силу масштабов, которых достиг феномен фрагментации Android, для платформы в целом не существует какой-то общей архитектуры безопасности. Десятки моделей смартфонов с Android, разошедшихся в сотнях тысяч экземпляров, имели зловредные компоненты в своих прошивках несмотря на жёсткие условия сертификации Google. Сотни моделей десятков производителей используют откровенно небезопасные способы разблокировки (разблокировка по лицу, являющаяся дешёвой калькой системы, реализованной Apple в iPhone X). Наличие подсистемы Smart Lock, которая стимулирует пользователей отказаться от безопасной блокировки, добавляет масла в огонь.
Ряд производителей предлагает собственные надстройки для обеспечения дополнительной безопасности. Такие технологии справляются со своими задачами, но работают строго в рамках заданных возможностей. Такая защита не является всесторонней, и покрывает только нижние уровни доступа, никак не влияя на сбор и передачу информации как встроенными, так и сторонними приложениями.
Можно ли сделать Android действительно безопасным?
Если телефон находится в руках ребёнка, бабушки или человека, который увлекается чем угодно, только не вопросами безопасности мобильных операционных систем – нет. В руках неспециалиста телефон на Android никогда не станет безопасным, даже если это Samsung с активированным KNOX. Причина? Слишком много зловредных приложений, которые слишком легко устанавливаются в телефон. Слишком большая для среднего пользователя степень свободы, позволяющая убрать раздражающие средства безопасности, отключить шифрование на этапе загрузки, активировать установку приложений из сторонних источников и проделать массу других вещей, которые специалисту трудно представить.
Если же устройство дать в руки специалисту, и устройство это – актуальный флагман одного из избранных производителей, не пренебрегающих ежемесячными патчами безопасности, то при должной настройке (запрет Smart Lock, шифрование с обязательным запросом пароля для дальнейшей загрузки устройства – не путать с PIN-кодом разблокировки!, использование административной политики, жёстко запрещающей установку из сторонних источников, запрет оверлеев и сервисов Accessibility, постоянный контроль за тем, какую информацию мы разрешаем о себе собирать и кому именно) устройством вполне можно пользоваться.
Заключение
Для большинства пользователей будет вполне достаточно того уровня безопасности, который предлагает Android – разумеется, при условии, что на устройстве установлен PIN-код с минимальной длиной в 6 цифр и включён датчик отпечатков пальцев; если не используются небезопасные методы разблокировки по лицу; если нет root и заблокирован загрузчик; если активировано полнодисковое шифрование и включён Secure Startup или в устройстве используется пофайловое шифрование FBE; если отключены все небезопасные способы аутентификации Smart Lock; если… Впрочем, обо всём этом и о многом другом читайте в нашей следующей статье.