OWASP 類別:MASVS-PLATFORM:平台互動
總覽
叫用意圖時,如果應用程式並未指定完整的元件類別名稱或套件,就會產生隱含意圖遭盜用的安全漏洞。這會讓惡意應用程式取代預期的應用程式,藉由註冊意圖篩選器的方式攔截意圖。
視意圖內容而定,攻擊者可能會讀取機密資訊,或是與可變動的物件互動,例如可變動的 PendingIntent 或 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);
如果您需要使用隱含意圖,請刪除所有不應公開的機密資訊或可變動物件。如果應用程式無法確切瞭解將由哪個應用程式執行動作 (例如撰寫電子郵件、拍照等),就可能需要使用隱含意圖。