Android security tags, read closely by Lightrion

CVE-2024-49720 AI-generated analysis

platform/packages/modules/Permission, PermissionController role-controller (com.android.role.controller.model.Permissions)

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

Adds PackageManager.FLAG_PERMISSION_ONE_TIME to the set of flags that the role controller treats as a user choice, so role (re-)evaluation no longer overrides a permission the user chose to grant only once, and clears that flag when a role grant gives a permission that was not previously granted.

Root cause

In PermissionController/role-controller/java/com/android/role/controller/model/Permissions.java, the role granting logic decides whether a permission's current state is a user choice that must be respected. When overrideUserSetAndFixed is false, it tests only FLAG_PERMISSION_USER_FIXED and FLAG_PERMISSION_USER_SET. FLAG_PERMISSION_ONE_TIME, which reflects the 'ask every time' choice, was not in that set. As a result, role re-evaluation did not treat a one-time choice as a user choice and could override it (the commit message calls this the missing ONE_TIME check). Likewise, the mask applied when a role grants a previously ungranted permission cleared USER_FIXED/USER_SET but not ONE_TIME.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to April 2025 · Findings