News

Android 17 Prepares Protected NFC Payment Permissions to Block Unauthorized Card Access [APK Teardown]

Android 17 is preparing protected NFC payment permissions that could stop unauthorized apps from emulating payment cards or reading protected payment identifiers, though the feature is not yet available to users.

Android 17 is preparing protected NFC payment permissions that could stop unauthorized apps from emulating payment cards or reading protected payment identifiers, though the feature is not yet available to users.

0 Comments

What to know

  • Android’s framework is adding two new permissions — NFC Payment Card Emulation and NFC Payment Card Reading — to restrict access to protected payment AIDs.
  • Currently, apps can register card emulation services or read external NFC cards; the new code will reject registrations and block SELECT commands for protected payment AIDs without the proper permission.
  • The strings were found in framework-res on Android 17 QPR2 Beta 6 (CP41.260831.007) and are not yet declared in the platform manifest, meaning the feature is not currently available to users.

Google is bolstering Android’s NFC security architecture with a pair of new permissions designed to lock down access to protected payment AIDs (Application Identifiers). By enforcing strict permission checks for both card emulation and card reading, the framework will soon prevent unauthorized apps from intercepting or interacting with sensitive payment card data.

Now, a teardown of the latest beta reveals exactly how the platform plans to enforce these boundaries. We pulled the framework-res package from Android 17 QPR2 Beta 6 (CP41.260831.007) and diffed it against previous builds. The new permission strings first appeared in QPR2 Beta 5 (CP41.260828.005) and remain present in this latest release.

About APK teardowns — An APK teardown works by reading the not-yet-shipped code inside a beta build, which lets us preview features a developer is working on before they’re announced. But work-in-progress code can change, stay hidden behind a server-side flag, or be scrapped before it ever reaches your phone.

Rejecting unauthorized card emulation

The first permission, labeled “NFC Payment Card Emulation,” targets apps that attempt to register themselves as an NFC payment service. Card emulation allows a phone to mimic a smart card, which is essential for tap-to-pay transactions. However, malicious apps could potentially abuse this to intercept payment AIDs.

To counter this, the framework will take a hardline approach. If an app attempts to register a card emulation service that includes a protected payment AID, the entire registration will be rejected unless the app explicitly holds the new permission. This ensures only trusted, authorized applications can manage sensitive payment credentials.

permdesc_nfcPaymentAidCE = ‘Allows applications to register Card Emulation services. If any registered AID is a protected payment AID, the entire registration will be rejected unless the application holds this permission.’
permlab_nfcPaymentAidCE = ‘NFC Payment Card Emulation’

Blocking external card reads

The second permission, “NFC Payment Card Reading,” governs apps that scan and read physical NFC cards. When an app reads an external card, it sends a SELECT command to communicate with the card’s applications. The new code shows that Android will actively block SELECT commands that match protected payment AIDs.

If an unauthorized app attempts to read a protected payment AID, the system will throw a SecurityException. This prevents rogue applications from silently skimming or interacting with payment data when a physical card is tapped against the device.

permdesc_nfcPaymentAidReader = ‘Allows applications to read external NFC cards. SELECT commands matching protected payment AIDs will be blocked, throwing a SecurityException.’
permlab_nfcPaymentAidReader = ‘NFC Payment Card Reading’

Not yet active in the platform manifest

While the descriptive strings for these permissions are present in the framework-res package, the permissions themselves are not yet declared in the platform manifest of this build. This means the enforcement logic is not yet switched on in the operating system. We could not surface the feature in the app yet, and the permissions currently exist only as text definitions.

Because these are framework-level permissions, they will not be requested via standard user-facing prompts like normal Android permissions. Instead, they will be granted silently at the system level to qualified applications. We will watch future builds for the activation of these permissions in the platform manifest.

 

Leave a Reply

Your email address will not be published. Required fields are marked *