May 2018

Volume 33 Number 5

セキュリティ - Xamarin アプリからルート化されている Android デバイスを検出し応答する

によってJoe Sewell

ランタイム チェックをコード インジェクションを使用する方法は説明を最後の 11 月の問題で、デバッガーの不正使用からだけでなく改ざんから .NET Framework アプリを保護する、Visual Studio 2017 に含まれている機能 (msdn.com/magazine/mt845626)。その後、新しい種類のチェックは利用可能になりました。Xamarin.Android アプリが「ルート」のデバイスで実行されているときに検出ルート チェック-管理者のアクセス許可 (ルート アクセス) で機能する通常のアプリを可能にします。

このフォロー アップの記事で説明理由ルート化されたデバイスが危険にすべての Android 開発者が理解する必要があります。Xamarin.Android 開発者の使い方ルート チェックを検出し、そのリスク; への応答の詳細します。サンプル シナリオでのベスト プラクティスを示します。

ルートを防ぐために必要な理由

Xamarin プラットフォームでは、Android、iOS および Windows デバイスのモバイル アプリを効率的に作成することができます。C# のような .NET 言語に慣れている開発者では、その知識を実行でき、モバイルの領域に適用することができます。Xamarin.Forms のようなテクノロジでは、多くのプラットフォームでは、コスト、複雑さが軽減され、クロスプラット フォーム アプリの開発のリスクの違いが抽象化します。Xamarin ツールを最新にするで新しいバージョンと各プラットフォームの機能をサポートするために続行することができます。

ただし、モバイル開発の一部のプラットフォームに固有の機能は価値を持つ開発者向けの注意します。このような 1 つの側面は、セキュリティです。各プラットフォームは、これらのリスクに対処するには、一意のセキュリティ リスクや一意なセキュリティ モデルには。たとえば、権限システムおよびとは異なるプラットフォーム間で場合がありますが同じプラットフォームのバージョン間であっても。

Android アプリの場合は、ルート化されたデバイスは、特に重要なセキュリティの問題です。OS は、通常のセキュリティのサンド ボックスから抜けるにアプリを許可するのには、そのようなデバイスが変更されました。これにより、マルウェアとパスワードを盗むキーロガーなど、多くの危険性をデバイスが公開ことができます。多くの場合、ユーザーが何らかの問題を解決するようにデバイスをルート — は通常、デバイス、アプリのバージョンを求めているのと同様に-これらの脅威の重大度を認識しないままです。それ以外の場合にユーザーできない可能性がありますもデバイスがルート化されていることに注意してください、したがってに対して脆弱です。

最後の年 9 月、支払いカードの業界のセキュリティ標準 Council (PCI SSC) では、開発者向けモバイル支払受け入れセキュリティ ガイドラインのバージョン 2.0 が発行されます。モバイル アプリの開発者は、ルートの検出と、アプリを検疫する応答のメカニズムを実装が、ガイドライン、ルート化されたデバイスに関連付けられているセキュリティ上のリスクに対処する推奨 (bit.ly/2H5ymge)。セクション 4.3 (太字は追加) から関連するテキストを次に示します。

[T] オペレーティング システムのセキュリティ controls—e.g jailbreaking やルートを破ることアクティビティには、デバイスを監視してください: と、ネットワークから削除、支払い承認を削除するソリューションでデバイスを検疫するか、検出されたときに。デバイスからアプリケーションまたは支払アプリケーションを無効にします。オフライン脱獄とルートの検出と自動検疫によって攻撃者がさらに検出を回避するためにオフライン状態で、デバイスを配置すると可能性がありますので、キーがします。

ルート化された環境でアプリを操作する正当なユーザーに関連付けられているリスクだけでなく、このような環境は、リバース エンジニア リング アプリしようとしています。 悪意のあるユーザーにも指定できます。攻撃者は、調査をマルウェアと入力して、アプリの改ざんされたバージョンを作成するルート化されたデバイスを頻繁に使用します。開いている Web アプリケーション セキュリティ プロジェクト (OWASP) 上位 10 Mobile のリスクの 1 つとして改ざんコード一覧を表示 (bit.ly/2GNbd4o) とルートの検出とこのようなリスクに対処する手段としての応答を呼び出しを具体的にします。これを行わない、OWASP、に従って、reputational 損害、逸失利益する可能性があります。

