Android security tags, read closely by Lightrion

CVE-2024-43095 AI-generated analysis

platform/packages/modules/Permission, PermissionController (runtime permission grant flow and the LightAppPermGroup/LightPermission data model)

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

PermissionController now treats a platform permission group as granted (and eligible for whole-group auto-grant) only when a permission in that group defined by the platform or a system app is granted, or when all permissions in the group were auto-granted (REVOKE_WHEN_REQUESTED). Grants of permissions defined by other apps that sit in a platform group no longer count.

Root cause

In LightAppPermGroup.AppPermSubGroup, isGranted and isGrantedExcludingRWROrAllRWR were computed over every LightPermission in the subgroup, regardless of which package defined the permission. When a permission defined by a non-platform, non-system package was in a platform permission group (permGroupInfo.packageName == Utils.OS_PKG) and was granted, the subgroup reported itself as granted. GrantPermissionsViewModel used group.foreground/background.isGrantedExcludingRWROrAllRWR together with canAutoGrantWholeGroup to call grantForegroundRuntimePermissions/grantBackgroundRuntimePermissions for other requested permissions in the same group. After a user grant, it also set groupState.state = STATE_ALLOWED unconditionally, without checking whether the affected permissions were platform or system ones. LightPermInfo carried no information about whether the defining package was a system app, so no such check could be made.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to January 2025 · Findings