Как обнаружение root-прав в аниме-игре привело к обнаружению уязвимости безопасности в телефонах LG, OnePlus, Huawei, Xiaomi и других

Было обнаружено, что смартфоны нескольких производителей, таких как LG, OnePlus, Huawei, Xiaomi, допускают утечку технологической информации приложений. Вот что это значит.

Мобильная операционная система Android используется на более 2 миллиардов устройств каждый месяц как постоянными потребителями, так и энтузиастами технологий. Хотя количество людей, которые разблокируют загрузчик и рутируют свои смартфоны, относительно невелико, когда по сравнению с общим числом пользователей Android, нас все еще много на таких форумах, как XDA и Реддит. Magisk — незаменимый инструмент для сообщества мастеров. Он обеспечивает внесистемный корневой доступ и имеет такие инструменты, как MagiskHide, позволяющие пользователям с root-доступом продолжать использовать приложения, игры и сервисы, которыми они пользуются, без ограничений. Однако популярная аниме-игра ловко злоупотребила уязвимостью системы безопасности, чтобы обойти обнаружение защиты от root Magisk. Вот как это работает и какие устройства подвержены этой уязвимости безопасности.

  • В игре использовалась ошибка, позволяющая определить, было ли устройство рутировано. Если устройство рутировано, игра блокирует игру пользователя.
  • Эта ошибка позволяет приложению считывать статус других приложений в памяти без каких-либо специальных разрешений. Эта ошибка не позволяет приложениям красть какие-либо данные из других приложений. Ошибка не является серьезной и довольно безобидной.
  • Гугл уже в курсе проблемы и обновили свои инструменты тестирования, чтобы убедиться, что все устройства защищены.

Фон

Популярная аниме-игра под названием Fate/Grand Order блокирует попытки пользователей с root-правами играть в нее. Признанный разработчик XDA топджонву, ведущий разработчик Magisk, ранее нашел способ чтобы обойти обнаружение корня Fate/Grand Order, но его решение не работало на его OnePlus 6, несмотря на все его усилия. Будучи преисполнен решимости не сдаваться, разработчик проанализировал Fate/Grand Order, чтобы выяснить, как он все еще обнаруживает root на его устройстве OnePlus. Как он объясняет в своем Средний пост, это привело его к обнаружению уязвимости безопасности, которой Fate/Grand Order, по-видимому, злоупотребляла, чтобы продолжать обнаруживать root-доступ на устройствах OnePlus.

Fate/Grand Order (английский)Разработчик: Аниплекс Инк.

Цена: Бесплатно.

4.

Скачать

Procfs и Android

В операционных системах на базе Unix существует специальная файловая система, называемая «procfs», содержащая информацию о процессы (например, приложения), такие как использование ими памяти (например, ОЗУ), состояние (работает ли процесс, спит и др.). В большинстве операционных систем на базе Unix пользователь и приложения имеют легкий доступ к procfs, чтобы узнать, какие типы приложения и службы работают в их системе (подумайте об этом как о диспетчере задач Windows). Однако Google начал заблокировать доступ к procfs начиная с Android 7.0 Nougat. До появления Android Nougat такие приложения, как SystemPanel, могли собирать данные о том, какие приложения запущены, без каких-либо специальных разрешений. После Android Nougat приложения должны использовать такие API, как Статистика использования или Служба доступности, оба из которых ограничены разрешениями, которые должен предоставить пользователь.

Системная панель 2Разработчик: NextApp, Inc.

Цена: Бесплатно.

4.2.

Скачать

Google запрещает приложениям считывать статус других приложений через procfs, монтируя /proc с флагом «hidepid=2». Подключив procfs с помощьюidepid=2, приложения смогут видеть только состояние своего собственного процесса. Таким образом, приложению потребуется использовать принятые API, такие как UsageStats или AccessibilityService, чтобы получить информацию о том, какие приложения и службы работают на устройстве.

Уязвимость

Что, если procfs не смонтирован с помощьюidepid=2? Что ж, тогда приложения смогут свободно читать статус других приложений (и точек монтирования), работающих в системе, без каких-либо дополнительных разрешений*. Google монтирует procfs с помощьюidepid=2 на своих устройствах, но не применяет это требование к устройствам других производителей. На некоторых устройствах LG, OnePlus, Huawei/Honor, Xiaomi и других не устанавливались procfs с idepid=2, которым пользуются такие приложения, как Fate/Grand Order, чтобы определить, присутствует ли Magisk на Устройство.

*Изменение безопасности в Android 9 Pie не позволяет приложениям читать информацию за пределами их собственного «контекста SELinux», поскольку каждое приложение теперь изолировано индивидуально. SELinux — это модуль ядра, который действует как своего рода привратник, блокируя приложениям и службам доступ к файлам, к которым они не должны иметь доступ. Контекст SELinux похож на метку файла, которая содержит такую ​​информацию, как пользователь и роль. Приложения с тем же контекстом SELinux могут читать информацию о других приложениях в том же контексте, если для procfs не включен флагidepid=2. На устройствах под управлением Android 9 Pie новые изменения SELinux для Android Pie будут применяться только к приложениям, созданным для Android Pie. Приложения, предназначенные для Android 8.1 Oreo или более ранней версии, будут использовать старые правила SELinux, что позволит им получить доступ к информация о процессах в том же контексте SELinux, пока procfs монтируется без спрятать = 2. Большинство приложений, работающих на вашем устройстве, должны быть как минимум ориентированы на Android 8.0 Oreo благодаря новые требования Google Play, но многие из них еще не обновлены для поддержки Android Pie.

На следующих снимках экрана показаны последствия отказа от монтирования procfs с помощьюidepid=2.

Насколько это плохо?

Если бы мы сравнили эту уязвимость системы с такими эксплойтами, как Фюзе Геле, Блуборн, КРАК, и Крах/Призрак, то этот баг меркнет в сравнении. Приложения не смогут использовать это для получения root-доступа или кражи ваших паролей. Ваши банковские счета в безопасности, как и ваши кредитные карты. Худшее, что может сделать приложение, — это узнать, запущено ли на вашем устройстве другое приложение, которое имеет очень ограниченное применение. Помните, что это стандартное поведение во многих дистрибутивах GNU/Linux и что Google только недавно начал блокировать доступ к procfs с помощью Android Nougat. Эта ошибка позволяет приложениям обходить определенные разрешения для мониторинга других процессов, но они по-прежнему не могут взломать «песочницу» Android и украсть данные из других приложений. В любом случае, это непреднамеренное поведение, которое нарушает функцию конфиденциальности Android, поэтому это необходимо исправить.

Затронуто ли мое устройство?

Вот список устройств, которые, как мы обнаружили, не монтируют procfs с помощьюidepid=2:

OEM

Устройство

Версия Android

утечки procfs

Асус

ЗенФон 5Z

Андроид 8.0 Орео

Да

Ежевика

КЛЮЧ2

Андроид 8.0 Орео

Нет

Существенный

РН-1

Андроид 9 пирог

Нет

Google

Пиксель 2

Андроид 9 пирог

Нет

Google

Пиксель 3

Андроид 9 пирог

Нет

Google

Пиксель 3 XL

Андроид 9 пирог

Нет

Честь

Магия 2

Андроид 9 пирог

Да

ХТК

U12+

Андроид 8.0 Орео

Да

Хуавей

Мате 20 Х

Андроид 9 пирог

Да

LG

G7 ThinQ

Андроид 8.0 Орео

Да

LG

V40 ThinQ

Андроид 8.1 Орео

Да

Моторола

Мото G4

Андроид 8.1 Орео

Нет

Нокиа

7.1

Андроид 8.1 Орео

Нет

OnePlus

6

Android 8.1 Oreo/Android 9 пирог

Да

OnePlus

Андроид 9 пирог

Да

Рейзер

Телефон 2

Андроид 8.1 Орео

Да

Samsung

Галактика Примечание 8

Андроид 8.0 Орео

Нет

Samsung

Галактика Примечание 9

Android 8.1 Oreo/Android 9 пирог

Нет

Samsung

Галактика С7

Андроид 8.0 Орео

Нет

Samsung

Галактика С8

Андроид 8.0 Орео

Нет

Samsung

Галактика С9

Андроид 9 пирог

Нет

Samsung

Галактика S9+ (Эксинос)

Андроид 8.0 Орео

Да

Сони

Xperia XZ1

Андроид 9 пирог

Нет

Сяоми

Ми Микс 2С

Андроид 9 пирог

Да

Сяоми

ПОКО F1

Андроид 8.1 Орео

Да

Как проверить, не затронуто ли ваше устройство

Проверить, не передает ли ваше устройство информацию о процессах другим приложениям, довольно легко (другими словами, procfs не монтируется с помощьюidepid=2). Хотя вы можете использовать команды оболочки, как мы, вы также можете проверить это с помощью приложения, разработанного topjohnwu. Его приложение также позволяет вам перемонтировать procfs с помощью Hidepid=2, если ваш телефон имеет root-права.

Скачать ProcGate

Будет ли исправление?

Да, это будет исправлено. Google теперь будет требовать, чтобы все устройства монтировали procfs с помощью hipid=2. Они будут обеспечивать это путем обновление Набор тестов совместимости (CTS) — набор тестов, которые должны пройти все устройства, чтобы иметь возможность использовать приложения и сервисы Google Play. Все OEM-производители (которые хотят продавать устройства с предустановленным Google Play Store) в ближайшем будущем должны в конечном итоге выпустить обновление для перемонтирования procfs с помощью displaypid=2. Поскольку устройства OnePlus были первыми, на которых была обнаружена эта проблема, OnePlus уже уведомлен и работает над исправлением. Мы обновим эту статью, если другие OEM-производители прокомментируют эту ошибку, но не стоит задаваться вопросом, выпустит ли OEM-производитель вашего устройства обновление. Если они хотят, чтобы их обновление прошло CTS, они должны исправить эту ошибку.