Android security tags, read closely by Lightrion

CVE-2025-48585 AI-generated analysis

platform/packages/modules/Profiling, ProfilingService (system-triggered profiling triggers, IProfilingService binder)

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.

ProfilingService now verifies, via PackageManager.getPackagesForUid, that the package name supplied by the client to addProfilingTriggers, removeProfilingTriggers and clearProfilingTriggers actually belongs to Binder.getCallingUid(), throwing SecurityException otherwise.

Root cause

In service/java/com/android/os/profiling/ProfilingService.java, addProfilingTriggers(List<ProfilingTriggerValueParcel>, String packageName), removeProfilingTriggers(int[], String packageName) and clearProfilingTriggers(String packageName) take the package name as a plain binder argument. The manager side (ProfilingManager in framework/java/android/os/ProfilingManager.java, per index search) passes mContext.getPackageName(). The service never checked that this string belonged to the calling UID. removeProfilingTriggers and clearProfilingTriggers use it directly, together with Binder.getCallingUid(), as a key into mAppTriggers, and addProfilingTriggers processes triggers for it. A binder client could therefore supply an arbitrary, empty or null package name and have trigger state handled under that name. The bulletin classifies the result as a High severity DoS. The material does not show the exact DoS mechanism.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to March 2026 · Findings