GHSA-2VFP-4QHQ-6RFC
Vulnerability from github – Published: 2026-09-04 18:31 – Updated: 2026-09-04 18:31In the Linux kernel, the following vulnerability has been resolved:
nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers
nfc_llcp_parse_gb_tlv() and nfc_llcp_parse_connection_tlv() contain three related bugs in their TLV parsing loops:
-
'offset' is declared u8 but tlv_array_len is u16. When TLV data advances offset past 255 it silently wraps to zero, causing infinite loops or double-processing of buffer data.
-
Before reading tlv[0] (type) and tlv[1] (length) there is no check that offset+2 <= tlv_array_len. A truncated TLV causes an OOB read of one byte past the buffer end.
-
After reading the length field, the value bytes are accessed without checking offset+2+length <= tlv_array_len. 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 nfc_llcp_set_remote_gb() which feeds remote LLCP general bytes directly into nfc_llcp_parse_gb_tlv() 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": [],
"aliases": [
"CVE-2026-80799"
],
"database_specific": {
"cwe_ids": [],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-09-04T16:18:06Z",
"severity": null
},
"details": "In the Linux kernel, the following vulnerability has been resolved:\n\nnfc: llcp: fix OOB read and u8 offset wrap in TLV parsers\n\nnfc_llcp_parse_gb_tlv() and nfc_llcp_parse_connection_tlv() contain\nthree related bugs in their TLV parsing loops:\n\n1. \u0027offset\u0027 is declared u8 but tlv_array_len is u16. When TLV data\n advances offset past 255 it silently wraps to zero, causing\n infinite loops or double-processing of buffer data.\n\n2. Before reading tlv[0] (type) and tlv[1] (length) there is no\n check that offset+2 \u003c= tlv_array_len. A truncated TLV causes\n an OOB read of one byte past the buffer end.\n\n3. After reading the length field, the value bytes are accessed\n without checking offset+2+length \u003c= tlv_array_len. A crafted\n length=0xFF on a short buffer causes up to 255 bytes of OOB\n read past the buffer end.\n\nBoth functions are reachable without authentication via\nnfc_llcp_set_remote_gb() which feeds remote LLCP general bytes\ndirectly into nfc_llcp_parse_gb_tlv() with no additional\nvalidation.\n\nFix all three issues by widening offset from u8 to u16 and adding\nbounds checks for both the TLV header and value field before each\naccess.",
"id": "GHSA-2vfp-4qhq-6rfc",
"modified": "2026-09-04T18:31:26Z",
"published": "2026-09-04T18:31:26Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-80799"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/2c1456fe09ab1a5a9fe1d8339ca6d509589b56e1"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/2d239590d1845a706304833d40dd6d4fec20ad88"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/382eaa770335acf4f16a5a55524500f2bb4207df"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/78b20c8eeacd2e44a2d8a4cb5316d3c521d90911"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/7f6f3d087c67a4346189ef2c36481455bbc59a74"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/875285a165fd3b402de2ab3be0deb355d6f4caf5"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/9c47d667963542c3cf8e3007b7f10c0904d08238"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/a209334ed929941b20810c17c3a507445b0a7c85"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/e84cdfdc4a6c88e8b751144458f2e04e24415a28"
}
],
"schema_version": "1.4.0",
"severity": []
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.