OWASP 类别: MASVS-PLATFORM:平台交互
概述
StrandHogg 攻击/任务关联性漏洞是由 Android 处理多个任务的方式中的设计错误造成的,特别是称为任务重新关联的功能。应用任务重新关联功能允许应用将活动从一个任务移动到另一个任务。
StrandHogg 攻击利用了对如何验证传入应用任务堆栈活动缺乏清晰的认识,并允许恶意应用:
- 将恶意活动移入或移出受害者堆栈
- 在受害者活动完成后将恶意活动设置为返回堆栈
此漏洞是通过操纵allowTaskReparenting
和taskAffinity
设置来利用的。
影响
恶意应用可以将其一个活动的 taskAffinity 设置为与目标应用的 packageName 相匹配。这可以与意图劫持结合使用,以便下次用户启动目标应用时,恶意应用也会启动并显示在目标应用之上。
然后可以使用任务关联性漏洞来劫持合法的用户操作。
用户可能会被诱骗向恶意应用提供凭据。默认情况下,一旦活动启动并与任务关联,该关联会在活动整个生命周期中持续存在。但是,将 allowTaskReparenting 设置为 true 会破坏此限制,允许现有活动重新关联到新创建的“原生”任务。
例如,应用 A 可以成为应用 B 的目标,在应用 A 完成的活动返回后,将应用 A 活动重定向到应用 B 活动堆栈。这种从一个应用到另一个应用的转换对用户是隐藏的,并造成了严重的网络钓鱼威胁。
缓解措施
更新至android:minSdkVersion="30"
。
StrandHogg 攻击/任务关联性漏洞最初于 2019 年 3 月修复,并在 2020 年 9 月修复了一个更新且更全面的变体。Android SDK 版本 30 及更高版本(Android 11)包含相应的操作系统补丁程序,以避免此漏洞。虽然可以通过单个应用程序配置来部分缓解第一版 StrandHogg 攻击,但第二版攻击只能通过此 SDK 版本补丁程序来阻止。
资源
- Usenix 15 上描述此漏洞的原始学术论文{.external}
- Promon 安全小组对原始漏洞的扩展说明{.external}
- Android 开发者文档,关于 android:allowTaskReparenting
- Android 开发者文档,关于 android:taskAffinity
- Android 开发者文档,关于 application 元素的 android:allowTaskReparenting