Android security tags, read closely by Lightrion

CVE-2026-45525 AI-generated analysis

platform/packages/providers/MediaProvider, media metadata redaction (util/IsoInterface and util/XmpInterface on 14; util/XmpDataParser on 15+)

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

Makes MediaProvider's ISO/MP4 parser keep parsing when an XMP box is too large to load. It also makes the XMP redaction logic redact the whole XMP byte range, instead of nothing, when the XMP payload could not be loaded, so location metadata is no longer left unredacted for oversized XMP boxes.

Root cause

In IsoInterface's box parser, an XMP-carrying box (type BOX_XMP, or a BOX_UUID box with the XMP UUID) whose payload could not be loaded made the parser stop. On Android 14 the BOX_UUID / BOX_XMP branches returned null when len > Integer.MAX_VALUE or when the allocation threw OutOfMemoryError. On 15+ they returned false when allocateBuffer returned null (per the createXmpData code comment, for payloads above 1 MB). Because parsing stopped, no later box in the file was flattened, and the oversized box's own range was not available to the redaction logic either. In addition, the XMP redaction code treated a missing or empty XMP buffer as an empty document and returned zero redaction ranges. On 15+, createXmpData also reset xmpOffsets to an empty array when the buffer was null, and it fell back to BOX_XMP. Net effect: a file with an oversized XMP box went through redaction with no XMP ranges redacted, which could leave location data inside the XMP (and potentially in later boxes) readable. On 14 the pre-fix code also allocated and read the full payload of every uuid box regardless of its UUID, with no size cap below Integer.MAX_VALUE.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings