Сегодня в выпуске: бэкдор в смартфонах Huawei, исследование устройства защищенной среды исполнения в смартфонах Samsung, простой и надежный способ зашифровать данные приложения, оптимизация приложения для Chrome OS, объяснение разницы между val и const val в Kotlin, а также новые инструменты пентестинга и большая подборка библиотек для разработчиков.
 

Почитать

 

Бэкдор в смартфонах Huawei

Huawei’s Undocumented APIs — A Backdoor to Reinstall Google Services — статья разработчика Magisk о том, как Huawei удалось реализовать систему установки сервисов Google Play на недавно выпущенный Huawei Mate 30.

Напомним, что в результате развязанной президентом Трампом торговой войны США и Китая Google была вынуждена разорвать действующие соглашения с компанией Huawei. В результате Huawei больше не может легально устанавливать приложения Google на свои устройства.

Казалось бы, приложения, в том числе Google Play, всегда можно доустановить из сторонних источников. Однако для их работы необходимы сервисы и библиотеки Google, которые должны быть частью прошивки и не могут быть установлены отдельно.

Huawei оказалась в безвыходной ситуации, но энтузиасты быстро выяснили, что в Сети можно найти приложение LZPlay, которое магическим образом установит все необходимые компоненты на устройство, причем его разлочка или рутинг не понадобятся.

Никак иначе, кроме как с помощью скрытого API, реализованного Huawei, или уязвимости, LZPlay работать не мог, и Джон Ву (John Wu), разработчик Magisk, решил выяснить, так ли это.

Оказалось, что LZPlay использует ряд специфичных для Huawei разрешений:

<uses-permission android:name="com.huawei.permission.sec.MDM_APP_MANAGEMENT"/>
<uses-permission android:name="com.huawei.permission.sec.MDM_INSTALL_SYS_APP"/>
<uses-permission android:name="com.huawei.permission.sec.MDM_INSTALL_UNDETACHABLE_APP"/>
<uses-permission android:name="com.huawei.systemmanager.permission.ACCESS_INTERFACE"/>

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

<uses-permission android:name="com.huawei.permission.sec.MDM_INSTALL_SYS_APP"/>
<uses-permission android:name="com.huawei.permission.sec.MDM_INSTALL_UNDETACHABLE_APP"/>

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

Но самое интересное, что использовать эти API могут только приложения, подписанные специальным ключом Huawei. Другими словами, Huawei не только знала о существовании приложения LZPlay, но и одобрила его, выдав разработчикам ключ для подписи.

 

Особенности реализации TrustZone в смартфонах Samsung

Breaking Samsung’s ARM TrustZone — рассказ об уязвимостях, найденных в реализации TrustZone в смартфонах Samsung. Презентация интересна не столько самими уязвимостями, сколько подробностями о внутренностях системы.

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

В случае с Samsung внутри TrustZone работает либо операционная система Kinibi, разработанная компанией Trustonic (Samsung Galaxy S3–S9), либо система TEEGRIS, за авторством инженеров самой Samsung (Samsung Galaxy S10). В презентации речь идет только о Kinibi. Интересные факты:

  • 32-битная микроядерная ОС;
  • разграничение полномочий на уровне системных вызовов;
  • запускает процессы (в том числе драйверы) головной процесс RTM (Run-Time Manager);
  • RTM также отвечает за коммуникацию между процессами с помощью MCI (Mobicore Communication Interface);
  • приложения могут быть запущены из стандартной среды исполнения (для подтверждения аутентичности используются цифровые подписи);
  • приложения Kinibi взаимодействуют со стандартной средой с помощью разделяемой памяти, в которую записываются команды для приложений Kinibi;
  • драйверы реализованы в форме обычных процессов с расширенным набором привилегий.
TrustZone в реализации Samsung
TrustZone в реализации Samsung

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Check Also

Malware vs WordPress. Проверяем защитные плагины в боевых условиях

Wordpress — одна из самых распространенных систем управления сайтом и поэтому вызывает при…

Оставить мнение