usb: gadget: ncm: Fix handling of zero block length packets
Key facts
- Attack vector
- Local
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- —
- Confidentiality · integrity · availability
- None · None · High
- Fix status
- Fixed
Attack profile from CVSS 3.1 · NVD. Fix status from CNA.
Summary
In the Linux kernel, the following vulnerability has been resolved: usb: gadget: ncm: Fix handling of zero block length packets While connecting to a Linux host with CDC_NCM_NTB_DEF_SIZE_TX set to 65536, it has been observed that we receive short packets, which come at interval of 5-10 seconds sometimes and have block length zero but still contain 1-2 valid datagrams present. According to the NCM spec: "If wBlockLength = 0x0000, the block is terminated by a short packet. In this case, the USB transfer must still be shorter than dwNtbInMaxSize or dwNtbOutMaxSize. If exactly dwNtbInMaxSize or dwNtbOutMaxSize bytes are sent, and the size is a multiple of wMaxPacketSize for the given pipe, then no ZLP shall be sent. wBlockLength= 0x0000 must be used with extreme care, because of the possibility that the host and device may get out of sync, and because of test issues. wBlockLength = 0x0000 allows the sender to reduce latency by starting to send a very large NTB, and then shortening it when the sender discovers that there’s not sufficient data to justify sending a large NTB" However, there is a potential issue with the current implementation, as it checks for the occurrence of multiple NTBs in a single giveback by verifying if the leftover bytes to be processed is zero or not. If the block length reads zero, we would process the same NTB infintely because the leftover bytes is never zero and it leads to a crash. Fix this by bailing out if block length reads zero.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Linux | Linux | 4.19.297 to before 4.19.312; 5.4.259 to before 5.4.274; 5.10.199 to before 5.10.215; 5.15.136 to before 5.15.154; 6.1.59 to before 6.1.84; 4.14.328 to before 4.15; 6.5.8 to before 6.6 | 4.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.84, 4.15, 6.6 | Patch available | CNA |
| Linux | Linux | 6.6 and later | 4.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.84, 6.6.24, 6.7.12, 6.8 | Patch available | CNA |
- Linux VendorLinux Affected 4.19.297 to before 4.19.312; 5.4.259 to before 5.4.274; 5.10.199 to before 5.10.215; 5.15.136 to before 5.15.154; 6.1.59 to before 6.1.84; 4.14.328 to before 4.15; 6.5.8 to before 6.6 Fixed in 4.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.84, 4.15, 6.6 Patch available CNA
- Linux VendorLinux Affected 6.6 and later Fixed in 4.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.84, 6.6.24, 6.7.12, 6.8 Patch available CNA
CPE configurations NVD · 12
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.14.328 to before 4.15; 4.19.297 to before 4.19.312; 5.4.259 to before 5.4.274; 5.10.199 to before 5.10.215; 5.15.136 to before 5.15.154; 6.1.59 to before 6.1.84; 6.5.8 to before 6.6; 6.6.1 to before 6.6.24; 6.7 to before 6.7.12 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.6:-:*:*:*:*:*:* | 6.6 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.6:rc6:*:*:*:*:*:* | 6.6 rc6 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.6:rc7:*:*:*:*:*:* | 6.6 rc7 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:* | 6.8 rc1 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.8:rc2:*:*:*:*:*:* | 6.8 rc2 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.8:rc3:*:*:*:*:*:* | 6.8 rc3 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.8:rc4:*:*:*:*:*:* | 6.8 rc4 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.8:rc5:*:*:*:*:*:* | 6.8 rc5 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.8:rc6:*:*:*:*:*:* | 6.8 rc6 | Vulnerable | Linux |
- cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 4.14.328 to before 4.15; 4.19.297 to before 4.19.312; 5.4.259 to before 5.4.274; 5.10.199 to before 5.10.215; 5.15.136 to before 5.15.154; 6.1.59 to before 6.1.84; 6.5.8 to before 6.6; 6.6.1 to before 6.6.24; 6.7 to before 6.7.12 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.6:-:*:*:*:*:*:* Versions 6.6 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.6:rc6:*:*:*:*:*:* Versions 6.6 rc6 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.6:rc7:*:*:*:*:*:* Versions 6.6 rc7 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:* Versions 6.8 rc1 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.8:rc2:*:*:*:*:*:* Versions 6.8 rc2 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.8:rc3:*:*:*:*:*:* Versions 6.8 rc3 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.8:rc4:*:*:*:*:*:* Versions 6.8 rc4 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.8:rc5:*:*:*:*:*:* Versions 6.8 rc5 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.8:rc6:*:*:*:*:*:* Versions 6.8 rc6 Vulnerable ·Linux
Remediation
- Fix · CNA Linux (Linux) Fixed in 4.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.84, 4.15, 6.6
- Fix · CNA Linux (Linux) Fixed in 4.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.84, 6.6.24, 6.7.12, 6.8
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
Not affected: 4 products
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
- Red Hat Enterprise Linux 8
- Red Hat Enterprise Linux 9
Timeline
- 2026-10-02 Threatist record created from CVE-2024-35825
- 2026-10-03 Alias added: GHSA-pcfp-3pw8-73vr
References
Patch 8
- https://git.kernel.org/stable/c/e2dbfea520e60d58e0c498ba41bde10452257779
- https://git.kernel.org/stable/c/a766761d206e7c36d7526e0ae749949d17ca582c
- https://git.kernel.org/stable/c/ef846cdbd100f7f9dc045e8bcd7fe4b3a3713c03
- https://git.kernel.org/stable/c/92b051b87658df7649ffcdef522593f21a2b296b
- https://git.kernel.org/stable/c/7664ee8bd80309b90d53488b619764f0a057f2b7
- https://git.kernel.org/stable/c/a0f77b5d6067285b8eca0ee3bd1e448a6258026f
- https://git.kernel.org/stable/c/6b2c73111a252263807b7598682663dc33aa4b4c
- https://git.kernel.org/stable/c/f90ce1e04cbcc76639d6cba0fdbd820cd80b3c70
More Linux Kernel vulnerabilities
- TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
- TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
- TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
- TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
- TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
- TI-2021-05514 Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACE KEVCVSS 3.1HIGH 8.3
Sources
- CVE-2024-35825 · CVE Program
- CVE-2024-35825 · NVD
- FIRST EPSS
- GHSA-pcfp-3pw8-73vr · GitHub Advisory Database · CC BY 4.0
- CVE-2024-35825 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences