Android StrandHogg漏洞原理分析

2022-03-02  本文已影响0人  浪够_

漏洞原理:

此漏洞与app的lanchMode和Android的taskAffinity控件设置有关,Android源码中对lanchMode的处理主要位于ActivityStack。cpp文件的startActivityUncheckedLocked函数中。该函数的执行流程如下,首先对sourceRecord进行判断(当应用从桌面启动时,该值为null),如果为null,则进行launchMode的判断。之后launchMode判定的关键代码显示,当launchMode为singleInstance或singleTask时将调用findActivityLocked()函数,其他情况将调用findTaskLocked()函数。当launchMode为standard或singleTop时,其执行流程如下,首先进入findTaskLocked()函数,该函数将对当前已有任务的栈顶Activity进行遍历。当任务affinity与当前启动Activity一致时,返回该返回栈栈顶Activity,并赋给intentActivity。

在launchMode为standard或singleTop的处理流程中,将调用moveTaskToFrontLocked()函数将intentActivity所指后台任务移动到前台。最终系统将调用resumeTopActivity Locked()函数,该函数最终会调用当前返回栈栈顶Activity的onRestart()函数。当launchMode设置为standard或singleTop时,倘若后台有同名返回栈存在,将返回该返回栈栈顶Activity,且直接对当前栈顶Activity执行重启动请求。

上一篇 下一篇

猜你喜欢

热点阅读