Android security tags, read closely by Lightrion

CVE-2026-28644 AI-generated analysis

platform/frameworks/base, WindowManager / ActivityTaskManagerService (activity start, startNextMatchingActivity)

AI-generated: written from the bulletin and the fixing diffs by claude-fable-5-1, then checked against the code by claude-opus-5-5 (1 corrections). Verify against the commit before relying on it.

ActivityTaskManagerService.startNextMatchingActivity() now forwards the original caller's identity (launchedFromUid/launchedFromPackage/launchedFromFeatureId) to the next resolved activity only when the intermediary activity shares the original caller's app ID or runs as SYSTEM_UID; otherwise the calling UID and package are reset to the intermediary's own.

Root cause

In services/core/java/com/android/server/wm/ActivityTaskManagerService.java, startNextMatchingActivity() always built the ActivityStarter with .setCallingUid(r.launchedFromUid), .setCallingPackage(r.launchedFromPackage) and .setCallingFeatureId(r.launchedFromFeatureId), where r is the ActivityRecord of the activity calling the API. So the activity that received an intent could hand it on to the next matching activity while the system reported the original launcher's UID and package as the caller. Per the commit message, this let an untrusted intermediary trampoline an implicit intent from a privileged app to another app. Permission checks based on the calling identity (the message cites REQUEST_INSTALL_PACKAGES) then saw the privileged original caller instead of the intermediary.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings