Android 8 — едва ли не самое важное обновление Android за последние годы. В Oreo появился модульный дизайн, позволяющий обновлять компоненты ОС независимо, система ограничения фоновой работы приложений, которая должна продлить время работы на одном заряде, а также множество улучшений безопасности, о которых мы и поговорим в этой статье.
Среди всех нововведений Android 8 особое место занимают три:
С системой ограничений фонового исполнения все более или менее понятно, а о Treble, который в перспективе может кардинально улучшить ситуацию с обновлениями Android, мы уже писали. Но мы снова коснемся его в контексте обсуждения безопасности.
В 2012 году, практически одновременно с релизом Android 4.2, Google запустила облачный антивирус с неброским именем Verify Apps. Антивирус был встроен в сервисы Google Play, которые установлены почти на каждом Android-смартфоне как часть набора приложений Google, поэтому одно обновление сервисов Google Play быстро распространило антивирус на миллионы устройств без ведома пользователей.
Сегодня с помощью Verify Apps Google сканирует миллиарды Android-устройств (два миллиарда в сумме и один миллиард ежедневно) и постоянно об этом отчитывается, гордо рассказывая о новых цифрах. Антивирус работает всегда и при включенном интернете проверяет каждое установленное приложение, в том числе те, что пользователь ставит с карты памяти или из альтернативных маркетов.
Большинство юзеров об этом даже не подозревают и, наслушавшись историй о тотальной небезопасности Android, продолжают устанавливать на смартфоны сторонние антивирусы. В некоторых случаях это оказывается пустой тратой денег, в других оборачивается ложными срабатываниями, когда антивирус ругается на все, что может отправлять СМС, показывать рекламу в шторке или использовать оверлеи. В третьих (и это наиболее частый вариант) приводит к замедлению устройства и повышенному расходу заряда аккумулятора.
Чтобы решить эту проблему и показать, что на самом деле в смартфоне уже есть антивирус, Google придумала штуку под названием Google Play Protect. Это не что иное, как интерфейс, позволяющий оценить работу Verify Apps. В Android Oreo он доступен в разделе настроек «Безопасность», в более старых версиях — в разделе «Google → Безопасность». Ценность его невелика, но он позволяет быстро узнать, что с твоим смартфоном все в порядке и он регулярно проверяется (а если точнее — во время зарядки).
Google Play Protect |
Вместе с новым интерфейсом Google вытащила наружу еще несколько индикаторов работы антивируса. Версия Play Store для Oreo показывает статус проверки приложения на его странице, а также выводит красивый зеленый щит с надписью «Все хорошо, парень, ты защищен» в списке установленных приложений.
Кроме того, разработчики сторонних приложений теперь имеют доступ к API Verify Apps, точнее к его маленькой частичке, которая позволяет проверить, есть ли на смартфоне вирусы, и запретить установку своего приложения, если это так.
Процесс установки приложений из сторонних источников также слегка изменился. Теперь, чтобы установить приложение не из Play Store, нет необходимости активировать переключатель «Неизвестные источники» в разделе «Безопасность» в настройках. Вместо этого необходимо дать право устанавливать APK отдельно взятым приложениям.
Другими словами, если ты хочешь, чтобы Amazon Appstore и F-Droid могли устанавливать приложения, ты должен дать каждому из них такое право. И это действительно правильный механизм с одним «небольшим» минусом: чтобы установить Amazon Appstore, тебе нужен браузер, а это значит, что ему тоже необходимо дать право установки приложений. После этого весь механизм защиты летит к черту. Хотя, конечно, тебе все еще надо собственноручно подтверждать каждую установку приложения.
В Android 8 впервые появилась реализация инициативы Treble, которая стала самой крупной переработкой внутренних компонентов Android со времен Android 4.0. Смысл Treble заключается в разделении Android на две независимые части, одна из которых обеспечивает связь с железом (ядро Linux, драйверы и другие низкоуровневые компоненты ОС), а другая включает в себя саму операционную систему Android.
Логическое деление Android до Treble и после |
В первую очередь Treble нацелен на решение проблемы обновлений и фрагментации. Производителям смартфонов теперь не нужно ждать, пока производители чипсета и другого оборудования соизволят выпустить драйверы и другие компоненты HAL для новой версии Android. Вместо этого они могут портировать Android на уже имеющуюся основу, и в теории он будет прекрасно работать.
Разработчики Android заявляют, что Treble также способен решить многие проблемы безопасности. Разработчики не только разделили ОС на две части, но и реорганизовали платформенно зависимые компоненты ОС. Каждый из них теперь работает в жестко изолированной песочнице и общается с компонентами ОС через типизированные каналы с проверкой полномочий (для этого в IPC-механизм Binder внесены соответствующие правки).
Устройства, изначально работающие на Android 8, будут иметь преимущества Treble из коробки, но с девайсами, которые получат Android 8 в форме обновления, все не так просто. Google сообщает, что работает с крупными производителями устройств, чтобы реализовать Treble в рамках обновления, но в то же время некоторые устройства самой Google включают в себя неполную реализацию Treble.
Еще в Android 4.4 Google реализовала механизм Verified Boot, который проверяет целостность компонентов ОС на всех этапах загрузки смартфона и позволяет запретить загрузку, если обнаружится, что загрузчик, ядро или ОС были модифицированы. В следующих версиях Android механизм непрерывно совершенствовался, но в нем всегда была одна проблема — возможность сделать даунгрейд.
Даунгрейд опасен тем, что может быть использован для получения доступа к смартфону с помощью «возвращения старых багов». Допустим, человек украл телефон, понял, что он зашифрован, запаролен, а загрузчик заблокирован. Кастомную прошивку он установить не может (из-за несовпадения сертификата), но может откатить смартфон к старой версии Android, в которой был баг, позволяющий обойти блокировщик экрана (такой был в прошивке Samsung, например), и с его помощью получает доступ к содержимому.
Некоторые производители пытались защититься от даунгрейда своими методами. В Android 8 теперь есть официальная реализация этой защиты. Но она отключается при разблокировке загрузчика штатными средствами.
Seccomp — это технология ядра Linux, которая позволяет ограничить список доступных приложению (и в перспективе опасных) системных вызовов. Например, можно запретить приложению использовать системный вызов execve, который часто применяют эксплоиты, или заблокировать системный вызов listen, с помощью которого можно повесить на сетевой порт бэкдор.
Технология используется в Android уже достаточно давно, но применяется в основном к системным компонентам. В Android 8 seccomp-фильтр внедрен в zygote — процесс, который порождает процессы всех установленных в систему приложений.
Разработчики проанализировали, какие системные вызовы нужны для загрузки ОС и работы большинства приложений, а затем отсекли лишние. В итоге в черный список попали 17 из 271 системного вызова на ARM64 и 70 из 364 на ARM. В списке оказался и системный вызов для подключения swap-раздела, так что, возможно, в Android 8 приложения для активации свопа не заведутся.
Cтатьи из последних выпусков журнала можно покупать отдельно только через два месяца после публикации. Чтобы читать эту статью, необходимо купить подписку.
Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке
1 год4590 р. Экономия 1400 рублей! |
1 месяц490 р. 25-30 статей в месяц |
Уже подписан?
Читайте также
Последние новости