Skip to content
5.5 Medium

CVE-2026-31617 In the Linux kernel, the following vulnerability has been resolved: usb: gadget: f_ncm: validate minimum block_len in…

Description

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: f_ncm: validate minimum block_len in ncm_unwrap_ntb() The block_len read from the host-supplied NTB header is checked against ntb_max but has no lower bound. When block_len is smaller than opts->ndp_size, the bounds check of: ndp_index > (block_len - opts->ndp_size) will underflow producing a huge unsigned value that ndp_index can never exceed, defeating the check entirely. The same underflow occurs in the datagram index checks against block_len - opts->dpe_size. With those checks neutered, a malicious USB host can choose ndp_index and datagram offsets that point past the actual transfer, and the skb_put_data() copies adjacent kernel memory into the network skb. Fix this by rejecting block lengths that cannot hold at least the NTB header plus one NDP. This will make block_len - opts->ndp_size and block_len - opts->dpe_size both well-defined. Commit 8d2b1a1ec9f5 ("CDC-NCM: avoid overflow in sanity checking") fixed a related class of issues on the host side of NCM.

Affected products and versions

Product Affected versions Fixed in
Linux 7.1 earliest → < 7.1 7.1
Linux 7.0 earliest → < 7.0.1 7.0.1
Linux 6.19 earliest → < 6.19.14 6.19.14
Linux 6.18 earliest → < 6.18.24 6.18.24
Linux 6.12 earliest → < 6.12.83 6.12.83
Linux 6.6 earliest → < 6.6.136 6.6.136
Linux 6.1 earliest → < 6.1.175 6.1.175
Linux 5.15 earliest → < 5.15.209 5.15.209
Linux 5.10 earliest → < 5.10.258 5.10.258
Show the 7 other branches
Product Affected versions Fixed in
Linux 5.9 No fix stated
Red Hat Enterprise Linux 10 Versions not published
Red Hat Enterprise Linux 6 Versions not published
Red Hat Enterprise Linux 7 Versions not published
Red Hat Enterprise Linux 8 Versions not published
Red Hat Enterprise Linux 9 Versions not published
SIMATIC S7-1500 TM MFP - GNU/Linux subsystem Versions not published
The 18286 CVEs of Linux →
Track this CVE