Android security tags, read closely by Lightrion

CVE-2026-0084 AI-generated analysis

platform/packages/modules/Nfc, NfcNci card emulation (HostEmulationManager)

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.

Makes the NFC HostEmulationManager unbind non-preferred HCE service connections right away in two cases, instead of keeping the binding alive until the next NFC transaction: when the preferred service is unset (the app leaves the foreground), and when the regular connection's binding dies.

Root cause

In multiple-binding mode (isMultipleBindingSupported(), introduced with the change referenced as b/365533082; the TODO links this to Flags#allowMultipleHceBindings), the no-arg unbindServiceIfNeededLocked() keeps bindings in mComponentNameToConnectionsMap. It has a branch whose condition starts with mServiceName == null or the DONT_IMMEDIATELY_UNBIND_SERVICES compat change. Per the new javadoc, those bindings are cleared only when mUnbindInactiveServicesRunnable runs after a transaction completes. Two paths called this deferred variant: the preferred-service update path (the service == null branch, i.e. preferred service unset) and the onBindingDied callback of a non-payment ServiceConnection. As a result, per the commit message, when an app with a registered HCE service called setPreferredService and then moved to the background or was closed, the NFC stack kept the binding to the app's service alive until the next NFC transaction or reboot.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings