ニュース

アプリのroot化端末チェック(SafetyNet)を回避する方法まとめ

アプリのroot化端末チェック(SafetyNet)を回避する方法はいくつかありますが、それらの違いや導入方法についてまとめてみました。

システム改変(root化)をチェックする「SafetyNet API」

Android向けに様々なアプリがリリースされていますが、root化チェックを行い、root化されている端末では動作しないものもあります。

その仕組みの1つに「SafetyNet API」というものがあります。
これは非常に厳しいチェック機構で、「root化されているか」だけでなく「システム自体が改変されているか」をチェックしています。

そのため、少しでもシステムが改変されていると起動できず、従来よく用いられていた「root cloak」でも回避することができません。
「SafetyNet API」(「SafetyNet  |  Google APIs for Android  |  Google Developers」より)

Android PayやPokémon GOなどで採用

このチェック機構を採用している代表的なアプリとして、決済サービスに用いられる「Android Pay」があります。

Android Payは近距離無線通信「NFC」を用いた非接触決済で、日本で言うところの"おサイフケータイ"のようなものです。
お金のやり取りが行われるアプリなので、セキュリティ確保のため採用しているというわけです。


また、先日のアップデート(Ver 0.37.0)よりゲーム「Pokémon GO」(ポケモンGO)にも採用されました。
Pokémon GOでは位置情報偽装や内部APIへの不正アクセスなどのチート行為が問題となっており、root化端末を完全排除するという対策を講じたようです。

実際に、カスタムROM(Resurrection Remix)を導入したNexus 6Pで起動してみると、下記のようなメッセージが表示され、アプリが動作しません。
Pokémon GOでは「認証できませんでした」や端末がroot化されている旨が表示され動作不能に

SafetyNetは回避可能

このようにシステム改変をチェックする機構であるSafetyNetですが、実は回避する方法がいくつか方法があります。

その多くはシステム領域(/system)を改変すること無く、特定のアプリが起動した時のみ非rootとしてSafetyNetに認識させることで回避しています。

こうすることで、端末がroot化されていてもアプリを動作させることができるというわけです。

SafetyNetの回避法と特徴

Magisk⇒更新により再び回避可能に

  • Android 5.0以上で利用可能
  • 簡単な設定が必要
  • Xposedが動作できない
  • v7以降はSafetyNet回避機能が削除⇒更新により再び回避可能になりました(v11.1で確認)
当初はXposedも動作可能でしたが、SafetyNetの更新により動作不可能に。Xposedが導入されていると、SafetyNetを回避することができなくなりました。

また、バージョン7よりSafetyNet回避機能自体が削除、v6以前ではSafetyNetを回避できないため、現在はMagiskを使用する意味はありません
更新により再び回避可能になりました(v11.1で確認)。

最初にアプリを指定してしまえば、後は操作不要で回避することができます。導入も本体zipをカスタムリカバリからインストールするだけと簡単です。

詳しくはこちらの記事を参照して下さい。

suhide⇒回避不可能

  • Android 6.0以上で利用可能
  • 導入しただけでSafetyNetを回避可能(設定不要)
  • Xposedが動作可能
  • バージョン0.54にて回避確認済(2016/10/8時点)
    →バージョン0.55+06suhideにて回避確認済(2016/10/19時点)
    →バージョン0.55+Root Switchにて回避確認済(2016/10/31時点)⇒回避不可能になりました
有名な開発者であるChainfire氏が開発した方法。導入するだけでSafetyNet回避が可能と非常に簡単です。また、Xposedも動作可能です。

しかし、Android 6.0以上のみが対象となっており、動作要件が厳しいのがネックとなっています。

詳しくはこちらの記事を参照して下さい。

hidesu⇒回避不可能?

  • Android 5.0以上で利用可能
  • 導入しただけでSafetyNetを回避可能(設定不要)
  • Xposedが動作できない
  • 設定が不可能なため、SafetyNetしか回避できない
    ※SafetyNet以外のrootチェックを行うアプリには使えない
  • 現在(2016/10/31時点)は動作しない?
導入するファイルが1つだけ、かつ設定不要と非常に簡単な方法です。Android 5.0以上で導入可能と要件も低くなっています。

しかし、Xposedが動作できない、設定が不可能なためSafetyNet以外のrootチェックを行うアプリには使えないなど欠点も存在します。

詳しくはこちらの記事を参照して下さい。

Root Switch

  • Android 5.0以上で利用可能(Android 4.4以下でも動く?)
  • 手動での切り替えが必要
  • Xposedが動作可能
  • systemless rootでなくて良い
    ※systemlessだとむしろ回避できません(対策あり)
  • バージョン1.3.3.2にて回避確認済(2016/11/8時点)
shakalaca氏がリリースする「Root Switch」というアプリを使用します。

手動での切り替えが必要で若干面倒ですが、systemless rootで無くて良い、Android 5.0でも動作OKなど幅広い端末で使用可能。Xposedが導入されていても回避できます。

詳しくはこちらの記事を参照して下さい。

アップデートなどで回避不可能になる可能性も

SafetyNet側でも対策が強化され、既にMagiskは使用できなくなり、suhideも一時的に回避不可能になりました。(0.54で再び動作)

現在回避可能な方法でも、今後は不可能になる可能性は十分にあります。

関連情報

Powered by Blogger.