Android security tags, read closely by Lightrion

CVE-2026-28655 AI-generated analysis

platform/frameworks/base, core/java/android/widget/RemoteViews.java (RemoteViews parceling, ApplicationInfoCache, ReflectionAction)

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

Reworks RemoteViews parceling so that a single ApplicationInfoCache (typed list) is written once by the root RemoteViews and nested RemoteViews reference it by int id, and removes the Parcel.allowSquashing()/restoreAllowSquashing() wrapping of RemoteViews.writeToParcel together with the ALTERNATIVE_DEFAULT ReadWriteHelper trick that forced immediate (non-lazy) Bundle unparceling in ReflectionAction.

Root cause

Before the fix, RemoteViews.writeToParcel enabled Parcel.allowSquashing() for the whole write so that repeated ApplicationInfo objects in nested RemoteViews would be squashed, and each RemoteViews (MODE_NORMAL) wrote its full mApplication via ApplicationInfo.writeToParcel. Because squashing changes how Bundle contents are written, ReflectionAction's BUNDLE case installed a private Parcel.ReadWriteHelper (ALTERNATIVE_DEFAULT) around in.readBundle() purely to defeat lazy Bundle unparceling. The second commit's message states squashing 'doesn't work' for ApplicationInfo and that mApplicationInfoCache had been added as well, making squashing redundant. The combination of squashing on the writer side, per-RemoteViews ApplicationInfo serialization, and the ReadWriteHelper side effect on Bundle reads is the mechanism the fix removes; the material does not spell out the exact faulty read/write sequence.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings