MASTG-TEST-0035: 测试覆盖攻击
此测试即将更新
此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。
请帮助我们提交一个PR:MASTG v1->v2 MASTG-TEST-0035: 测试叠加攻击 (android)
概述¶
要测试叠加攻击,您需要检查应用程序是否使用了某些 API 和属性,这些 API 和属性通常用于防止叠加攻击,并检查应用程序的目标 Android 版本。
为了缓解这些攻击,请仔细阅读 Android 开发者文档中有关 Android View 安全性的通用指南。 例如,所谓的触摸过滤是一种常见的防御 tapjacking 的方法,它有助于保护用户免受这些漏洞的侵害,通常与其他技术和注意事项结合使用,正如我们在本节中介绍的那样。
静态分析¶
要开始静态分析,您可以检查应用程序是否具有以下方法和属性(非详尽列表):
- 重写
onFilterTouchEventForSecurity
以实现更精细的控制,并为视图实施自定义安全策略。 - 将布局属性
android:filterTouchesWhenObscured
设置为 true,或调用setFilterTouchesWhenObscured
。 - 检查 FLAG_WINDOW_IS_OBSCURED(自 API 级别 9 起)或 FLAG_WINDOW_IS_PARTIALLY_OBSCURED(从 API 级别 29 开始)。
某些属性可能会影响整个应用程序,而另一些属性可以应用于特定组件。 例如,在存在专门允许叠加层同时又想保护敏感输入 UI 元素的情况下,后者就是这种情况。 开发人员也可能会采取额外的预防措施来确认用户的实际意图,这可能是合法的,并将其与潜在的攻击区分开来。
最后请注意,始终记住正确检查应用程序的目标 API 级别以及它所具有的含义。 例如,Android 8.0(API 级别 26)引入了更改,要求应用程序具有 SYSTEM_ALERT_WINDOW
(“在顶部绘制”)。 从此 API 级别开始,使用 TYPE_APPLICATION_OVERLAY
的应用程序将始终显示在具有其他类型(例如 TYPE_SYSTEM_OVERLAY
或 TYPE_SYSTEM_ALERT
)的其他窗口之上。 您可以使用此信息来确保至少在此具体 Android 版本的此应用程序中不会发生叠加攻击。
动态分析¶
以动态方式滥用这种漏洞可能非常具有挑战性且非常专业,因为它与目标 Android 版本密切相关。 例如,对于 Android 7.0(API 级别 24)之前的版本,您可以使用以下 APK 作为概念验证来识别漏洞的存在。
- Tapjacking POC:此 APK 创建一个简单的叠加层,位于测试应用程序的顶部。
- Invisible Keyboard:此 APK 在键盘上创建多个叠加层以捕获击键。 这是 Cloak and Dagger 攻击中演示的利用之一。