CVE-2026-80799: nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers

Published Sep 4, 2026
·
Updated

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

nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers

nfcllcpparsegbtlv() and nfcllcpparseconnectiontlv() contain three related bugs in their TLV parsing loops:

1. 'offset' is declared u8 but tlvarraylen is u16. When TLV data advances offset past 255 it silently wraps to zero, causing infinite loops or double-processing of buffer data.

2. Before reading tlv[0] (type) and tlv[1] (length) there is no check that offset+2 <= tlvarraylen. A truncated TLV causes an OOB read of one byte past the buffer end.

3. After reading the length field, the value bytes are accessed without checking offset+2+length <= tlvarraylen. A crafted length=0xFF on a short buffer causes up to 255 bytes of OOB read past the buffer end.

Both functions are reachable without authentication via nfcllcpsetremotegb() which feeds remote LLCP general bytes directly into nfcllcpparsegbtlv() with no additional validation.

Fix all three issues by widening offset from u8 to u16 and adding bounds checks for both the TLV header and value field before each access.

Affected Software

1 affected component
Linux Kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Linux kernel (nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers) to a version that resolves this vulnerability.

    Patch nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers
  2. Configuration

    Update the TLV parsing loops in both nfc_llcp_parse_gb_tlv() and nfc_llcp_parse_connection_tlv() to validate TLV header and value bounds before each access (specifically check offset+2 <= tlv_array_len and offset+2+length <= tlv_array_len).

    Linux kernel NFC LLCP nfc_llcp_parse_gb_tlv() and nfc_llcp_parse_connection_tlv() TLV parsing bounds checks = Add/ensure checks that offset+2 <= tlv_array_len and offset+2+length <= tlv_array_len before accessing tlv[0]/tlv[1] and before reading value bytes

Event History

Sep 4, 2026
CVE Published
via MITRE·03:13 PM
Data Sourced
via MITRE·03:13 PM
Description

Frequently Asked Questions

1

Who is exposed to this issue?

Systems using the Linux kernel's NFC LLCP functionality are exposed when they process remote LLCP general bytes. The affected parsing path can be reached by a remote peer without authentication.

2

What does an attacker need to exploit it?

An attacker needs to provide crafted remote LLCP TLV data, such as a truncated TLV header or a length field that exceeds the available buffer. No authentication is required for the described reachable path.

3

What can happen with malicious TLV input?

Malformed input can cause out-of-bounds reads, including reads up to 255 bytes beyond a short buffer. TLV data exceeding 255 bytes can also make the 8-bit parser offset wrap, leading to infinite loops or repeated processing of buffer data.

4

What does the fix change?

The fix widens the parser offset from u8 to u16 and verifies that both each TLV header and its declared value bytes fit within the provided TLV buffer before accessing them.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203