Android security tags, read closely by Lightrion

CVE-2025-48544 AI-generated analysis

platform/packages/providers/MediaProvider, MediaProvider access checks (AccessChecker / getQueryBuilder)

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

Removes the internal Bundle extra MediaProvider#INCLUDED_DEFAULT_DIRECTORIES. In its place, an explicit Optional<List<String>> parameter is passed through getQueryBuilder, appendAccessCheckQuery and AccessChecker.getWhereForConstrainedAccess. As a result, only the FUSE directory-rename path supplies the default-directory access SQL, and the contents of an extras Bundle no longer affect it.

Root cause

MediaProvider defined a package-private Bundle key, INCLUDED_DEFAULT_DIRECTORIES ("android:included-default-directories"). The FUSE directory-rename path put it into qbExtras, filled from getIncludedDefaultDirectories(); the removed javadoc describes this as the System Gallery exception for DCIM, Pictures and Movies. AccessChecker.getWhereForDefaultDirectoryMatch(Bundle) read that string list from whatever extras Bundle reached getWhereForConstrainedAccess. For each directory it added a "relative_path LIKE '<dir>/%'" clause as an extra OR option in the constrained-access WHERE clause for the FILES case. The only protection was four extras.remove(INCLUDED_DEFAULT_DIRECTORIES) calls, including ones in query, delete and update. The commit message says the extra "can be misused by setting it in the bundle". Each added OR option widens the set of rows that match the constrained-access clause.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to March 2026 · Findings