ルート チェック

Root 化されたデバイスの検出は困難なことができます。多くのさまざまな手法を使用して、デバイスを root 化することができ、利用可能な手法のセットが時間の経過と共に、および Android バージョン間に変更します。この結果、ルート検出コードが進化常に、適応する必要があります。これは悪意のあるルート手法の一部が適切なルートの検出コードは、これらの対策にも対応する必要がありますので、利用を隠すしようとするという事実によってさらに悪化します。最新の状態のルートの検出コードを保守する手間がかかる場合は、限られたリソースを費やしてするができない可能性があります。

幸運にも、ルートを検出するために、独自のコードを記述する必要はありません。Windows 用の Visual Studio 2017 に含まれる Dotfuscator Community Edition (CE)、プリエンプティブな保護に挿入できますルート チェック Xamarin.Android アプリ。デバイスがオフラインになっている場合でも、ルート化された環境を検出ルートを確認します。呼び出してルートに応答するチェックを構成するだけでなく、標準的な「アプリを終了」のアクションをアプリケーション コードをカスタマイズします。

Xamarin 自体と同じようにルート チェック複雑さ、コストとリスクを軽減と比較して、独自の実装をロールバックします。Dotfuscator を最新に保つし、ルートの検出を処理できます — 迅速なアプリの重要な部分で作業を復帰させます。

サンプル シナリオ

ルート チェックを示すためには、保護される TodoAzureAuth と呼ばれるサンプル アプリを提供しています。これは、次のように既存 Xamarin.Forms サンプル TodoAzureAuth に基づいて (bit.ly/2InvU48)、David Britch によって最初に記述します。

この記事の残りの部分では、アプリ、およびルートのチェックと戦略を適用する方法に適用した保護戦略について説明します。このケース スタディを使用するだけでなく、サンプルの GitHub リポジトリに含まれるその他のシナリオ (bit.ly/2GQutOv)、ルートは Xamarin.Android アプリに適用することを確認する方法を学習します。

元のサンプル: TodoAzureAuth は、ユーザーを表示して、共有の to do リストの変更を有効にすると、Microsoft Azure のモバイル アプリのインスタンスに接続します。Xamarin アプリで認証を実行する方法を示すためには、このサンプルには、to do リストにアクセスする前に Google アカウントでログインするユーザーが必要です。

フィールド、[ログイン] ボタンだけがログイン ページで、アプリを開始しません。ユーザーは、このボタンを選択するときに、アプリは Google の OAuth システムは、ユーザー、パスワードを含む資格情報を入力する必要がある、ログイン プロセスを委任します。その結果、アプリ自体には、資格情報を処理しません。ユーザーがログインすると、アプリはユーザーが共有の to do リストにアクセスできるように、Todo リスト ページを表示します。ユーザーは、ログアウトし、[ログアウト] ボタンを選択して、ログイン ページに戻ることができます。

保護戦略:この記事として扱われます TodoAzureAuth Android プロジェクト、TodoAzure.Droid、PCI 準拠アプリの場合と同様に、デリケートなデータを処理していた。によって実装される適切な保護戦略 Dotfuscator CE を使用して、アプリにルート チェックを挿入する、アプリでは、保護される TodoAzureAuth の保護されているバージョンを作成します。

保護対象のアプリでは、ユーザーは、[ログイン] ボタンを選択したときにルートを確認して、アクティブにします。アプリがルート化されたデバイスで実行されている場合、突然、終了し、短いエラー メッセージの後は、デバイスがルート化されている場合でもすべてしようとして、アプリの実行は終了もします。図 1この方法で保護されているアプリの概要を示します。

