SafetyNet のハードウェア認証により、Magisk でルートを隠すことが非常に困難になります

Magisk でルート アクセスを隠すことは、SafetyNet の最近の変更によりハードウェア認証が行われたため、非常に困難になりつつあります。

3 月に遡ると、数人のユーザーが Magisk をインストールしていました 気づいた 彼らのデバイスがSafetyNet認証に失敗していたことを報告しました。 このニュースは、多くの重要な銀行/金融アプリや、Pokémon Go や Fate/Grand Order などの人気ゲームが root 化されたデバイスでの実行を拒否していることを意味するため、XDA のコミュニティを悩ませていました。 しばらくの間、SafetyNet の強化された制限が撤回されたかのように見えましたが、ここ数週間で少数のユーザーに対して再び制限が適用されました。 しかし、Google は 5 月初旬に、ハードウェアによる認証をテストしていることを密かに認めました。 SafetyNet の応答。これが、Magisk がブートローダーのロック解除ステータスを隠すことができなくなった原因です。 行進。 この変更が広範囲に展開されると、ユーザーはルート/カスタム ROM/カーネルなどへのアクセスのいずれかを選択する必要があることになります。 または好みの銀行アプリやゲームを選択します。 パワー ユーザーにとっての Android の最大の魅力の 1 つは、まもなく失われる可能性があります。

この一連の出来事を要約するには、まず SafetyNet 自体について話さなければなりません。 SafetyNet は、Google Play サービスの API セットです。 SafetyNet Attestation API はそれらの API の 1 つであり、サードパーティのアプリケーションから呼び出して、デバイスのソフトウェア環境が何らかの方法で改ざんされていないかどうかを確認できます。 API は、スーパーユーザー バイナリの兆候、ブートローダーのロック解除ステータスなど、さまざまなことをチェックします。 Magisk でデバイスをルート化すると、[SafetyNet] 検出プロセス用に隔離された「安全な環境」が「作成され」、Google の API を介して 合法的な 「SafetyNet の結果は、デバイスの実際のステータスを反映していません」(XDA 上級認定開発者による)

トップジョンウ. これにより、ブートローダーのロック解除チェックに対して API が常に「false」を返すようにしながら、ユーザーは自分の携帯電話をルート化できます。 SafetyNet のブートローダーのロック解除検出をバイパスするこの方法は、ここ数年間、Magisk でうまく機能しています。 しかし、それは単に Google がハードウェアを使用したブート イメージの整合性の検証を延期してきたためです。 証明。 3 月、Google はついに SafetyNet でハードウェア証明書を使用して、 ブート イメージですが、Google から変更を確認する公式声明は得られず、一部のユーザーのみが変更を確認しました。 影響を受ける。 XDA 上級メンバーが発見 ディスプレースただし、Google は 2020 年 5 月 5 日に、一部のデバイスからの SafetyNet Attestation API 応答にハードウェアによるチェックが含まれていることを確認しました。

