Аттестация оборудования SafetyNet затруднит сокрытие root-прав в Magisk

Скрыть root-доступ в Magisk станет намного сложнее благодаря недавнему изменению в SafetyNet, включающему аттестацию оборудования.

Еще в марте несколько пользователей установили Magisk. заметил что их устройства не прошли аттестацию SafetyNet. Эта новость обеспокоила сообщество XDA, поскольку она означает, что многие важные банковские/финансовые приложения и популярные игры, такие как Pokémon Go и Fate/Grand Order, отказывались запускаться на устройствах с root-доступом. Некоторое время казалось, что ужесточенные ограничения в SafetyNet были отменены только для того, чтобы в последние несколько недель снова действовать для горстки пользователей. Однако в начале мая Google незаметно подтвердил, что они тестируют аппаратную аттестацию для Ответы SafetyNet, из-за которых Magisk не смог скрыть статус разблокировки загрузчика обратно в Маршировать. Если это изменение будет широко распространено, это будет означать, что пользователям придется выбирать между доступом к корневым/пользовательским ПЗУ/ядрам/и т. д. или предпочитаемые ими банковские приложения и игры. Одна из самых привлекательных сторон Android для опытных пользователей вскоре может исчезнуть.

Подводя итог этой серии событий, нам следует сначала поговорить о самой SafetyNet. SafetyNet — это набор API-интерфейсов в сервисах Google Play. API аттестации SafetyNet является одним из таких API, и сторонние приложения могут вызывать его, чтобы проверить, не была ли каким-либо образом изменена программная среда устройства. API проверяет различные вещи, такие как признаки двоичных файлов суперпользователя, статус разблокировки загрузчика и многое другое. Когда вы рутируете устройство с помощью Magisk, оно «[создает] изолированную «безопасную среду» для процесса обнаружения [SafetyNet] и проходит через API Google для создания законный Результат SafetyNet, который не отражает реальное состояние устройства», — согласно словам старшего признанного разработчика XDA. топджонву. Это позволяет пользователю рутировать свой телефон, гарантируя, что API всегда возвращает «false» для любых проверок разблокировки загрузчика. Этот метод обхода обнаружения разблокировки загрузчика SafetyNet работает для Magisk в течение последних нескольких лет, но это только потому, что Google воздерживается от проверки целостности загрузочного образа с помощью аппаратного обеспечения. аттестация. В марте казалось, что Google наконец-то начал использовать аттестацию оборудования в SafetyNet для проверки загрузочного образа, но мы так и не получили официального заявления от Google, подтверждающего изменение, и лишь несколько пользователей были затронутый. Как заметил старший член XDA ДисплаксОднако 5 мая 2020 г. компания Google подтвердила, что ответы SafetyNet Attestation API от некоторых устройств теперь включают аппаратные проверки.

В группе Google «Клиенты API SafetyNet» Google подробно описал новую функцию API аттестации: AssessmentType. Ответ JSON Web Signature (JWS) от некоторых устройств будет содержать поле с именем «evaluationType», которое «предоставит разработчикам представление по типам сигналов/измерений, которые способствовали каждому отдельному ответу API аттестации SafetyNet». Один из поддерживаемых токенов в этом поле указано «HARDWARE_BACKED», что указывает на то, что API «[использовал] доступные аппаратные функции безопасности удаленного устройства. (например. аппаратная аттестация ключа), чтобы повлиять на [его] оценку». В Google говорят, что они «в настоящее время оценивают и корректируют критерии приемлемости для устройств, на которых мы будем полагаться на аппаратное обеспечение». Это означает, что на некоторых устройствах службы Google Play теперь используют аппаратную аттестацию, чтобы обнаружить, что программное обеспечение устройства не было подделаны. Google официально не задокументировал это изменение, за исключением объявления в группе Google, поэтому некоторые разработчики, использующие SafetyNet, могут не знать об этом изменении (и, следовательно, еще не проверять поле «HARDWARE_BACKED» в ответах JWS). Однако для тех приложений, которые проверяют это поле, теперь невозможно скрыть от них root-доступ, при условии, что ваше устройство участвует в тестировании, которое проводит Google. бег.

По словам топджонву, аппаратная аттестация означает, что Сервисы Google Play теперь «[отправляет] немодифицированный сертификат хранилища ключей на серверы SafetyNet, [проверяет] его легитимность и [проверяет] данные расширения сертификата, чтобы узнать, [проверено] ли на вашем устройстве включена загрузка (состояние загрузчика)». Поскольку частные ключи, из которых извлекаются сертификаты хранилища ключей, поддерживаются изолированной безопасной средой телефона, их получение потребует нарушения безопасности доверенной среды выполнения (TEE) телефона или выделенной аппаратной безопасности. модуль (HSM). Если бы кто-то каким-то образом смог утечь секретный ключ, ключи будут быстро отозваны как только Google узнал об этом. Google предлагает вознаграждение в сотни тысяч долларов за любые критические уязвимости безопасности, влияющие на TEE в телефонах Pixel. что просто показывает, что маловероятно, что это будет потенциальным способом обойти обнаружение разблокировки загрузчика. в любом случае.

Другой потенциальный способ, с помощью которого Magisk может продолжать подделывать статус разблокировки загрузчика, — это изменить клиентский код SafetyNet, чтобы он всегда использовал оценку BASIC. Как Топджонву отмечаетОднако для этого потребуется внедрить собственный код в Сервисы Google Play с помощью платформы перехвата, такой как Xpose Framework. Это не только сложно сделать, потому что Сервисы Google Play сильно запутаны, но и невозможно скрыть их, поскольку «некоторый анализ пространства памяти выявит манипуляции с кодом. Кроме того, это также будет работать только в том случае, если серверы Google продолжат принимать оценки BASIC и если оценки HARDWARE_BACKED не будут применяться на устройствах, поддерживающих их. (Ответы SafetyNet «[приходят] с серверов Google и подписываются закрытым ключом Google», согласно topjohnwu, поэтому фактические ответы не могут быть подделаны.)

Начиная с Android 7 Nougat, Google требует, чтобы все устройства имели изолированную безопасную среду. это означает, что это изменение в том, как SafetyNet проверяет разблокировку загрузчика, повлияет на большинство устройств, которые отсутствуют там. Поскольку старые устройства без изолированной безопасной среды, очевидно, не могут выполнять аппаратную аттестацию, Magisk все равно сможет скрыть root-доступ на этих устройствах. Но если это изменение получит широкое распространение, всем остальным придется сделать трудный выбор между корневым доступом и банковскими приложениями.

К сожалению, вероятно, существует множество приложений, которые используют проверки SafetyNet, когда в этом нет необходимости. Одним из примеров, приведенных topjohnwu, является официальное приложение McDonald's, которое, похоже, отказывается запускаться на устройстве с разблокированным загрузчиком. В Твиттере topjohnwu называет приложения, которые злоупотребляют API, создающими враждебную среду для опытных пользователей. Признанный разработчик XDA Куинни899 присоединяется к анекдоту о том, как его команда рассматривала возможность использования SafetyNet для проверки статуса безопасности устройства. В конечном итоге они решили не доводить дело до конца, поскольку приложение его команды шифрует все конфиденциальные данные, с которыми оно работает. SafetyNet, утверждает он, не следует использовать вместо надлежащих методов обеспечения безопасности и обработки данных, особенно при рассмотрении возможность эксплойтов суперпользователя.

Для получения дополнительной информации о том, как новое изменение SafetyNet повлияет на Magisk, посетите сайт topjohnwu. отличный FAQ в Твиттере. Если вы просто хотите проверить, участвует ли ваше устройство в новом тесте SafetyNet Google, вы можете подписаться на него. это руководство от XDA Senior Member Displax или загрузите последнюю версию Magisk Manager.


Эта статья была обновлена ​​в 10:46 по восточному стандартному времени 30 июня 2020 г., чтобы исправить положение, согласно которому Google выплачивает вознаграждение только за TEE-уязвимости, обнаруженные в телефонах Pixel. Кроме того, были добавлены подробности о последней версии Magisk Manager, в которой теперь отображается поле AssessmentType во встроенной программе проверки SafetyNet.