Android 資安 | 螢幕覆蓋攻擊(Tapjacking)防護筆記

今年度的資安檢測基準新增了「螢幕覆蓋攻擊」的檢測項目。剛好最近送測的專案也因此被點出不符規範,加上後續的專案預期都會受到影響,因此特別整理這篇筆記,讓自己能快速掌握概念,並理解各種防護方式的實作細節。 什麼是螢幕覆蓋攻擊(Screen Overlay Attack)? 圖片來源: Android Doc - Privacy and Security - Tapjacking 根據 行動應用資安聯盟 - 行動應用App基本資安檢測基準V4.0 裡的描述: 攻擊者的應用程式會在行動應用程式上繪製一個視窗,誤導使用者將自己點擊的入侵視窗當作正常視窗。 換句話說,螢幕覆蓋攻擊本質上就是「用一層假的 UI 蓋住真的 UI」。攻擊者可能會模擬系統警示框、模擬 App 畫面,或做成任何能誘導操作的浮動視窗。 在網頁領域,它的行為類似 ClickJacking;而在 Android 官方文件中,這類攻擊則被稱為 Tapjacking。 如何避免 App 遭遇螢幕覆蓋攻擊? 理解攻擊手法後,防範策略可以分成這幾個方向: 避免 App 不被其他 App 遮蔽。 在 App 畫面被遮蔽時,使觸控事件無效。 🙃 警告使用者不要亂安裝奇怪的東西跟亂給權限… 🙃 以下整理幾種常見、有效、並且可依系統版本選擇的防護方式。 方法一、WindowManager.LayoutParams.FLAG_SECURE 支援版本:API 1 起即可使用。 效果:阻止 Overlay、阻止截圖、阻止投影。 1 2 3 4 5 // 禁止其他程式於上層繪製 / 禁止截圖 / 禁止投影 activity.window.setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE ) 在 Activity.onCreate() 加上上述設定後,不僅可以防止 Overlay,也會一併禁止截圖與投影。這也是許多銀行、醫院等高資安需求 App 的常見做法。 ...

Published on November 19, 2025 · 3 min · 481 words · Daniel Huang