Tapjacking

Stay organized with collections Save and categorize content based on your preferences.

總覽

Tapjacking 就是與點擊攻擊網路安全漏洞相同的 Android 應用程式:惡意應用程式會透過重疊或其他方式模糊使用者介面,誘騙使用者點選與安全性相關的控制項 (確認按鈕等等)。在這個頁面中,我們會區分兩種攻擊變數:完全遮蔽和部分遮蔽。在完全遮蔽的情況下,攻擊者會重疊觸控區域,而在部分遮蔽中,觸控區域仍會保持未遮蔽。

具影響力

Tapjacking 攻擊用於誘騙使用者執行特定動作。影響則取決於攻擊者指定的動作。

風險:完全遮蔽

在完全遮蔽的情況下,攻擊者會重疊觸控區域以盜用觸控事件:

完整遮蔽圖片

因應措施

在程式碼中設定 View.setFilterTouchesWhenObscured(true) 可避免完全遮蔽。此設定會封鎖疊加層傳送的觸控設定。如果您偏好宣告方式,也可為要保護的 View 物件在版面配置檔案中加入 android:filterTouchesWhenObscured="true"


風險:部分遮蔽

在部分遮蔽攻擊中,觸控區域不會被遮蔽:

部分遮蔽圖片

因應措施

手動忽略含有 FLAG_WINDOW_IS_PARTIALLY_OBSCURED 旗標的觸控事件,即可減少部分遮蔽。這種情況沒有預設防護機制。

潛在警告:這項緩解措施可能會幹擾良性應用程式。在某些情況下,無法推出這項修正程式,因為如果部分遮蔽是由良性應用程式引起,可能會對使用者體驗造成負面影響。


特定風險

本節收集需要非標準緩解策略或在特定 SDK 層級降低程度的風險,並為此提供完整資訊。

風險:android.Manifest.permission.SYSTEM_ALERT_WINDOW

SYSTEM_ALERT_WINDOW 權限可讓應用程式建立一個視窗,顯示在所有應用程式頂端。

因應措施

較新版本的 Android 推出了幾項緩解功能,包括:

  • 在 Android 6 (API 級別 23) 以上版本中,使用者必須明確授予應用程式建立重疊視窗的權限。
  • 在 Android 12 (API 級別 31) 及以上版本中,應用程式可以將 true 傳遞至 Window.setHideOverlayWindows()

風險:自訂浮動式訊息

攻擊者可以透過 Toast.setView() 自訂 浮動式訊息 訊息的外觀。在 Android 10 (API 級別 29) 及以下版本中,惡意應用程式可能會從背景啟動這類浮動式訊息。

因應措施

如果應用程式指定 Android 11 (API 級別 30) 或以上版本,系統會封鎖背景自訂浮動式訊息。但在某些情況下,此種緩解可以使用浮動式訊息爆發避免,攻擊者可在前景中將多個浮動式訊息排入佇列,即使應用程式進入背景,仍會保持啟動。

自 Android 12 (API 級別 31) 起,背景浮動式訊息和浮動式訊息爆發攻擊已完全緩解。


風險:活動三明治

如果惡意應用程式設法說服使用者開啟應用程式,還是可以從受害者應用程式中啟動活動,然後將其與自己的活動重疊,形成活動三明治,建立部分遮蔽攻擊。

因應措施

查看部分遮蔽的一般緩解措施。為進行深入防護,請確保不要匯出不需匯出的活動,以免攻擊者形成活動三明治。


資源