Android security tags, read closely by Lightrion

CVE-2025-0098 AI-generated analysis

platform/frameworks/base, WindowManager (services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java, task fragment / activity embedding organizer)

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

Hardens TaskFragmentOrganizerController so that a real activity token is handed to a task fragment organizer only when both the pid and the uid of the activity match the organizer, and rejects organizer registration from a pid <= 0 (the commit message says a one-way binder call let a malicious app appear as pid 0).

Root cause

In TaskFragmentOrganizerController.java, prepareActivityReparentedToTask passed the activity's real IBinder token (activity.token) to the organizer client based only on activity.getPid() == mOrganizerPid. Otherwise it created a "TemporaryActivityToken" placeholder. The organizer pid is stored when TaskFragmentOrganizerState(organizer, pid, uid, isSystemOrganizer) is created at registration, and registration did not validate it. Per the commit message, a malicious app could register the organizer via a one-way binder call so that it appeared to run on pid 0. Presumably an activity of another process with a matching (0) pid would then pass the pid-only check and its real token would be delivered to the organizer. The material does not show the exact activity state. The same pid-only check guarded the nextFillTaskActivity token passed via change.setOtherActivityToken (under Flags.fixPipRestoreToOverlay()).

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to February 2025 · Findings