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 обещают в дальнейшем продолжить усовершенствования системы безопасности, в том числе и на основе отзывов и предложений пользователей.

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

  • the indifferent one
  • denis28able

    Это пользователь Android Oreo?

  • Zliuka Z

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

  • Алексей Иващенко

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

  • David

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

  • denis28able

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

  • SewAwOw

    Что жрёт?

  • Lecron

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

  • Clostridium_tetani

    Трисомия по 21-й хромосоме?

  • David

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

  • A.N.

    Чего непонятно то? Написано же #000000 по #ffffff, что Instant Apps должны будут работать в ограниченном пространстве.

  • A.N.

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

  • user657687

    Бутират

  • Ilya

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

  • федор емельяненко

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

  • kip2

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

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

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

  • A.N.

    А если нажать на запись о звонке и подержать секунду-другую? Разве не появится менюшка с возможностью удаления? У меня появляется.

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

    нет

  • A.N.

    Это что же такой за удивительный смартфон у вас?

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

    Редми 3с. На старой Мотороле есть такая возможность

  • A.N.

    Сейчас спрошу у Андрея, Сяоми по его части.

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

    на звонилке от Сяоми все работает, а вот на кастомах «голого» андроида нет.

  • A.N.

    А при чем тут Гугл тогда?

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

    так звонилка то гугловская

  • A.N.

    Это как колесо от трактора приделать на мопед и потом возмущаться в адрес резинового комбината, не едет мол))

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

    ну тогда надо спрашивать владельцев Ми А1.

  • Вы бы пораньше написали, я бы Нексус посмотрел. А теперь он на работе на каникулы остался.

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

    Посмотрите. Владелец Ми А1 говорит что у него появляется значок корзины

  • Саша, так речь про защищённые устройства с заблокированным загрузчиком. Там ромоделы всё равно не тестируют 🙂

  • A.N.

    Андрей, это же Линукс, ребята с 4PDA ставят дуалрекавери из под заблокированного загрузчика и не парятся))) Вообще обнаглели)))
    https://4pda.ru/forum/index.php?showtopic=535941&view=findpost&p=51269401

  • Алексей

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

  • Bohdan Yakhvak

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

  • Bohdan Yakhvak

    навряд ли,у меня от андроида 8.1 гемора нет,одно удовольствие))

  • SewAwOw

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

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

    Посмотрите. Владелец Ми А1 говорит что у него появляется значок корзины.

    Вот так на кастомной прошивке. Удалить невозможно. https://uploads.disquscdn.com/images/34b4e11267d926fc3d4cf3f83d2454a8c193ce618e26a6755dd2681a92231a82.jpg

  • Ну так это ж нужны дыры в прошивке, чтобы KingRoot сработал.

  • A.N.

    Мне кажется, что главное, чтобы без перезагурзки. Т.е. вгнони в стресс ОС, а потом делай с ней, что хочешь.

  • Олег

    Mi A1 все работает и удаляет .

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

    это мы уже выснили. Смотрите ниже

  • Я к тому, что KingRoot работает далеко не на всех аппаратах. Как-то пробовал его: иногда всё проходит, а иногда ни в какую.

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

    У меня у самого Андроид, но АйОс конечно же и быстрее и безопаснее.
    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

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

  • kip2

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

  • kip2

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

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

    Поставил другой кастом. Вообщем, жмем (не удерживаем) на запись телефоного звонка в журнале вызовов, открывается менюшка; сведенеия о звонке, жмем корзинку. На всех ли так рабоатет, не знаю

  • SewAwOw

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

  • kip2

    а как именно я вру? процитируй, пожалуйста