Android security tags, read closely by Lightrion

CVE-2024-0027 AI-generated analysis

platform/frameworks/base, NotificationManagerService / SnoozeHelper (services/core/java/com/android/server/notification)

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.

SnoozeHelper.canSnooze now also counts the two persisted snoozed-notification maps against CONCURRENT_SNOOZE_LIMIT, and repostGroupSummary removes the group summary key from those persisted maps when the in-memory record is removed, bounding the snoozed-notification state that is serialized to disk.

Root cause

SnoozeHelper keeps three maps: in-memory mSnoozedNotifications (key -> NotificationRecord) and two persisted maps, mPersistedSnoozedNotifications (key -> time) and mPersistedSnoozedNotificationsWithContext (key -> context id), which survive reboots via XML. canSnooze(int) only compared mSnoozedNotifications.size() + numberToSnooze against CONCURRENT_SNOOZE_LIMIT, so the persisted maps were never bounded. In addition, repostGroupSummary removed the group summary record from mSnoozedNotifications but left its entry in both persisted maps, so persisted entries could accumulate independently of the in-memory count. Per the commit message, serializing a huge number of snoozed notifications caused a boot loop.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to April 2024 · Findings