Limit Activity taskAffinity to application uid
Currently, activities with same affinity will be in the same task even if they don't have the same uid. As a result, malicious apps may set the same task affinity with attacked app, and hijack intents to get permissions. This patch limits activity task affinity to application uid. Activities must have the same task affinity and uid to be in the same task. fixes: 139128211 fixes: 144435022 Bug: 35954083 Test: test attacker with steps in attached video from b/139128211#comment9 Test: atest ActivityTaskAffinityTests Change-Id: I4f1ab7e132f850a7ff8d207f927d862644513bde
This commit is contained in:
@@ -1520,7 +1520,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
||||
hasBeenLaunched = false;
|
||||
mStackSupervisor = supervisor;
|
||||
|
||||
taskAffinity = aInfo.taskAffinity;
|
||||
// b/35954083: Limit task affinity to uid to avoid various issues associated with sharing
|
||||
// affinity across uids.
|
||||
final String uid = Integer.toString(info.applicationInfo.uid);
|
||||
if (info.taskAffinity != null && !info.taskAffinity.startsWith(uid)) {
|
||||
info.taskAffinity = uid + ":" + info.taskAffinity;
|
||||
}
|
||||
taskAffinity = info.taskAffinity;
|
||||
stateNotNeeded = (aInfo.flags & FLAG_STATE_NOT_NEEDED) != 0;
|
||||
nonLocalizedLabel = aInfo.nonLocalizedLabel;
|
||||
labelRes = aInfo.labelRes;
|
||||
|
||||
Reference in New Issue
Block a user