HIGH Introduced in 4.4
nfc ReadLength Overflow
CVE-2026-80802
CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: nfc: fdp: bound the device-reported read length and fix an skb leak fdp_nci_i2c_read() takes the next packet length from two device-supplied bytes and never validates it. The value is a u16 used as the i2c_master_recv() count into a 261-byte on-stack buffer: a malicious, counterfeit or malfunctioning controller (or an i2c bus interposer) can drive it far past the buffer for a stack out-of-bounds write that clobbers the canary and return address, or below the minimum frame size (directly, or by truncating the computed sum) so the header/LRC strip and the next length read run past a short receive. Reject a length outside [FDP_NCI_I2C_MIN_PAYLOAD, FDP_NCI_I2C_MAX_PAYLOAD], as a corrupted packet already is, and force resynchronization. The same loop allocates one data skb per iteration and assumes a length packet followed by a data packet; a device that sends two data packets in one call leaks the first skb when the second allocation overwrites it. Free a previously allocated skb before allocating the next.
02KernelScan AI Analysis
Risk summary
The Intel Fields Peak NFC driver trusts a device-supplied packet length without bounds checking, allowing a malicious or malfunctioning NFC controller to trigger a stack buffer overflow via the I2C bus. Exploitation requires physical access to the I2C bus or NFC controller hardware, limiting the attack to scenarios where an attacker can replace or interpose on the NFC controller. Impact ranges from kernel crash to potential code execution in kernel context.
Vulnerability analysis
The NFC driver reads a packet length from the connected controller over I2C without validating it against the size of the receiving stack buffer. A malicious, counterfeit, or malfunctioning controller can supply an oversized length, causing the driver to write far past the buffer and overwrite the stack canary and return address, or supply a length below the minimum frame size so that subsequent reads run past a short receive. The fix bounds the device-reported length to a valid range and forces resynchronization when it falls outside, treating an out-of-range value as a corrupted packet. A secondary issue where a duplicate data packet causes a previously allocated network buffer to be leaked is also fixed by freeing the old buffer before allocating a new one. Reaching this code requires physical access to the I2C bus or the NFC controller itself — through a counterfeit device, a bus interposer, or malfunctioning hardware — and the Intel Fields Peak NFC driver must be loaded.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 4.4 | 5.10.267 | d9498ab9a78c |
| 5.15 | 4.4 | 5.15.218 | 1fc32327b927 |
| 6.1 | 4.4 | 6.1.185 | 8d2c243b7985 |
| 6.12 | 4.4 | 6.12.106 | 0d723090645b |
| 6.18 | 4.4 | 6.18.47 | db7e464b3509 |
| 6.6 | 4.4 | 6.6.154 | fc3c2bd5b1ec |
| 7.1 | 4.4 | 7.1.11 | e5eec121f2c3 |
| 7.2 | 4.4 | 7.2.1 | 1aa3fc769b0c |
| mainline | 4.4 | 7.3 | 7ad21dcfeb51 |
| cip/5.10 | 4.4 | 5.10.268-cip77 | d9498ab9a78c |
| cip/5.10-rt | 4.4 | 5.10.268-cip77-rt34 | d9498ab9a78c |
| cip/6.1 | 4.4 | 6.1.187-cip60 | 8d2c243b7985 |
| cip/6.1-rt | 4.4 | 6.1.189-cip61-rt32 | 8d2c243b7985 |
| cip/6.12 | 4.4 | 6.12.108-cip31 | 0d723090645b |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.108-cip31 |
| cip/6.1 | Fixed in 6.1.187-cip60 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Fixed in 5.10.268-cip77 |
| cip/5.10-rt | Fixed in 5.10.268-cip77-rt34 |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |
| cip/4.4 | Affected — no CIP fix yet (latest 4.4.302-cip115) |
| cip/4.4-rt | Affected — no CIP fix yet (latest 4.4.302-cip115-rt63) |