Google Play のアプリやそのユーザーの安全性とセキュリティを確保するうえで、デベロッパーが果たす役割は重要です。弱い立場にあるユーザーを主なターゲットにしたソーシャル エンジニアリングによる不正行為が増加しており、ユーザーとアプリの完全性とを保護するための予防策を講じることがこれまでになく重要になっています。
この記事では、アプリのセキュリティ強化に役立つ Android と Play のセキュリティ フラグである FLAG_SECURE
と REQUIRE_SECURE_ENV
の概要について説明します。これらのフラグを理解して効果的に活用することで、標的型攻撃による不正行為に対処し、アプリのエコシステムを適切に保護できます。
FLAG_SECURE
FLAG_SECURE は、潜在的な脆弱性、監視、攻撃を軽減できるセキュアな環境で動作することを目的にしたアプリであることを知らせるために、アプリのコードで宣言される表示関連のフラグです。アプリの使用中、UI に含まれるセンシティブ データの表示場所をセキュアなサーフェスに限定することを示せます。これにより、センシティブ データがスクリーンショットに表示されたり、セキュアでないディスプレイで閲覧されたりしないよう、他のアプリやサービスに知らせます。デベロッパーは、アプリのコンテンツがアプリやユーザーのデバイスの外部で閲覧されたり、外部にブロードキャストまたは送信されたりできないようにする場合に、このフラグを宣言します。たとえば、アプリの画面にセンシティブ データが含まれており、そのデータがリモート サポート アプリなどのサードパーティ製アプリで表示されたときにセキュリティ上の問題を引き起こす可能性がある場合は、FLAG_SECURE
によってデータの機密性を宣言し、セキュアな環境を構築するという方法が効果的です。セキュリティおよびプライバシー保護のため、Google Play で配信されるすべてのアプリが FLAG_SECURE を尊重しなければなりません。つまり、このフラグの設定を回避する手段を他のアプリで作成または促進してはいけません。
REQUIRE_SECURE_ENV
虚偽や巧妙な操作の被害を受けやすい高齢者などの社会的弱者にとって、ソーシャル エンジニアリング攻撃による被害は特に懸念されています。多くの場合、こうした攻撃はユーザーを欺いて、パスワードや財務情報などの機密情報を漏洩させたり、悪意のあるコンテンツをダウンロードさせたりします。
FLAG_SECURE
フラグや REQUIRE_SECURE_ENV
フラグを実装することで、アプリ内でのソーシャル エンジニアリング攻撃を軽減できます。これらのフラグを個別に使用したり同時に使用したりすることで、ユーザーの個人情報や機密情報、デバイスなどに攻撃者がアクセスするために悪用されることが多い脆弱性からユーザーを保護できます。
ソーシャル エンジニアリングによる不正行為から高齢者などの社会的弱者を保護する
虚偽や巧妙な操作の被害を受けやすい高齢者などの社会的弱者にとって、ソーシャル エンジニアリング攻撃による被害は特に懸念されています。多くの場合、こうした攻撃はユーザーを欺いて、パスワードや財務情報などの機密情報を漏洩させたり、悪意のあるコンテンツをダウンロードさせたりします。
FLAG_SECURE
フラグや REQUIRE_SECURE_ENV
フラグを実装することで、アプリ内でのソーシャル エンジニアリング攻撃を軽減できます。これらのフラグを個別に使用したり同時に使用したりすることで、ユーザーの個人情報や機密情報、デバイスなどに攻撃者がアクセスするために悪用されることが多い脆弱性からユーザーを保護できます。
その他の保護対策
ソーシャル エンジニアリングによる不正行為からユーザーを保護するために、セキュリティ フラグの利用に加えて、以下の対策も検討してください。
- ソーシャル エンジニアリングの手法についてユーザーを啓発する: フィッシング詐欺や偽のサポート電話など、ソーシャル エンジニアリングの一般的な手法に関する警告をアプリ内で明瞭簡潔に行います。
- セキュアな認証メカニズムを実装する: 2 段階認証などの堅牢な認証方法を採用して、ユーザー アカウントへの不正アクセスを防止します。
- アプリを定期的に更新する: 最新のセキュリティ パッチやバグ修正を適用してアプリを最新の状態に保ち、攻撃者に悪用される可能性がある脆弱性に対処します。
連携と継続的な啓発
不正行為の防止とユーザーの保護は継続的に行う必要があります。そのためには、デベロッパー、Google Play、さまざまなセキュリティ コミュニティの連携が不可欠です。安全性とセキュリティに関するブログをお読みいただき、セキュリティに関するベスト プラクティスを常に把握しておきましょう。
連携を通じて、すべてのユーザーにとってセキュアで信頼できる Android エコシステムを構築しましょう。
よくある質問
下の質問をクリックすると、詳細を開いたり閉じたりできます。
これらのフラグを使用することで、アプリに悪影響は生じないでしょうか?フラグの実装にはどのくらい時間がかかりますか?これらのフラグは、セキュリティとプライバシーを強化するように設計されており、パフォーマンスの妨げにはなりません。ただし、アプリの機能がスクリーンショットや画面録画の共有に大きく依存している場合、FLAG_SECURE
を設定することで、ユーザーが特定のページの画像をキャプチャできなくなる可能性があります。このような場合は、セキュリティのニーズとユーザー エクスペリエンスとのバランスをとることが重要です。また、サードパーティ製アプリのカスタマイズ機能や拡張機能の中には、これらのフラグの影響を受ける可能性のあるスクリーン キャプチャ方式に依存しているものがあります。このようなツールと統合されているアプリについては、互換性をテストすることをおすすめします。
フラグの実装は、通常は迅速かつ簡単に行えます。基本的には、フラグの適用に関連するページまたはアクティビティに数行のコードを追加するだけで済みます。正確な所要時間は、アプリの複雑さや関連するページ数によって異なります。
FLAG_SECURE
はウィンドウ レベルのフラグです。このフラグを設定することで、ウィンドウのコンテンツを機密情報として扱い、スクリーンショットに表示されたり、セキュアでないディスプレイで閲覧されたりすることを防げます。一方、REQUIRE_SECURE_ENV
は、アプリがセキュアな環境で実行される必要があることを他のアプリに知らせるフラグです。FLAG_SECURE
と REQUIRE_SECURE_ENV
はどちらも、Android のアプリやユーザーを不正使用や攻撃から保護するために使用できるセキュリティ フラグです。
バンキング アプリがログイン画面で FLAG_SECURE
を使用して、ユーザーのログイン認証情報などの機密情報を保護する特別なウィンドウを作成する、という例が挙げられます。通常はこのような保護機能によって、セキュアでないディスプレイでウィンドウのコンテンツが閲覧されたり、スクリーンショット、録画、リモート表示などでキャプチャされたりすることを防げます。そのため、セキュアでないディスプレイでは、ユーザーのログインに関する詳細の代わりに空白の領域が表示されることがあります。
これらのフラグを使用する可能性のあるアプリの例として、ユーザーの個人情報や機密情報(財務情報など)を扱うアプリが挙げられます。たとえば、バンキング アプリでは FLAG_SECURE
がよく使用されます。高齢者などの社会的弱者を対象にしたアプリなど、不正行為を受けやすいアプリについても、REQUIRE_SECURE_ENV
フラグの使用を検討してください。
FLAG_SECURE フラグを実装するには、AndroidManifest.xml ファイルに次の行を追加します。
XML
<activity android:name=".MyActivity"
android:exported="true"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
REQUIRE_SECURE_ENV
フラグを実装するには、AndroidManifest.xml ファイルに次の行を追加します。
XML
<manifest ...>
<application ...>
…
<property android:name="REQUIRE_SECURE_ENV" android:value="1" />
…
</application>
</manifest>