恶意应用可以绘制与系统界面像素级一致的伪造弹窗
别名: 界面伪装 · 覆盖层攻击 · overlay attack · tapjacking
概念解释
在同一块屏幕上,任何拿到绘图能力的应用都能把自己的界面画得与系统弹窗像素级一致,用户与系统都无法从画面本身分辨来源。这个攻击面叫界面伪装(interface spoofing),叠加透明层劫持点击的变体叫点击劫持(clickjacking / tapjacking)。它不是某个系统的实现漏洞,而是合成式图形栈的结构性弱点。
机制
窗口系统把所有应用与系统的输出合成进同一张像素平面,像素不携带来源签名;触摸事件交给 z 序最上层的窗口。恶意应用只需复刻真实弹窗的视觉资产(系统界面公开、可截屏),在自己的窗口里呈现同样的对话框,用户的输入就进了攻击者的控件。系统无法在渲染层区分「合法应用的自绘界面」与「伪造系统界面」——绘制行为本身是匿名的。点击劫持再进一步:真控件之上盖一层透明窗口,用户以为在点 A,事件落在 B。
怎么研究
范式有两类:攻击演示与度量——在真实系统上复现 overlay / tapjacking,统计主流应用敏感界面的可覆盖面;用户检测研究——给被试真假弹窗对,测识别率、误点率与事后发觉率。常见自变量是伪装保真度与出现时机(前台切换瞬间、伴随系统动效),因变量是误点率与输入泄露率。方法论注意点:被试被告知「存在伪造攻击」后识别率显著偏高,这类实验会高估普通用户的防线,无提示条件下的数据才有外推价值。
边界
现代移动系统已把「显示在其他应用上层」设为需显式授予的权限,正规渠道应用的暴露面收窄但未消除;带安全桌面的桌面系统把确认对话框绘制在独占输入的受保护表面上,对该类攻击免疫。纯 Web 场景的对应弱点是 iframe 嵌套劫持,靠响应头与框架策略缓解,不靠用户。攻击前提是恶意应用已安装——应用市场审核降低到达率,不改变机制本身。
怎么落地
- 系统侧:密码、支付、权限等敏感确认由系统进程绘制在受保护表面,声明不可截屏、不可被第三方窗口覆盖。
- 应用侧:登录与支付窗口标记为截屏/录屏排除;敏感操作前校验前台应用身份;webview 内嵌敏感页时同样加防护标志。
- 验证:红队演练——对自己的确认弹窗做一次 overlay 复刻测试,任何能被第三方窗口盖住并收走输入的表面都是缺口。