MASTG-TEST-0325 ルート検出技法の実行時使用 (Runtime Use of Root Detection Techniques)
概要
このテストは、よくあるルート検出メカニズムへのフックを試行することで、アプリが実行時ルート検出を実装しているかどうかを検証します。これらは、ルート化デバイスに通常関連付けられるファイルやアーティファクトのチェック、既知のルート検出 API やライブラリへの呼び出しを含むことがあります。
ルート検出技法や、探し出す具体的な API やアーティファクトの詳細情報については ルート検出 (Root Detection) を参照してください。
このテストは、静的解析を通じてルート検出ロジックの存在についてチェックする ルート検出メカニズムへの参照 (References to Root Detection Mechanisms) と組み合わせるのが最適です。このように、静的解析から潜在的なルート検出メカニズムのリストを取得し、それから特定のチェックに動的テストを集中して、実行時にトリガーされることを確認できます。または、まず動的テストを実行して実行時にアクティブなルート検出メカニズムを特定し、それから静的解析を使用してそれらの実装とカバレッジをさらに調査できます。
テスト時にルート検出メカニズムがトリガーされるように、ルート化デバイスまたはエミュレータを使用してこのテストを実行することをお勧めします。但し、ルート化されていないデバイスであっても、アプリがルートアクセスを必要としないチェック (たとえば、ルート関連ファイルやシステムプロパティの存在のチェック) を実行する場合、このテストは依然としてルート検出ロジックを表面化できます。
[!NOTE] "スコープ外" このテストはルート検出メカニズムの堅牢性や有効性はカバーしていません。自動テストのみで評価するのは非常に困難であり、手作業でのリバースエンジニアリングやカスタム計装を必要とすることがあります。ルート検出を効果的に実装するためのベストプラクティスについては ルート検出を実装する (Implementing Root Detection) を参照してください。
手順
メソッドフック (Method Hooking)、メソッドトレース (Method Tracing)、実行トレース (Execution Tracing) を実行して、関連する API 呼び出しをトレースします。
必要に応じて、ルート検出のバイパス (Bypassing Root Detection) を実行して、アプリケーションのルート検出チェックをバイパスすることを試み、その結果を観察します。たとえば、特定のチェックのバイパスに成功した場合や検出に失敗した場合、ルート検出メカニズムの存在を示唆する可能性があります。
結果
出力には、ルート検出チェックのインスタンスと、フックされたメソッドまたは API を含む可能性があります。
評価
ルート検出チェックのインスタンスが観察されない場合、このテストケースは不合格です。
ルート検出チェックが観察された場合、このテストケースは合格です。但し、このテストからの結果はルート検出ロジックの存在の証跡として解釈されるべきであり、その堅牢性や有効性の評価としてではありません。ルート検出を実装する (Implementing Root Detection) を参照してください。
予想される検出漏れ:
このテストはルート検出ロジックを表面化するためにトレースツールとバイパスツールに依存しています。高度に難読化されたり、完全にネイティブコードで実装されていたり、実行時に動的にロードされたり、アンチ計装技法で保護されている検出メカニズムは観察されない可能性があります。そのような場合には、発見されないことがルート検出がないことを保証するものではなく、追加の手動リバースエンジニアリングやカスタム計装が必要になることがあります。
Last updated