Android security tags, read closely by Lightrion

CVE-2024-49732 AI-generated analysis

platform/frameworks/base, Companion Device Manager (services/companion, CompanionDeviceManagerService binder impl)

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

Adds a system-UID caller check to the three hidden permission-sync binder entry points (enablePermissionsSync, disablePermissionsSync, getPermissionSyncRequest) in CompanionDeviceManagerService, so that non-system callers get a SecurityException instead of reaching SystemDataTransferProcessor.

Root cause

In services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java, the binder-exposed methods enablePermissionsSync(int associationId), disablePermissionsSync(int associationId) and getPermissionSyncRequest(int associationId) passed calls straight to mSystemDataTransferProcessor with no caller check. Several nearby methods do carry @EnforcePermission and call *_enforcePermission(). Per index search, SystemDataTransferProcessor.enablePermissionsSync only calls mAssociationStore.getAssociationWithCallerChecks(associationId) and then writes a PermissionSyncRequest with setUserConsented(true) to mSystemDataTransferRequestStore. So a caller that passed the association check could record user consent for permission sync without going through a system-mediated flow. The bulletin rates the issue as High-severity EoP.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to January 2025 · Findings