Android security tags, read closely by Lightrion

CVE-2026-0025 AI-generated analysis

platform/frameworks/base, core/java/android/app/Notification.java (MessagingStyle extras parsing, Notification.visitUris URI checking)

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.

Notification.java now reads EXTRA_MESSAGES and EXTRA_HISTORIC_MESSAGES with getParcelableArrayFromBundle(..., Bundle.class) instead of extras.getParcelableArray(..., Parcelable.class), so the element type is restricted to Bundle and arbitrary Parcelable element types are no longer accepted.

Root cause

Notification.visitUris(), Notification.hasImage() and the MessagingStyle code that restores messages from extras read EXTRA_MESSAGES and EXTRA_HISTORIC_MESSAGES with extras.getParcelableArray(key, Parcelable.class). That call returns a Parcelable[] whose elements can be any Parcelable type. These arrays were then passed to MessagingStyle.Message.getMessagesFromBundleArray(), which by its name expects Bundle elements (its body is not shown). A caller-controlled array with a non-Bundle element was not rejected when it was read. The test inserts a crafted Parcelable, MyParceledListSlice, into EXTRA_MESSAGES. Per the test comment ("to avoid visitUri check uris in EXTRA_MESSAGES value"), this could let a notification carrying content URIs in its messages get past the visitUris-based URI permission check during enqueue, without checkGrantUriPermission being applied to those URIs. The bulletin type is information disclosure.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to March 2026 · Findings