StrandHogg漏洞
StrandHogg 是一个存在于 Android 多任务系统中的应用漏洞,此漏洞利用 App 清单文件 AndroidManifest.xml 中一个名为 android:taskAffinity 的属性设置。
taskAffinity 属性
1.与 Activity 有着亲和关系的任务。从概念上讲,具有相同亲和关系的 Activity 归属同一任务(从用户的角度来看,则是归属同一“应用”)。
2.任务的亲和关系由其根 Activity 的亲和关系确定。
3.亲和关系确定两件事 - Activity 更改到的父项任务(allowTaskReparenting 属性设置“true”和taskAffinity设置父任务)和通过 FLAG_ACTIVITY_NEW_TASK 标志启动 Activity 时将用来容纳它的任务。
4.默认情况下,应用中的所有 Activity 都具有相同的亲和关系。您可以设置该属性来以不同方式组合它们,甚至可以将在不同应用中定义的 Activity 置于同一任务内。 要指定 Activity 与任何任务均无亲和关系,请将其设置为空字符串。如果未设置该属性,则 Activity 继承为应用设置的亲和关系。
5.应用默认亲和关系的名称是元素设置的软件包名称。
SingleTask启动模式可通用taskAffinity设置启动任务栈。由于应用默认亲和关系的名称是元素设置的软件包名称,设置为空字符串可避免StrandHogg漏洞。
启动模式
launchMode | 使用场景 |
---|---|
singleTop | 适合启动同类型的 Activity,例如接收通知启动的内容显示页面 |
singleTask | 适合作为程序入口 |
singleInstance | 适合需要与程序分离开的页面,例如闹铃的响铃界面 |