Android security tags, read closely by Lightrion

CVE-2024-0026 AI-generated analysis

platform/frameworks/base, system_server notification service (com.android.server.notification.SnoozeHelper)

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 (4 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 reposted group summary from those persisted maps so they can no longer grow unbounded and cause a boot loop when serialized.

Root cause

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

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to April 2024 · Findings