Android security tags, read closely by Lightrion

CVE-2026-45521 AI-generated analysis

platform/frameworks/base, services/core StorageManagerService / AppFuseBridge (AppFuse proxy file descriptors)

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

StorageManagerService.openProxyFileDescriptor now captures Binder.getCallingUid() and AppFuseBridge.openFile rejects the request unless the calling UID equals the uid recorded in the AppFuse MountScope for the requested mountId, preventing cross-app access to another app's AppFuse proxy file descriptors.

Root cause

IStorageManager.openProxyFileDescriptor(mountId, fileId, mode) in StorageManagerService looked up the AppFuse mount only by the caller-supplied mountId via AppFuseBridge.openFile(mountId, fileId, mode), which only checked that mScopes.get(mountId) was non-null before calling scope.waitForMount() and scope.openFile(mountId, fileId, flags). Mounts are created in StorageManagerService with new AppFuseMountScope(uid, name), where name comes from mNextAppFuseName++, so each scope carries an owner uid, but that uid was never compared against the caller at open time. A caller reaching the Binder method could therefore obtain a ParcelFileDescriptor for a file in an AppFuse mount owned by another UID.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings