CVE-2026-80823

nfc: st21nfca: validate ATR_REQ length against the received frame

State
Published
Severity
Not scored
Published
Sep 4, 2026
Updated
Oct 19, 2026
Reserved
Aug 26, 2026

Read the record on cve.org

Description

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 1892bf844ea0261736bd5e75546fc996e9daeedf to before 785df00bb3ae3206674a43284eb06dac575b5c64Affected
  • 1892bf844ea0261736bd5e75546fc996e9daeedf to before 2c1ad291f4cdc357f9527b688c6fda9c6ffa7890Affected
  • 1892bf844ea0261736bd5e75546fc996e9daeedf to before dd26d30f40c43ad9cfe2f25c6ea0ead1dd51d5aaAffected
  • 1892bf844ea0261736bd5e75546fc996e9daeedf to before 9635507fe82949e429b3cd938876a9917125b151Affected
  • 1892bf844ea0261736bd5e75546fc996e9daeedf to before 0f344944c506b4f02d2b098489f7268b438c369eAffected
  • 1892bf844ea0261736bd5e75546fc996e9daeedf to before bfcca5f42c9aa4eadef1e5fe7bb23783d7fcc96dAffected
  • 1892bf844ea0261736bd5e75546fc996e9daeedf to before 304f5b414f4051d324b8c4a3ab0e79f7dc7e150eAffected
  • 1892bf844ea0261736bd5e75546fc996e9daeedf to before f33cecf69095c43be88567fef92b180b858f7369Affected
  • 1892bf844ea0261736bd5e75546fc996e9daeedf to before 5cdcca5d62a66eda6b774110a44cba67bc1a8d1dAffected
LinuxLinux
  • 3.17Affected
  • before 3.17Not affected
  • 5.10.267 through 5.10.*Not affected
  • 5.15.218 through 5.15.*Not affected
  • 6.1.185 through 6.1.*Not affected
  • 6.6.154 through 6.6.*Not affected
  • 6.12.106 through 6.12.*Not affected
  • 6.18.47 through 6.18.*Not affected
  • 7.1.11 through 7.1.*Not affected
  • 7.2.1 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.