CVE-2026-80798

Source
https://cve.org/CVERecord?id=CVE-2026-80798
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80798.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-80798
Downstream
Published
2026-09-04T15:13:12.282Z
Modified
2026-09-06T03:46:46.157167006Z
Summary
nfc: llcp: reject PDUs shorter than the LLCP header
Details

In the Linux kernel, the following vulnerability has been resolved:

nfc: llcp: reject PDUs shorter than the LLCP header

Every LLCP PDU begins with a two-byte header (DSAP/SSAP + PTYPE), but the receive path never checked that a frame is at least LLCPHEADERSIZE bytes before parsing it.

nfcllcprxskb() reads the header via nfcllcpptype()/nfcllcpdsap()/ nfcllcp_ssap(), which dereference pdu->data[0] and pdu->data[1], and a CONNECT or CC PDU then computes

tlv_array_len = skb->len - LLCP_HEADER_SIZE;

as a size_t and hands it to the TLV walk. When the frame is shorter than the header the subtraction wraps to a huge value and the walk runs far past the buffer, an out-of-bounds read.

A nearby NFC device can reach this without authentication; LLCP link activation happens automatically after NFC-DEP.

Guard the common receive choke point __nfcllcprecv(), shared by both the target (nfcllcpdatareceived()) and initiator (nfcllcprecv()) paths, so a short skb is dropped before the rxwork worker parses it. Use pskbmaypull() rather than a skb->len test so the two header bytes are guaranteed to sit in the skb linear area even for a non-linear skb, matching how the sibling NCI and HCI receive paths validate their headers.

Reproduced with a KFENCE out-of-bounds read via /dev/virtual_nci on linux-next.

Found by 0sec automated security-research tooling (https://0sec.ai).

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80798.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
d646960f7986fefb460a2b062d5ccc8ccfeacc3a
Fixed
e6ec76a68dce04884dfeccfe5a5f0e9f67c0ec82
Fixed
f36cffea24bf3e2cc29a00d4b51dbcadc087d810
Fixed
a7b9b449f5a5132221fff6adc11a9431ab8cd914
Fixed
3793d768b40f38bb97265dd5b9a8b8655c4e1b1d
Fixed
eab47618e282602197db287ecbd1b09d356a2515
Fixed
e969e98410051b1ef8cc318bfe0c7e3f24ec766d
Fixed
ae5f20f5842f440b72d030e3a34fe182dd8eae42
Fixed
d3d90243393c48146911c67fd3792b549d21d9e6
Fixed
95674f506c6376d6722a23144c9acd26609771ed

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80798.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
3.3.0
Fixed
5.10.267
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.218
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.185
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.154
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.106
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.47
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.11
Type
ECOSYSTEM
Events
Introduced
7.2.0
Fixed
7.2.1

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80798.json"