Android security tags, read closely by Lightrion

CVE-2026-28667 AI-generated analysis

platform/system/nfc (Android 14/15) and platform/packages/modules/Nfc libnfc-nci (Android 16/17), NFC tag reader/writer, Type 5 Tag (ISO 15693) state machine in rw_t5t.cc

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.

Adds a response-length check (length < p_i93->block_size) before three rw_i93_send_cmd_write_single_block calls in rw_t5t.cc, so a short tag response no longer leads to stale GKI buffer bytes being sent over RF in a WRITE_SINGLE_BLOCK command.

Root cause

In rw_t5t_sm_update_ndef and rw_t5t_sm_set_read_only, the code modifies block data in place through pointer p (for example *(p + xx) = ... and *(p + 1) |= I93_ICODE_CC_READ_ONLY) and then passes p to rw_i93_send_cmd_write_single_block. Per the commit message, this buffer is the response buffer, and nothing checked that the received length was at least block_size. If the response was shorter, stale GKI buffer slack was copied into the outgoing WRITE_SINGLE_BLOCK command and sent over RF. The material does not show the body of the send function; the block_size-sized copy is inferred from the commit message and the new guard. The commit message says this ports bounds checks from b/143109193, b/143155861 and b/143106535 to rw_t5t.cc.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to October 2026 · Findings