Google は、「SafetyNet API クライアント」の Google グループで、Attestation API の新機能、evaluationType について詳しく説明しました。 一部のデバイスからの JSON Web Signature (JWS) 応答には、「開発者に洞察を提供する」「evaluationType」という名前のフィールドが含まれます。 個々の SafetyNet Attestation API 応答に寄与した信号/測定のタイプに分割します。」 サポートされているトークンの 1 つ このフィールドの「HARDWARE_BACKED」は、API がリモート デバイスの利用可能なハードウェア バックアップ セキュリティ機能を [使用] していることを示します (例えば。 ハードウェアベースのキー構成証明Google は、「現在、ハードウェア支援に依存するデバイスの適格基準を評価および調整しているところです」と述べています。 これが意味するのは、一部のデバイスでは、Google Play Services がハードウェアによる認証を使用して、デバイスのソフトウェアがインストールされていないことを検出しているということです。 改ざんされました。 Google は、Google グループでの発表以外にこの変更を正式に文書化していないため、SafetyNet を使用する一部の開発者は、 この変更を認識していません (したがって、JWS 応答の "HARDWARE_BACKED" フィールドをまだチェックしていません)。 このフィールドをチェックしている場合、デバイスが Google のテストに参加している限り、root アクセスを非表示にする方法はありません。 ランニング。

topjohnwu 氏によると、ハードウェアによる認証とは、Google Play Services が「未変更のキーストア証明書を SafetyNet サーバーに[送信]し、その正当性を[検証]し、 証明書拡張データを [チェック] して、デバイスでブートが有効になっている (ブートローダーのステータス) ことが確認されたかどうかを確認します。」 キーストア証明書の派生元となる秘密鍵は 電話機の隔離された安全な環境によって支えられているため、それらを取得するには、電話機の信頼できる実行環境 (TEE) のセキュリティまたは専用ハードウェア セキュリティを破る必要があります。 モジュール (HSM)。 何らかの方法で秘密鍵を漏洩できた場合、 キーはすぐに取り消されてしまう Googleが発見したら。 Google は、Pixel スマートフォンの TEE に影響を与える重大なセキュリティ脆弱性に対して数十万ドルの報奨金を提供します。 これは、これがブートローダーのロック解除検出をバイパスする潜在的な手段となる可能性は非常に低いことを示しています。 いずれかの方法。

Magisk がブートローダーのロック解除ステータスを偽装し続けるもう 1 つの潜在的な方法は、常に BASIC 評価を使用するように SafetyNet のクライアント側コードを変更することです。 として トップジョンウーのメモただし、これには、Xused Framework などのフック フレームワークを介してカスタム コードを Google Play サービスに挿入する必要があります。 Google Play サービスは高度に難読化されているため、これを実行するのが難しいだけでなく、「メモリ空間の分析によってコード操作が非常に明らかになるため、隠すことも不可能です」 さらに、これは、Google のサーバーが BASIC 評価を受け入れ続け、HARDWARE_BACKED 評価がサポートされているデバイスで強制されない場合にのみ機能します。 彼ら。 (topjohnwu によれば、SafetyNet の応答は「Google サーバーから送信され、Google の秘密鍵で署名されている」ため、実際の応答は偽装できません。)

Android 7 Nougat 以降、Google はすべてのデバイスに隔離された安全な環境を備えていることを要求しています。 つまり、SafetyNet によるブートローダーのロック解除の検証方法の変更は、現在使用されているほとんどのデバイスに影響を与えることになります。 そこには。 隔離された安全な環境を持たない古いデバイスは明らかにハードウェアによる認証を実行できないため、Magisk は引き続きこれらのデバイス上の root アクセスを隠すことができます。 しかし、この変更が広範囲に展開されると、他の人はルート アクセスとバンキング アプリのどちらを使用するかという難しい選択を迫られることになります。

残念ながら、実際には必要のないときに SafetyNet チェックを使用するアプリがおそらくたくさんあります。 topjohnwu が引用した例の 1 つは、マクドナルドの公式アプリですが、これはブートローダーのロックが解除されたデバイスでの実行を拒否しているようです。 Twitter で、topjohnwu は、API を過剰に使用するアプリがパワー ユーザーにとって敵対的な環境を作り出していると非難しています。 XDA 認定開発者 クイニー899 彼のチームがデバイスのセキュリティ ステータスをチェックするために SafetyNet の使用を検討した方法についての逸話を紹介します。 彼のチームのアプリは扱う機密データをすべて暗号化しているため、最終的にはこれを実行しないことに決めました。 彼は、SafetyNet は、特に次のことを考慮した場合、適切なセキュリティとデータ処理慣行の代わりに使用されるべきではないと主張します。 スーパーユーザーエクスプロイトの可能性.

新しい SafetyNet の変更が Magisk にどのような影響を与えるかについて詳しくは、topjohnwu の記事を参照してください。 Twitter の優れた FAQ. お使いのデバイスが Google の新しい SafetyNet テストの一部であるかどうかを確認したいだけの場合は、次のようにしてください。 このガイド by XDA シニア メンバー Displax または最新の Magisk Manager リリースをダウンロードしてください。


この記事は、2020 年 6 月 30 日午前 10 時 46 分(EST)に更新され、Google が Pixel スマートフォンで見つかった TEE 脆弱性に対してのみ報奨金を支払うと訂正されました。 さらに、最新のMagisk Managerリリースに関する詳細が追加され、組み込みのSafetyNetチェッカーにevaluationTypeフィールドが表示されるようになりました。