CVE-2026-31617

usb: gadget: f_ncm: validate minimum block_len in ncm_unwrap_ntb()

State
Published
Severity
5.5 Medium
Published
Apr 24, 2026
Updated
Oct 15, 2026
Reserved
Mar 9, 2026

Read the record on cve.org

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.

Scores

CVSSScoreVectorSource
3.15.5 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:Hredhat-SADP

Weaknesses

  • CWE-191 Integer Underflow (Wrap or Wraparound)

Affected Products

ProductVersions
LinuxLinux
  • 2b74b0a04d3e9f9f08ff026e5663dce88ff94e52 to before 068a7f2749fff6462a0a908ec415b885fe430f50Affected
  • 2b74b0a04d3e9f9f08ff026e5663dce88ff94e52 to before 1425655c2870054c3ab4712e2b6dbdd331597adaAffected
  • 2b74b0a04d3e9f9f08ff026e5663dce88ff94e52 to before 8b3b7bd3c02f98634baaf36c7fc7ac915f6517caAffected
  • 2b74b0a04d3e9f9f08ff026e5663dce88ff94e52 to before 0f156bb5334e588034ca68ac2ee92b23f66e56e7Affected
  • 2b74b0a04d3e9f9f08ff026e5663dce88ff94e52 to before 8757a2593631443648218244b9788e193ae0fdc1Affected
  • 2b74b0a04d3e9f9f08ff026e5663dce88ff94e52 to before 6762f8a95772265dd0c2ffe7f400493f3115b135Affected
  • 2b74b0a04d3e9f9f08ff026e5663dce88ff94e52 to before d58ba8f6546232f8414f396c189297dbee03f1a7Affected
  • 2b74b0a04d3e9f9f08ff026e5663dce88ff94e52 to before 74908b0318d1df1188457040b8714ff4d4b68126Affected
  • 2b74b0a04d3e9f9f08ff026e5663dce88ff94e52 to before 8f993d30b95dc9557a8a96ceca11abed674c8acbAffected
  • f7e0611e207d8908c4f2858e244370529a76dbf7Affected
  • b88ad6e714284b33a47834f5f2a294c2b37c66aaAffected
  • 471b23586387a32857778c511be60ab31c98dcfdAffected
  • 4f529c4d1e436230d3af7c09a3239677a14d2b46Affected
  • ae6a5394d9fbe118bc95cfe376d6a9d91d7547e8Affected
  • 4.9.235 to before 4.10Affected
  • 4.14.196 to before 4.15Affected
  • 4.19.143 to before 4.20Affected
  • 5.4.62 to before 5.5Affected
  • 5.8.6 to before 5.9Affected
LinuxLinux
  • 5.9Affected
  • before 5.9Not affected
  • 5.10.258 through 5.10.*Not affected
  • 5.15.209 through 5.15.*Not affected
  • 6.1.175 through 6.1.*Not affected
  • 6.6.136 through 6.6.*Not affected
  • 6.12.83 through 6.12.*Not affected
  • 6.18.24 through 6.18.*Not affected
  • 6.19.14 through 6.19.*Not affected
  • 7.0.1 through 7.0.*Not affected
  • 7.1 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.