CVE-2026-31617CWE-191

CVE-2026-31617

Medium · published April 24, 2026

CVSS v3.1
5.5
EPSS
0%
Percentile
6.9
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00177 · 6.9th percentile
Weakness
CWE-191 · Integer Underflow (Wrap or Wraparound)
Published
2026-04-24T19:16Z
Affected products (5)
ProductVersionsFixed in
linux/linux_kernel≥ 5.9, < 6.6.1366.6.136
linux/linux_kernel≥ 6.12, < 6.12.836.12.83
linux/linux_kernel≥ 6.13, < 6.18.246.18.24
linux/linux_kernel≥ 6.19, < 6.19.146.19.14
linux/linux_kernel≥ 7.0, < 7.0.17.0.1
References (13)
EPSS history
Timeline
  • 24 APR 14:42Z
    usb: gadget: f_ncm: validate minimum block_len in ncm_unwrap_ntb()
    cvelistv5