保護されている TodoAzureAuth サンプル アプリの概要については
保護されている TodoAzureAuth サンプル アプリの概要については図 1

この方法は、以前に引用符で囲まれた、PCI ガイドラインによって行われた推奨事項に揃えて配置します。

  • アプリでは、ルートのデバイスを監視します。
  • アプリは、ルートが検出された場合に、それ自体を無効にして、デバイスを検疫します。
  • このセキュリティ コントロールは、デバイスがオフライン場合でもは動作します。

ときに、アプリを無効に自体では、エラー メッセージの通知、ユーザー、デバイスは安全ではありません。このサンプルでは使用されません、このシナリオを使用してアプリでしたも"phone ホーム"Visual Studio アプリ センターなどの分析プラットフォームに (bit.ly/2pYMuk5)。

に加えて、PCI ガイドラインに従うと、この戦略も行リバース エンジニア リングを防ぐために、ルート化された環境でアプリケーションをシャット ダウン OWASP 推奨事項にします。構成しましたコードでは、ログイン プロセスだけでなく他の部分でアクティブ化するルートを確認、アプリの他の部分がルートに対処しても、攻撃者が改ざんされたバージョンのアプリを作成する、ログイン プロセスのルートの検出が削除された場合、できるようにします。Dotfuscator は、コードも難読化、アプリと、ルートを確認する別の保護の層を追加します。

すべてのアプリは、同じセキュリティ要件を持ち、すべてのアプリを同じ方法でルートに対応するため。このサンプルでは、厳密なアプローチを選択したが、して比較的緩い戦略は、特定の状況でルート化されたデバイス上で実行するアプリを許可できます。例については、「別の保護の方法です。」を参照してください。

保護されたサンプル:以前に指定された GitHub リンクを使用して保護される TodoAzureAuth サンプルを表示することができます。既定のマスター分岐に保護にルート チェック TodoAzure.Droid されるように、アプリが前に説明した戦略を満たしている Dotfuscator CE 既に設定しました。Git 履歴チェックする前に分岐をサンプルにこの記事の手順にどのように適用して、開始に従うことができます。

セットアップ、ビルド、およびサンプルを実行する方法の詳細については、サンプルの README を参照してください。README は、その他の分岐のリポジトリ内に存在より「代替保護戦略です。」詳細な戦略など、この記事に使用される別の保護方法を示す詳細情報も含まれています。

ビルド Xamarin Dotfuscator に統合します。

Android パッケージ (.apk ファイル) などありませんモバイル プラットフォームの形式の Dotfuscator は、.NET アセンブリ (.dll および .exe ファイル) に動作するため Dotfuscator を Xamarin のビルド プロセスに統合しました。統合を設定するをインストールして Dotfuscator CE を登録する、特殊な MSBuild ターゲット ファイルをダウンロードしてにそれらのターゲットを含めるプロジェクト ファイルの変更が必要です。Xamarin のブログのための統合手順を実行する方法について記述したことでこれらの手順を参照してくださいbit.ly/2w9em6cです。

重要:ルート チェックには、Visual Studio 2017 の Dotfuscator CE 5.35 またはそれ以降のバージョンが必要があります。最新のバージョン、常に取得できるbit.ly/2fuUeowです。

TodoAzure.Droid プロジェクト ファイルのリリースを保護する Xamarin ブログ手順に従って |AnyCPU ビルド構成。この記事は、ルートのチェック、Android に固有の機能は、Xamarin ブログ保護する手順に iOS ユニバーサル Windows プラットフォーム (UWP) を使用およびプロジェクト コード難読化を行うことができるため、この Android プロジェクトをだけに関するものです。

Dotfuscator 保護を構成します。

Dotfuscator を TodoAzure.Droid プロジェクトのビルド プロセスに統合した後は、Dotfuscator CE UI から保護を構成しました。プロジェクトの保護設定は、ビルドの統合では、最初にビルドをプロジェクトに追加する、特殊なの Dotfuscator 構成ファイルに保存されます。

Dotfuscator 構成ファイルを作成しています。リリースでのプロジェクトのビルド構成 Dotfuscator を使用するように設定した構成は AnyCPU プラットフォームを TodoAzure.Droid 構築された Visual Studio 2017 を使用して、します。これにより、新しい Dotfuscator config ファイル、DotfuscatorConfig.xml、プロジェクトのディレクトリが生成されます。後でカスタマイズをそのカスタマイズに基づいて、保護を再適用可能性がありますソース管理にこの新しいファイルを追加しました。

ビルドでは、Dotfuscator の書き込み先レポート ファイルのさまざまな統合の一環として実行されるときに、プロジェクト ディレクトリを取得するには自分で DotfuscatorReports ディレクトリも作成されます。このディレクトリの内容は、各ビルドを更新するため、このディレクトリを無視するソース コントロールがありました。

開く Dotfuscator:Dotfuscator 構成ファイルをカスタマイズするには Dotfuscator CE UI から開いた Visual Studio 2017 ツールを選択して |Dotfuscator プリエンプティブ保護します。ファイルを選択した UI では、Dotfuscator されていた、|プロジェクトを開き、TodoAzure.Droid プロジェクトのディレクトリに移動し、DotfuscatorConfig.xml、Dotfuscator 構成ファイルを選択します。Dotfuscator UI が更新され、この Dotfuscator 構成ファイルを保護する 2 つのアセンブリの表示。TodoAzure.Droid.dll 自体と、ポータブル クラス ライブラリ (PCL) アセンブリ TodoAzure.dll です。

Dotfuscator ui プロジェクトのビルド オプションが Xamarin パッケージ化の手順を実行しないことに注意してください。Android パッケージには、保護されているアセンブリが含まれることを確認するには、代わりに Visual Studio または MSBuild からプロジェクトをビルドします。

コード インジェクションを有効にします。チェックは、Dotfuscator コード インジェクション機能の一部です。コード インジェクションを有効にするには、Dotfuscator ナビゲーション バーでインジェクション ノードを右クリックして、Enable オプションをオンします。インジェクション ノードのテキストの色を黒に、インジェクションが有効になっていることを示すグレーから変更されました。

表示するには、チェックが構成されています。Dotfuscator をチェック] ページでは、に備えてこの DotfuscatorConfig.xml TodoAzure.Droid プロジェクトで読み込まれた構成ファイルは、すべての構成チェックの一覧を表示します。このページを表示するには、インジェクション ノードを選択してチェック] タブに切り替えられます。

この一覧を訪れた最初ときに、空でした。ようにそのチェックの行を含める一覧を更新すれば、一度構成する、新しいルートを確認するように、次のセクションで説明図 2です。その行をダブルクリックして、チェックの構成を表示でした。

Dotfuscator チェック] ページで、ルートの確認を表示
図 2 の Dotfuscator チェック] ページで、ルートの確認を表示

この記事のこれがありませんでしたが、1 つの Dotfuscator config ファイルのルートを確認して 1 つ以上を構成することができますに注意してください。複数のチェックによって保護されているアプリの例は、最後の年 11 月取り上げた AdventureWorksSalesClient .NET Framework アプリを参照してください。

ルート チェックを追加します。

チェック] ページで、ルートの確認の追加] ボタンをクリックして、ルート チェックは追加します。行ったは、Dotfuscator に新しいチェックを構成するための新しいウィンドウが表示されます。図 3終了の構成を示しますこのセクションでは、各設定とそれらの設定を選択した理由の意味を説明します。

ルート チェックの構成-折りたたまれた TodoAzure.dll ノードによって非表示に追加の場所
ルート チェックの構成を図 3-折りたたまれた TodoAzure.dll ノードによって非表示に追加の場所

場所:各チェックは、アプリで、場所と呼ばれる 1 つまたは複数のメソッドに関連付けられています。アプリがこのようなメソッドを呼び出すときにルートを確認して、アクティブにルートを指定して、デバイスが表示された場合、その時点で検出します。これらのメジャーは、アプリを終了するいないと仮定すると、レポートと応答の機能が構成されているすべての実行後に、チェックは、メソッドの先頭にコントロールを返します。

