Android security tags, read closely by Lightrion

CVE-2026-28611 AI-generated analysis

platform/packages/apps/Nfc (Android 15) / platform/packages/modules/Nfc (Android 16), NfcService binder interface (INfcAdapter.Stub)

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.

Adds a caller-UID-to-package-name verification (new NfcPermissions.checkPackage backed by AppOpsManager.checkPackage) at the start of the NfcAdapterService binder methods enable, disable and setObserveMode, so a caller can no longer pass an arbitrary package name into NFC authorization decisions.

Root cause

NfcAdapterService.enable(String pkg), disable(boolean, String pkg) and setObserveMode(boolean, String packageName) in src/com/android/nfc/NfcService.java take a package name from the binder caller and use it directly in authorization. enable and disable call isDeviceOrProfileOwner(Binder.getCallingUid(), pkg), which delegates to NfcPermissions.isDeviceOwner/isProfileOwner; isProfileOwner calls DevicePolicyManager.isProfileOwnerApp(packageName) (per the shown context). enable also compares pkg against R.array.nfc_allow_list. setObserveMode passes packageName to mCardEmulationManager.isPreferredServicePackageNameForUser and to wallet role comparisons (per index excerpt). Nothing checked that the supplied package actually belongs to the calling UID, so the string was trusted as the caller's identity.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings