28 декабря 2017

Android Oreo: безопасности много не бывает

По материалам Android Developers Blog

Android Oreo буквально напичкан усовершенствованиями в области безопасности. В течение последних месяцев много рассказывалось, что делалось в этой области на платформе Android и в ее приложениях: от возможности более безопасно ставить приложения, отказа от ненадежных сетевых протоколов, обеспечения большего пользовательского контроля над идентификаторамизащиты ядраупрощения получения обновлений Android и до удвоения выплат по Android Security Rewards. Теперь, когда вышел Oreo, настало время взглянуть изнутри, чего удалось достичь в целом.

Расширенная поддержка аппаратной безопасности

Android уже поддерживал доверенную загрузку (Verified Boot), которая создана специально для того, чтобы не давать устройствам загружаться с поддельным софтом. А в Android Oreo была добавлена эталонная реализация для Verified Boot, работающая с Project Treble, она получила название Android Verified Boot 2.0 (AVB). В AVB есть пара классных функций, чтобы упростить получение обновлений и сделать их более безопасными. К ним относится в том числе защита от отката. Защита от отката разработана для того, чтобы устройство не могло загрузиться, если версию ОС откатили к более старой, что может сделать его уязвимым для угроз. Для того, чтобы это стало возможным, устройства сохраняют версию ОС при помощи безопасной среды исполнения (Trusted Execution Environment,TEE), подписывая данные. Pixel 2 и Pixel 2 XL обладают этой защитой, а другим производителям устройств рекомендуется добавлять эту функцию в свои новые аппараты.

Oreo также включает в себя новый слой аппаратных абстракций (Hardware Abstraction Layer, HAL) OEM Lock, который дает производителям устройств большую свободу в выборе того, как защитить устройство, будь оно заблокированным, разблокированным или без возможности блокировки. К примеру, новые устройства Pixel используют этот HAL, чтобы передавать команды в загрузчик. Загрузчик анализирует эти команды, когда устройство загружается в следующий раз, и определяет, должны ли произойти изменения в блокировке, которые надежно хранятся в RPMB (Replay Protected Memory Block). Если ваше устройство украли, эти меры призваны помочь сохранить ваши данные и помешать перезагрузить аппарат. Этот новый HAL поддерживает даже перенос блокировки при смене «железа».

Что касается аппаратной части, Google вкладывает средства в поддержку защищенного от взлома «железа», например, модуля безопасности, который стоит в любом Pixel 2 и Pixel 2 XL. Это физический чип, который способен предотвратить многие программные и аппаратные атаки, а также устойчив к физическому проникновению. Модуль безопасности предотвращает получение кода шифрования без наличия пароля к устройству и ограничивает число попыток разблокировки, что делает невозможными многие попытки взлома в силу временных ограничений.

В то время как аппараты Pixel обладают специальным модулем безопасности, все новые устройства с сервисами Google и Android Oreo на борту должны проходить аттестацию ключа. Это предоставляет механизм жесткой проверки идентификаторов, таких как идентификаторы устройств и компонентов.

Были добавлены и новые функции для корпоративных устройств. В рабочих профилях ключи шифрования исключаются из оперативной памяти в случае, когда профиль отключен или администратор вашей компании удаленно закрывает доступ к профилю. Это позволяет обеспечивать безопасность корпоративных данных в неактивном состоянии.

Повышение безопасности платформы и изоляция процессов

В рамках Project Treble фреймворк Android был переработан, чтобы процесс получения обновлений был проще и стоил меньше для производителей устройств.  Это разделение кода платформы и модифицированного кода производителя  также было осуществлено для повышения безопасности. Следуя принципу минимальной привилегии, эти HAL работают в собственной среде и имеют доступ только к абсолютно необходимым драйверам и разрешениям.

Далее в продолжение работы над защитой хранилища медиа, начатой в Android Nougat, в Oreo убрали большую часть прямого доступа к аппаратной части из медиа фреймворков, результатом стала лучшая изоляция. Более того, для всех медиакомпонентов была внедрена CFI (Control Flow Integrity). Большая часть уязвимостей сейчас реализуется посредством разрушения нормального потока управления приложения, которое начинает проявлять вредоносную активность, используя все свои привилегии. CFI – это мощный механизм безопасности, который не позволяет вносить произвольные изменения в исходный граф потока управления скомпилированного двоичного файла, что значительно осложняет осуществление подобных атак.

Вдобавок к этим изменениям в архитектуре и CFI в Android Oreo есть еще ряд полезных усовершенствований безопасности платформы:

  • Фильтрация Seccomp: делает ряд неиспользуемых системных вызовов недоступными для приложений, так что они не могут быть использованы потенциально вредоносными приложениями;
  • Защищенная пользовательская копия: недавнее исследование уязвимых мест в безопасности на Android показало, что недействительная или отсутствующая проверка границ имела место примерно в  45% уязвимостей ядра. Поэтому функцию проверки границ портировали в ядра Android от  3.18 и выше, что затрудняет использование уязвимостей, а также помогает разработчикам выявлять проблемы и исправлять баги в своем коде;
  • Эмуляция PAN (Privileged Access Never): также портирована в ядра от 3.18 и выше, функция не позволяет ядру получать доступ напрямую к пользовательскому пространству и гарантирует, что разработчики будут использовать для доступа к нему защищенные функции;
  • Рандомизация размещения адресного пространства в ядре (Kernel Address Space Layout Randomization, KASLR): поскольку Android много лет поддерживает в пользовательском пространстве рандомизацию размещения адресного пространства, KASLR была портирована для того, чтобы  уменьшить уязвимости в ядрах Android от 4.4 и выше. Работа KASLR состоит в том, чтобы случайным образом изменяя место кода ядра при каждой загрузке, сделать атаки, основанные на повторном использовании кода, менее вероятными и труднее осуществимыми, в особенности удаленно.

Безопасность приложений и изменения в идентификаторе устройства

Приложения Android с мгновенным запуском (Instant Apps) работают в ограниченном пространстве, ограничивающем разрешения и возможности, такие как чтение списка приложений на устройстве или передача чистого трафика. Будучи представленными во время релиза Android Oreo, Instant Apps поддерживают устройства на Android Lollipop и выше.

Для того, чтобы более безопасно работать с недоверенным контентом, WebView изолировали посредством разделения рендеринга на отдельные процессы и запуска их в отдельных пространствах, которые ограничивают  доступные им ресурсы. WebView также поддерживает безопасный браузинг для защиты от потенциально опасных сайтов.

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

Перенос статических значений Android ID и Widevine в значения приложений, что позволяет ограничить использование атрибутов устройства и неперенастраиваемых идентификаторов.

В соответствии с требованием по анонимности IETF RFC 7844, значение net.hostname теперь пустое и DHCP клиент больше не отправляет имя хоста.

Для приложений, которые требуют ID устройства, был создан Build.getSerial() API, который защищает его помимо разрешений.

Вместе со специалистами по безопасности из Лионского университета и ряда других организаций была разработана надежная система рандомизации МАС адресов для сканирования траффика Wi-Fi на множестве аппаратных платформ.

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

Читайте также

47 комментариев на «“Android Oreo: безопасности много не бывает”»

  1. Zliuka Z:

    Теперь еще и ОС откатить запрещают… красота… еще больше дряни выковыривать из прошивок, чтоб нормально кастом накатить… А вирусня как была, так и будет.

    • David:

      не обновляйтесь у вас есть выбор.

      • Lecron:

        А возможность не обновляться, естественно для обеспечения безопасности, отменят в следующей версии Андроида.

        • David:

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

    • denis28able:

      Ну так… Корпорация Добра (как они о себе думают)

  2. Алексей Иващенко:

    И батарею жрёт в два раза больше.

    • SewAwOw:

      Что жрёт?

      • kip2:

        электроэнергию из батареи

        • Алексей:

          Почему именно в два? И именно больше? 🙂

          • kip2:

            не знаю. я лишь ответил вопрошающему на вопрос что жрёт. а как, сколько, почему и что именно, мне доподлинно неизвестно)

        • SewAwOw:

          Хотел бы я знать, каким образом…

          • kip2:

            кто хочет знать, тот найдёт. гугл и как разрабочег ондроеда, и как поисковик ещё работает

            • SewAwOw:

              Что не могу найти в гугле никакой инфы по запросу: «потребление электроэнергии android oreo».
              Так что вы врёте, и сами не знаете, жрёт или не жрёт.

    • Bohdan Yakhvak:

      у меня Lineage OS на андроиде 8.1 держит батарею на полтора часа дольше, чем оригинальньій Miui 5.1. тело xiaomi mi4c

  3. A.N.:

    Вот этот вот запрет отката очень не понравился. Как же будут ромоделы тестировать экспериментальные прошивки, если с них потом обратно не откатишься? Зажимают свободу, понимаешь(((

  4. Ilya:

    Вот и пришел гугл к эппл-вэй…

  5. федор емельяненко:

    Почему столько нытья в коментах? гугл уже превзошел по надежности и безопасности илитный ios и идет вперед. И еще не было косяков с обновами типа как у ios9 и 11 где даже новый смарт за косарь баксов превращался в подлгаивающую быстро разряжающуюся какашу с одноименным анимированным смайлом) Может для продвинутых пользователей типа как на MR некоторые моменты обновления зло, Но для серой массы коей 99% обнову нужно ставить принудительно чтобы кривыми руками не наделали бед и не валили все на плохой андроид и злые вирусы!

    • Владимир Федотов:

      какая безопасность, если я не могу из журнала звонков удалить номера в стоковой звонилке?

    • квазиунофантазия:

      У меня у самого Андроид, но АйОс конечно же и быстрее и безопаснее.
      1. Эпл обновляет девайсы 5 лет и это мажорные обновления. На Андроиде редко +2 версии бывает в обновлениях.
      2. По скорости — тоже бред. Возьмите тест жава скрипта и посмотрите как он отрабатывает на АйОс и на Андроиде. 835-й снап где-то на уровне 5s получается. Эпл требует 1-2 гига оперативки, причем с 2-мя все работает и бодро шевелится. У меня на Андроиде 4 гига и ему мало.

      Можно еще много написать… но АйОс быстрее и безопаснее, не говорю, что более гибкая и кастомизируемая. Более интуитивно понятная АйОс, кстати.

      Основной минус Андроида — это куча вендоров, что кастомизируют его… и после таких кастомизаций ни о какой безопасности уже можно говорить, т.к. что там и как они туда вкорячили — не понятно никому.

    • Густав:

      Безопасность Андроида говорите? Вы в курсе что на забугорных хакерских конференциях Андроид считается оксюмороном слову безопасность?

      А также что раз в две недели находят новые пачки малвари, которая спокойно сидит в ГуглоПлее годами?
      Почитайте отчет софоса, сколько там нашли. https://www.sophos.com/en-us/en-us/medialibrary/PDFs/technical-papers/malware-forecast-2018.pdf?la=en

      Человек, который хоть немного разбирается в безопасности и шифровании, покупать смартфон на Андроиде будет только для экспериментов.