このシナリオの確認には、複数の場所を選択します。アプリで使用する最初の場所は、ログイン要求を調整する TodoAzure.Droid.MainActivity.AuthenticateAsync です。この場所を使用するには、ルート チェックは実行の検出と反応ログイン プロセスが開始されるたびにすることを意味します。

保護戦略あたり AuthenticateAsync メソッドを最初に達したときにルート化されたデバイスで実行されているアプリが終了します。したがって理由でしたを追加が発生する他のメソッド、アプリのライフ サイクルの後で別の場所としてか。これは、リバース エンジニア リングに対する防御アプリのためです。作成した場合、攻撃者が改ざんされたバージョンをバイパスするか、または AuthenticateAsync でルートが確認コードを削除するアプリのこれらの他の場所は、ルート化された環境に反応することはできます。

これらの他の場所の一部は、TodoAzure.dll で定義されます。これを指定できます驚くことに、そのアセンブリには、Xamarin のすべてのプラットフォームに共通のロジックが含まれているだけ Android ではありません。どの Dotfuscator を挿入できるルートのチェック-root 化された Android デバイスを検出する-プラットフォームに依存しないアセンブリにしますか?この Dotfuscator 構成ファイルは TodoAzure.Droid プロジェクト、TodoAzure プロジェクトを参照することに注意してください。Dotfuscator TodoAzure.dll を変更するときは、Visual Studio や MSBuild のコピーを現在のプロジェクトでは、TodoAzure.Droid でを使用するアセンブリのみを変更します。元の TodoAzure プロジェクトのアセンブリは変更されません。

アプリケーション通知:チェックは、アプリ コードに、検出の結果を報告できます。これにより、検出作業 Dotfuscator ハンドルによって挿入されたことのチェック中に、レポートおよび応答動作をカスタマイズできます。検出結果を受け取るアプリケーション コードは、アプリケーションで通知シンクと呼ばれます。

このシナリオでは保護戦略を満たすためには、必要なため、アプリの将来の実行がエラー メッセージで終了自体には、無効にするアプリにでした。メソッドで、TodoAzure.App.DisableIfCompromised、ロジックを無効にするとこれを追加し、次の確認のプロパティを設定してチェックのシンクとして使用することにしました。

  • ApplicationNotificationSinkElement: コード要素の種類この場合は、メソッドです。
  • ApplicationNotificationSinkName: コード要素の簡易名この場合、DisableIfCompromised です。
  • ApplicationNotificationSinkOwner: コード要素を含む型この場合、TodoAzure.App です。

パブリックと静的であるとは、このシンク メソッドを呼び出すチェックの場所のいずれかのことができます。チェックと互換性がある、メソッドは、1 つのブール型の引数を取る、および、void の戻り値の型を持つ同期 (非同期ではない) は、します。

アクティブになると、チェックを呼び出し、メソッド引数 true の場合は、デバイスが root 化 false それ以外の場合します。この引数が true の場合は、チェックを検出した場合のルート —、メソッドは値をアプリが無効になったことを示す、ローカル記憶域に保存します。付随するプロパティ、IsDisabled は、保存された値を公開します。

// Definitions in TodoAzure.App
private const string DisabledPropertyKey = "AppStatus";
public static void DisableIfCompromised(bool wasCompromised)
{
  if (!wasCompromised) { return; }
  Current.Properties[DisabledPropertyKey] = new Random().Next();
  SavePropertiesNow();
}
public static bool IsDisabled =>
  Current.Properties.ContainsKey(DisabledPropertyKey);

アプリを無効にすると後のエラー メッセージと終了を表示する将来実行する必要があります。これを行うには、アプリの開始時に、ログイン ページが表示される前に呼び出される TodoAzure.LoginPage.OnAppearing すれば加わりました。アプリが無効になっている場合このメソッドはログイン ページを非表示に、エラー ダイアログを表示しして終了します。

// Definition in TodoAzure.LoginPage
protected override async void OnAppearing()
{
  if (App.IsDisabled)
  {
    IsVisible = false;
    var message = "The security of this device has been compromised. "
      + " The app will exit.";
    await DisplayAlert("App deactivated", message, "Exit App");
    App.Exit(); // Delegates to platform-specific exit logic
  }
  base.OnAppearing();
}

リバース エンジニア リングに対する防御たいので、アプリは、このような攻撃に対する回復力があることを確認する追加のメジャーを得ました。保存された値、AppStatus のあいまいな名前を使用して、値の意味が不明になる、ランダムな数値に値を設定します。構成も Dotfuscator、アプリを難読化するため、逆コンパイルされたコードの表示、攻撃者が関心のあるものとしては、このメソッドを簡単に識別しません DisableIfCompromised などの識別子の名前を変更できます。名前の変更の難読化を構成する方法の詳細については、サンプルの README を参照してください。

アクション :シンク (DisableIfCompromised メソッド) は、アプリの終了後を実行してプロパティを設定、そのしない自体を終了アプリ ルートは、最初に検出されたときにします。代わりに、これを行うに自動的に終了するアクションを確認してプロパティを設定して、チェックを構成しました。

チェックは、ルート化されたデバイスを検出すると、シンクに通知し、アプリをすぐに終了します。用意することによって、シンクではなく、チェックを実行この初期の終了が、アプリを使って終了ロジックの複数のコピーを展開しました。複数の場所と同様には、終了ロジックの複数のコピーより、攻撃者がルート チェックのいくつか削除されるときにそれ自体を防御するためにアプリを許可します。

ビルドと、アプリのテスト

ルート チェックを構成した後、[ok] を選択してチェックのウィンドウを終了した、Dotfuscator config ファイルにファイルを選択して変更を保存した |プロジェクトを保存します。Visual studio は正しく構成されている目的の保護方法を設定するルートを確認することを確認するために、保護されているアプリをテストに TodoAzure.Droid を構築しました。

非ルート デバイス、ルート化されたデバイスおよびエミュレーターでアプリをテストしました。非ルート デバイスで、アプリは正しく動作、to do リストの表示にログインできるようになりました。ただし、ルート化されたデバイスでし、[ログイン] ボタンを選択した後、エミュレーターでアプリ突然閉じられました。アプリ、アプリを再度起動するには後に、示すように、エラー ダイアログが表示される図 4以外の場合は、ダイアログで、もう一度終了したアプリを閉じた後にします。ログイン ページを表示するには、もう一度があったをアンインストールしてから、アプリを再インストールします。

エミュレーターで実行されている保護された TodoAzure.Droid
図 4 にエミュレーターで実行されている保護された TodoAzure.Droid

まとめ

この記事は、効果的に検出し、Visual Studio 付属無料ツールを使用して Android のデバイスが root 化を対応する方法を点灯役立ちました立てばさいわいです。参照として、よく知られているサンプル アプリを使用すれば Xamarin.Android アプリのすべての種類とその他の各種の保護戦略には、この記事で導入されたアイデアを適用することができます。

チェックの詳細に関心がある場合、前回 MSDN マガジンの記事を読むことをお勧めします。は、その他の種類の .NET Framework アプリに適用でき、チェックを使用する方法は、データ漏洩を防ぐことができますのチェックについて説明しました。

Dotfuscator Professional Edition の高度なチェックと難読化機能に興味場合もあります (bit.ly/2xgEZcs) または Java アプリと従来 Android アプリ、プリエンプティブの保護 - DashO の対をなすツール (bit.ly/2ffHTrN)。次の Twitter の PreEmptive Solutions チェックと PreEmptive 保護のすべての開発状況に最新の状態を保持できます (twitter.com/preemptive) と、私たちのブログにアクセスして (preemptive.com/blog).

代替保護戦略

このアーティクルは 1 つの戦略を検出すると、応答には、デバイスがルート化されているが、その他の方法も考えられます。選択する必要があります、アプリの適切な戦略をアドレスするアプリを使用して、セキュリティ リスクのコンテキスト。選択した戦略を実装するルートをチェックし、適用できます。たとえば、アプリがどのような状況下で終了する必要がありますしない場合、ルートを確認して、アプリを終了するのではなく、ルートが検出されると、特定の機能を無効にするを構成できます。

1 つのアプリは、実行時に既知の情報に応じてさまざまな方法でのルートに対応するためにも必要があります。複数の地理的な地域で利用可能なアプリを検討してください。ルートへのアプリの応答は、その応答は、インシデント レポートを送信する開発者 (以下"提出 home") に含まれている場合に特には現地の法律と規制に準拠する地域によって異なる必要があります。

保護戦略を開発するとき、戦略が誠実に自分のデバイスが root 化が意図的に、アプリのユーザーに与える影響を考慮する必要があります。Root 化されたデバイスを許可をドライブでしたにアプリから離れた場所ものこれら"power users"は、顧客ベースの重要な部分にあります。このようなデバイスのユーザーは合法的な逆に関連付けられているビジネス上のリスクに対するルート化されたデバイスに関連付けられているセキュリティ上のリスクを考慮する必要があります。

この記事は、こと TodoAzure.Droid、デリケートなデータの処理であり、データの盗難を防ぐため、リバース エンジニア リング、ルート化されたデバイス完全に禁止されているしたと見なされます。場合は、機密情報としてデータを処理すればが代わりに、すれば実装可能性がありますが状況によっては、ルート化されたデバイスを許可する保護戦略アプリにより、パワー ユーザーにアクセスできるようにします。自体は、無効にすると、アプリではなくこの別の方法で、アプリは、ルート化されたデバイスが検出されたときにユーザーを警告します。この警告により、ユーザーがデバイスと関連するリスクの安全でない状態を認識などの資格情報の盗用。ユーザーは、ログイン試行をキャンセルするかを受け入れるリスクをでのログ記録を続行できます。

警告を表示するユーザーの分岐 Protected TodoAzureAuth GitHub リポジトリの Dotfuscator CE この代替保護戦略を実装するルート チェック TodoAzure.Droid の保護を設定しました。そのブランチのリリース ノートでは、構成の細かい点について説明します。

この代替方法がパワー ユーザーへのアクセシビリティとリバース エンジニア リングの脅威間のトレードオフを行うことに注意してください。この方法で問題のある相手もアプリをインストールできますリバース エンジニア リング; のためのルート化されたデバイス上警告ダイアログ ボックスには、これらを停止はありません。ある程度のリバース エンジニア リングからの保護を提供する、アプリを難読化し、まだ Dotfuscator を使用しました。実際のアプリは、ルート化されたデバイスでアプリを使用する特殊な認証を必要とするように、その他のコントロールを導入することができます。

図 Aルート化されたデバイスで実行すると、アプリによって表示される警告を表示します。

ユーザーがログイン] ボタンを選択した後に、エミュレーターで実行されているこの別の方法で保護されている TodoAzure.Droid
図に、ユーザーがログイン] ボタンを選択した後に、エミュレーターで実行されているこの別の方法で保護されている、TodoAzure.Droid


Joe Sewellであり、ソフトウェア エンジニア リング、PreEmptive Solutions の Dotfuscator チーム テクニカル ライター。MSDN マガジンと Xamarin のオフィシャル ブログ彼は既に作成しています。

この記事のレビューに協力してくれたマイクロソフト技術スタッフの David Britch
David Britch は、Microsoft で Xamarin ドキュメンテーション グループの一員として働いています。さまざまな書籍、ガイダンスのドキュメントを参照実装が、ホワイト ペーパー、ビデオ、およびインストラクターによるトレーニング コースを含むソフトウェア開発のパブリケーション用に記述彼