Linux: nfc: port100: reject frames whose declared length exceeds the received data
What fixes it
- 0d482995f0cdd0302450aa300c684c642d8ab31fLinuxCVE List
- 9e8df087826b9999d1b83b06f5d85675d5a69c9eLinuxCVE List
- 144ad477c381e2c592b64898d04ab4ce03b32861LinuxCVE List
- 14b1467cfc6630583650f33538174c5a1ec685abLinuxCVE List
- 035056e07ea65be670284246d9bc62f2f00ff4a3LinuxCVE List
- 092c6a605cbd6414ef499834c2e0da69c2c3388eLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
nfc: port100: reject frames whose declared length exceeds the received data
port100_recv_response() passes the URB transfer buffer to port100_rx_frame_is_valid(), which checksums le16_to_cpu(frame->datalen) bytes of frame->data. datalen is a 16-bit field supplied by the device and is never checked against the number of bytes actually received (urb->actual_length), so a device reporting a datalen larger than the received frame makes port100_data_checksum() read out of bounds past the transfer buffer.
Reject a response whose declared frame size does not fit the received length before validating it.
Found by 0sec (https://0sec.ai) using automated source analysis; the missing bound is evident from source. Compile-tested.
Text from CVE List
Affected versions 18
- Linuxaffected: 562d4d59b8a1d5f3ca75115d6ac10c7b7bc68c06 before 0d482995f0cdd0302450aa300c684c642d8ab31fCVE List
- Linuxaffected: 562d4d59b8a1d5f3ca75115d6ac10c7b7bc68c06 before 9e8df087826b9999d1b83b06f5d85675d5a69c9eCVE List
- Linuxaffected: 562d4d59b8a1d5f3ca75115d6ac10c7b7bc68c06 before db66a30588630c7de30ef033f00daddef69f6ad9CVE List
- Linuxaffected: 562d4d59b8a1d5f3ca75115d6ac10c7b7bc68c06 before 144ad477c381e2c592b64898d04ab4ce03b32861CVE List
- Linuxaffected: 562d4d59b8a1d5f3ca75115d6ac10c7b7bc68c06 before e4da1452e10c6472a4bac48dc2f6a35fff1fcd69CVE List
- Linuxaffected: 562d4d59b8a1d5f3ca75115d6ac10c7b7bc68c06 before 14b1467cfc6630583650f33538174c5a1ec685abCVE List
- Linuxaffected: 562d4d59b8a1d5f3ca75115d6ac10c7b7bc68c06 before 035056e07ea65be670284246d9bc62f2f00ff4a3CVE List
- Linuxaffected: 562d4d59b8a1d5f3ca75115d6ac10c7b7bc68c06 before 092c6a605cbd6414ef499834c2e0da69c2c3388eCVE List
- Linuxaffected: 3.13CVE List
- Linuxunaffected: all versions before 3.13CVE List
- Linuxunaffected: 5.10.271 through 5.10.*CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.55 through 6.18.*CVE List
- Linuxunaffected: 7.2.9 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 8
- git.kernel.org/stable/c/0d482995f0cdd0302450aa300c684c642d8ab31fReferencevia CVE List
- git.kernel.org/stable/c/9e8df087826b9999d1b83b06f5d85675d5a69c9eReferencevia CVE List
- git.kernel.org/stable/c/db66a30588630c7de30ef033f00daddef69f6ad9Referencevia CVE List
- git.kernel.org/stable/c/144ad477c381e2c592b64898d04ab4ce03b32861Referencevia CVE List
- git.kernel.org/stable/c/e4da1452e10c6472a4bac48dc2f6a35fff1fcd69Referencevia CVE List
- git.kernel.org/stable/c/14b1467cfc6630583650f33538174c5a1ec685abReferencevia CVE List
- git.kernel.org/stable/c/035056e07ea65be670284246d9bc62f2f00ff4a3Referencevia CVE List
- git.kernel.org/stable/c/092c6a605cbd6414ef499834c2e0da69c2c3388eReferencevia CVE List