Android security tags, read closely by Lightrion

CVE-2024-49743 AI-generated analysis

platform/frameworks/base, Notification / NotificationManagerService (allowlist token, Parcel class cookies)

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

Hardens Notification allowlist-token handling: NMS rejects enqueued notifications carrying a token other than its own ALLOWLIST_TOKEN and forces the correct token on records it enqueues, while Notification parceling writes only the root notification's token for all nested notifications and unparceling keeps an existing PendingIntent cookie instead of letting inner notifications replace it.

Root cause

Notification.mAllowlistToken is the token used for background operations for the notification's pending intents (per the Javadoc in the diff). Before the fix: (1) Notification.readFromParcelImpl unconditionally called parcel.setClassCookie(PendingIntent.class, mAllowlistToken), so a nested notification (publicVersion or a Notification inside extras) carrying its own token in a hand-built parcel would replace the cookie, and that token would be passed to PendingIntents unparceled afterwards; (2) Notification.writeToParcelImpl wrote each notification's own mAllowlistToken, so nested notifications were serialized with their own token, independent of the root notification. clearAllowlistToken(), which NMS used before returning notifications to an untrusted app, cleared only the root and publicVersion, not notifications embedded in extras; (3) the NMS enqueue path (after the invalid-package check) did not check the token of an incoming notification; (4) notifications created directly inside NMS (group summaries via EnqueueNotificationRunnable) never went through unparceling and so had no token.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to February 2025 · Findings