この記事は、内部コンポーネントへのアクセスに暗黙的インテントが使用されているアプリのデベロッパーを対象としています。
状況
1 つまたは複数のアプリに、暗黙的な内部のインテントに関する問題があります。内部コンポーネントへのアクセスに暗黙的インテントが使用されていると、攻撃者がメッセージをインターセプトして、そのメッセージを停止したり、メッセージの内容を読み取ったり、さらにはその内容を置き換えたりすることが可能になります。当該アプリで暗黙的インテントが使用されている場所は、アプリの Google Play Console 通知で確認できます。
「暗黙的な内部のインテント」のアラートが表示された場合の修正方法
暗黙的インテントが使用されている場所をアプリで確認します。たとえば、以下のコードでは、暗黙的インテントを使用して内部コンポーネントにアクセスしています。
//このアプリには MY_CUSTOM_ACTION を登録するコンポーネントがあり、
//これは当該アプリでのみ登録されるもので、このインテントが
//その内部コンポーネントに安全に渡されるようにする意図を示している
Intent intent = new Intent("MY_CUSTOM_ACTION");
//デリケートである可能性のあるコンテンツを「intent」に追加する
intent.putExtra("message", sensitive_content);
startActivity(intent);
Google では、次のいずれかの方法により明示的インテントを使用して内部コンポーネントにアクセスすることをおすすめしています。
- Intent.setComponent を使用して、該当のインテントを処理するコンポーネントを明示的に設定する
- Intent.setClass または Intent.setClassName を使用して、ターゲット コンポーネントを明示的に設定する
- Intent.setPackage を使用して、該当のインテントで解決されるコンポーネントを制限する
次の手順
- 上記の手順に沿ってアプリを更新します。
- Google Play Console にログインして、アプリの更新版を送信します。
新しいアプリやアプリのアップデートは、リクエストの審査が終わるまでの間、ステータスが [審査中] になります。アプリが適切に更新されていない場合は、引き続き警告が表示されます。
サポートのご案内
この脆弱性に関する技術的なご質問は、Stack Overflow に投稿していただけます。その際には「android-security」タグをご使用ください。また、この問題を解決するにあたって手順にご不明な点がある場合は、サポートチームにお問い合わせください。