Android security tags, read closely by Lightrion

CVE-2026-58823 AI-generated analysis

platform/hardware/st/nfc, libstpropnci (libstpropnci-vendor), libstpropnci/src/stpropnci_std.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 length and array-capacity checks in stpropnci_process_std() of the ST NFC HAL, so that RF_NFCEE_DISCOVERY_REQ_NTF and NFCEE_MODE_SET_NTF messages from the NFC controller can no longer write past the fixed-size ee_info and active_nfcee_ids arrays in the global stpropnci_state.

Root cause

In stpropnci_process_std(), the NCI_MSG_RF_EE_DISCOVERY_REQ notification handler took the entry count from payload[3]. For every NFCEE id not already stored, it wrote stpropnci_state.ee_info[stpropnci_state.nb_ee_info].nfcee_id and incremented nb_ee_info without checking the capacity of the ee_info array. The only length check was `payloadlen <= NFC_EE_DISCOVER_ENTRY_LEN`, which did not relate payloadlen to the claimed entry count, so the loop could also read entries (payload[6 + i * 5]) beyond the received payload. Similarly, whenever wait_nfcee_ntf was set, the NFCEE_MODE_SET_NTF handler wrote stpropnci_state.active_nfcee_ids[stpropnci_state.nb_active_nfcees] and incremented the counter with no capacity check. Both counters are driven by notifications from the controller. Per the commit message, a compromised NFC controller could push them past the array bounds and overwrite adjacent global state.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings