OWASP カテゴリ: MASVS-PLATFORM: プラットフォームのインタラクション
概要
android:exported
属性により、コンポーネント(アクティビティ、サービス、ブロードキャスト レシーバなど)を他のアプリのコンポーネントが起動できるかどうかが決まります。
true
の場合、アクティビティはどのアプリからもアクセスでき、正確なクラス名で起動できます。false
の場合、アクティビティは、同じアプリのコンポーネント、同じユーザー ID を持つアプリ、または特権システム コンポーネントでしか起動できません。
この属性のデフォルト値の背後にあるロジックは時間とともに変化し、コンポーネントのタイプと Android のバージョンによって異なりました。たとえば、API レベル 16(Android 4.1.1)以前は、<provider>
要素の値はデフォルトで true
に設定されています。この属性を明示的に設定しなければ、一部のデバイス間でデフォルト値が異なるというリスクがあります。
影響
デフォルト値が異なると、誤って内部のアプリケーション コンポーネントを公開してしまう可能性があります。たとえば次のような結果が考えられます。
サービス拒否攻撃。 アプリの内部機能の変更を目的とした他のアプリによる不正なアクセス。 機密データの漏洩。 脆弱なアプリケーションのコンテキストでのコード実行。
リスクの軽減
常に android:exported
属性を明示的に設定します。こうすることで解釈の余地がなくなり、コンポーネントの可視化に関する意図が明確に示されます。
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- # キー管理 {:#key-management}
- APK から埋め込み DEX コードを直接実行する
- タップジャッキング