Skip to main content
Vulnerability Database/CVE-2026-80798

CVE-2026-80798: Linux Kernel NFC LLCP Buffer Overflow

CVE-2026-80798 is a buffer overflow flaw in the Linux kernel NFC LLCP component that allows nearby devices to trigger out-of-bounds reads without authentication. This article covers technical details, impact, and mitigation.

Published:

CVE-2026-80798 Overview

CVE-2026-80798 is an out-of-bounds read vulnerability in the Linux kernel's Near Field Communication (NFC) Logical Link Control Protocol (LLCP) receive path. The flaw exists because the kernel never validates that an incoming LLCP Protocol Data Unit (PDU) contains at least the two-byte LLCP header before parsing it. When a CONNECT or CC PDU is shorter than LLCP_HEADER_SIZE, the length subtraction wraps as a size_t, producing a huge value that drives the Type-Length-Value (TLV) walk far past the socket buffer. A nearby NFC device can trigger the condition without authentication because LLCP link activation occurs automatically after NFC-DEP negotiation.

Critical Impact

An unauthenticated attacker within NFC range can trigger an out-of-bounds read in the Linux kernel, potentially leading to information disclosure or kernel instability.

Affected Products

  • Linux kernel (mainline and stable branches receiving the referenced backports)
  • Linux distributions shipping vulnerable nfc/llcp subsystem builds
  • Systems with NFC hardware and the nfc kernel module loaded

Discovery Timeline

  • 2026-09-04 - CVE-2026-80798 published to the National Vulnerability Database
  • 2026-09-04 - Last updated in NVD database
  • Reported by 0sec automated security-research tooling, reproduced via /dev/virtual_nci on linux-next with KFENCE

Technical Details for CVE-2026-80798

Vulnerability Analysis

Every LLCP PDU begins with a two-byte header containing the Destination Service Access Point (DSAP), Source Service Access Point (SSAP), and Payload Type (PTYPE). The receive path in nfc_llcp_rx_skb() reads this header through nfc_llcp_ptype(), nfc_llcp_dsap(), and nfc_llcp_ssap(), each of which dereferences pdu->data[0] and pdu->data[1] without any prior length check.

For CONNECT and CC PDUs, the code then computes tlv_array_len = skb->len - LLCP_HEADER_SIZE as a size_t. When skb->len is less than LLCP_HEADER_SIZE, the unsigned subtraction underflows to a very large value. The subsequent TLV walk uses this length as a bound and reads memory far beyond the socket buffer's linear area. The bug was reproduced as a KFENCE-detected out-of-bounds read through the virtual NCI interface.

Root Cause

The root cause is a missing length validation combined with an unsigned integer underflow [CWE-125, CWE-191]. The NFC LLCP receive code trusts that any skb reaching the parser already contains at least the header bytes, but no earlier layer enforces this invariant. Sibling NFC receive paths for the NFC Controller Interface (NCI) and Host Controller Interface (HCI) already validate their headers, making the LLCP path an outlier.

Attack Vector

An attacker within NFC proximity of a vulnerable device can send a malformed LLCP frame shorter than two bytes. Because LLCP link activation happens automatically after NFC-DEP setup, no user interaction or authentication is required. The malformed frame is processed by the rx_work worker, triggering the out-of-bounds read in kernel context.

No synthetic exploitation code is provided. Refer to the upstream commits linked in the References section for the exact code paths and fix.

Detection Methods for CVE-2026-80798

Indicators of Compromise

  • Kernel Address Sanitizer (KASAN) or KFENCE reports referencing nfc_llcp_rx_skb, __nfc_llcp_recv, or the LLCP TLV parsing routines
  • Unexpected oops, warnings, or panics originating from the nfc/llcp subsystem in dmesg or journalctl -k
  • Anomalous NFC activity on systems where NFC is not part of normal operation

Detection Strategies

  • Monitor kernel logs for crashes, KASAN splats, or slab-out-of-bounds reports involving net/nfc/llcp_core.c
  • Audit systems for the presence and load state of the nfc and nfc_digital kernel modules where not required
  • Correlate NFC interface activity with kernel error events using a centralized log platform

Monitoring Recommendations

  • Forward kernel and audit logs to a central analytics platform such as Singularity Data Lake and alert on faults in the nfc/llcp code path
  • Track kernel package versions across the fleet to identify hosts still running vulnerable builds
  • Establish baseline NFC usage per host and flag deviations, particularly on servers and IoT devices where NFC should be disabled

How to Mitigate CVE-2026-80798

Immediate Actions Required

  • Apply the upstream Linux kernel patches referenced below and reboot affected systems
  • On hosts that do not require NFC, unload and blacklist the nfc module to eliminate the attack surface
  • Restrict physical access to devices with active NFC hardware, since the attack requires NFC proximity

Patch Information

The fix guards the common receive choke point __nfc_llcp_recv(), which is shared by the target path (nfc_llcp_data_received()) and the initiator path (nfc_llcp_recv()). Short skbs are dropped before the rx_work worker parses them. The patch uses pskb_may_pull() rather than a plain skb->len check so the two header bytes are guaranteed to be in the skb's linear area, matching how NCI and HCI receive paths validate their headers. See the upstream commits: 3793d76, 95674f50, a7b9b44, ae5f20f5, d3d90243, e6ec76a6, e969e984, eab47618, and f36cffea.

Workarounds

  • Blacklist the nfc kernel module on systems that do not use NFC functionality
  • Physically disable or remove NFC controllers where feasible
  • Limit the ability of unprivileged users to open /dev/virtual_nci or similar NFC interfaces via device permissions
bash
# Disable and blacklist the NFC kernel module on systems that do not need NFC
sudo modprobe -r nfc nfc_digital 2>/dev/null || true
echo -e 'blacklist nfc\nblacklist nfc_digital' | sudo tee /etc/modprobe.d/disable-nfc.conf
sudo update-initramfs -u

# Verify current kernel version after patching
uname -r

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.