Android security tags, read closely by Lightrion

CVE-2026-28620 AI-generated analysis

platform/frameworks/base, WindowManager activity start / UriGrantsManager (Intent Redirection Hardening)

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 (3 corrections). Verify against the commit before relying on it.

Changes the intent-redirection URI grant logic in ActivityStarter and ActivityStartController so that, when an intent's creator UID differs from the launching UID, URI grants are only issued if both the caller's and the creator's checkGrantUriPermissionFromIntent calls yield grants, instead of using or merging whichever party's grants were available; the NeededUriGrants.merge helper is removed.

Root cause

In the intent redirection hardening path, when an Intent carries a valid IntentCreatorToken whose creator UID differs from the resolved calling UID, the code computed two NeededUriGrants sets: intentGrants for the calling UID and creatorIntentGrants for the creator UID. The pre-fix code combined them permissively: if intentGrants was null it was replaced by creatorIntentGrants, otherwise creatorIntentGrants was merged (union of URIs via NeededUriGrants.merge) into intentGrants. The result was that URI grants could be issued to the target activity based on either party's grant result, so one party's lack of grant authorization did not block the grant. The same pattern existed in three places: ActivityStarter.java under the contentUriPermissionApis flag, ActivityStarter.java in the non-flag else branch, and the multi-intent loop in ActivityStartController.java.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings