OWASP 类别:MASVS-PLATFORM:平台互动
概览
StrandHogg 攻击/任务相关性漏洞是因 Android 处理多个任务的方式(尤其是称为“更改父级任务”的功能)存在设计上的 bug 而产生/引起的。应用更改父级任务是一项功能,可让应用将某个 activity 从一个任务移至另一个任务。
StrandHogg 攻击利用了传入应用任务堆栈 activity 审查方式不明确的缺陷,致使恶意应用可以执行以下任一操作:
- 将恶意 activity 移入或移出受害堆栈
- 受害 activity 运行完毕后,将恶意 activity 设置为返回堆栈。
攻击者通过操纵 allowTaskReparenting
和 taskAffinity
设置来利用此漏洞。
影响
恶意应用会根据目标应用的 packageName,相应地设置自己的某个 activity 的 taskAffinity。此手段随后与 intent 劫持相结合,会导致当用户下次启动目标应用时,恶意应用也同时启动并显示在目标应用之上。
然后,攻击者就可以利用此任务相关性漏洞劫持合法用户操作。
用户可能会被诱骗向恶意应用提供凭据。默认情况下,一旦 activity 启动并与任务关联,该关联就会在该 activity 的整个生命周期内持续有效。不过,将 allowTaskReparenting 设置为 true 会打破此限制,允许将某个现有 activity 的父级任务更改为新创建的“原生”任务。
例如,应用 A 可以通过应用 B 定位,在从应用 A 的已完成 activity 返回时,应用 A 的 activity 会被重定向到应用 B 的 activity 堆栈。从一个应用转换到另一个应用的过程不会向用户显示,这会产生严重的钓鱼式攻击威胁。
缓解措施
更新为 android:targetSdkVersion=>28
。
StrandHogg 攻击/任务相关性漏洞已于 2019 年 3 月进行修补,Android SDK 版本 28 及更高版本 (Android 9) 包含的相关操作系统补丁可避免此漏洞。虽然通过单独的应用配置可以缓解部分第 1 版 StrandHogg 攻击,但第 2 版攻击只能通过此 SDK 版本补丁来防范。