暗黙的インテントの不正使用

OWASP カテゴリ: MASVS-PLATFORM: プラットフォームのインタラクション

概要

暗黙的インテントの不正使用に対する脆弱性は、アプリがインテントを呼び出す際に完全修飾されたコンポーネント クラス名またはパッケージを指定しない場合に発生します。この場合、想定されたアプリではなく、悪意のあるアプリが、インテント フィルタを登録してインテントをインターセプトする恐れがあります。

インテントのコンテンツに応じて、攻撃者が機密情報を読み取ったり、可変PendingIntents や Binder などの可変オブジェクトを操作する可能性があります。

影響

暗黙的インテントの不正使用により、攻撃者によってインテントのコンテンツが読み取られたり変更されたりするだけでなく、インテントがインターセプトされてアクションが実行される可能性もあります。その結果、機密情報やデータの漏洩、攻撃者の管理者にあるコンポーネントの起動などが発生する恐れがあります。

リスクの軽減

以下のコード スニペットに示すように、setPackage() を呼び出してインテントを明示的にします。

Kotlin

val intent = Intent("android.intent.action.CREATE_DOCUMENT").apply {
    addCategory("android.intent.category.OPENABLE")
    setPackage("com.some.packagename")
    setType("*/*")
    putExtra("android.intent.extra.LOCAL_ONLY", true)
    putExtra("android.intent.extra.TITLE", "Some Title")
}

startActivity(intent)

Java

Intent intent = new Intent("android.intent.action.CREATE_DOCUMENT");
intent.addCategory("android.intent.category.OPENABLE");

intent.setPackage("com.some.packagename");

intent.setType("*/*");
intent.putExtra("android.intent.extra.LOCAL_ONLY", true);
intent.putExtra("android.intent.extra.TITLE", "Some Title");
startActivity(intent);

暗黙的インテントを使用する必要がある場合は、漏洩しないよう機密情報や可変オブジェクトを除外してください。暗黙的インテントは、アプリがアクション(メールの作成、写真の撮影など)を正確に把握していない場合に必要になることがあります。

リソース