KernelScan.io

HIGH Introduced in 3.17

nfc ATR_REQ OOB

CVE-2026-80823

CVSS 8.1 / 10.0 KernelScan AI

CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

01

In the Linux kernel, the following vulnerability has been resolved: nfc: st21nfca: validate ATR_REQ length against the received frame st21nfca_tm_recv_atr_req() checks that the received ATR_REQ frame is at least ST21NFCA_ATR_REQ_MIN_SIZE and that the self-declared atr_req->length is at least sizeof(struct st21nfca_atr_req), but never checks that atr_req->length does not exceed the actual received length (skb->len). st21nfca_tm_send_atr_res() then trusts the declared length: gb_len = atr_req->length - sizeof(struct st21nfca_atr_req); ... memcpy(atr_res->gbi, atr_req->gbi, gb_len); so an RF peer that sends a short frame but sets atr_req->length larger than the frame makes gb_len exceed the general bytes actually present, and the memcpy reads out of bounds past the received skb. Those bytes are placed in the ATR_RES and sent back to the peer (kernel-memory disclosure to a proximity attacker); a larger declared length is an out-of-bounds read (DoS). Reject frames whose declared length exceeds the received length. The adjacent nfc_tm_activated() path in the same function already derives its general-bytes length from skb->len rather than the declared field. Found by 0sec (https://0sec.ai) using automated source analysis; the missing bound is evident from source. Compile-tested.

02

Engine v0.6.0

Risk summary

A nearby attacker with an NFC device can send a crafted ATR_REQ frame to any device using the st21nfca NFC driver in target mode, causing the kernel to read and transmit back out-of-bounds memory. This leaks kernel memory to the attacker and can crash the system. No privileges or user interaction on the target are required.

Affecteddrivers/nfc/st21nfca/dep.c (nfc st21nfca)

Vulnerability analysis

The NFC target-mode handler trusts a length field declared by the remote peer without checking it against the actual received frame size. A nearby attacker can send a short ATR_REQ frame with an inflated length value, causing the response builder to copy bytes beyond the end of the received buffer. The leaked kernel memory is then transmitted back to the attacker in the ATR_RES response, and a sufficiently large declared length can crash the kernel. The fix adds a bounds check that rejects any frame whose declared length exceeds the actual received length. This is reachable by any NFC peer within proximity of a device using the st21nfca driver in target mode; no privileges or user interaction on the target device are required.

03

BranchIntroducedFixed inPatch commit
5.103.175.10.267785df00bb3ae
5.153.175.15.2182c1ad291f4cd
6.13.176.1.185dd26d30f40c4
6.123.176.12.1060f344944c506
6.183.176.18.47bfcca5f42c9a
6.63.176.6.1549635507fe829
7.13.177.1.11304f5b414f40
7.23.177.2.1f33cecf69095
mainline3.177.35cdcca5d62a6
cip/5.103.175.10.268-cip77785df00bb3ae
cip/5.10-rt3.175.10.268-cip77-rt34785df00bb3ae
cip/6.13.176.1.187-cip60dd26d30f40c4
cip/6.1-rt3.176.1.189-cip61-rt32dd26d30f40c4
cip/6.123.176.12.108-cip310f344944c506

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.108-cip31
cip/6.1Fixed in 6.1.187-cip60
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.268-cip77
cip/5.10-rtFixed in 5.10.268-cip77-rt34
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)