CVE-2026-23448
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
03/04/2026
Last modified:
03/04/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: usb: cdc_ncm: add ndpoffset to NDP16 nframes bounds check<br />
<br />
cdc_ncm_rx_verify_ndp16() validates that the NDP header and its DPE<br />
entries fit within the skb. The first check correctly accounts for<br />
ndpoffset:<br />
<br />
if ((ndpoffset + sizeof(struct usb_cdc_ncm_ndp16)) > skb_in->len)<br />
<br />
but the second check omits it:<br />
<br />
if ((sizeof(struct usb_cdc_ncm_ndp16) +<br />
ret * (sizeof(struct usb_cdc_ncm_dpe16))) > skb_in->len)<br />
<br />
This validates the DPE array size against the total skb length as if<br />
the NDP were at offset 0, rather than at ndpoffset. When the NDP is<br />
placed near the end of the NTB (large wNdpIndex), the DPE entries can<br />
extend past the skb data buffer even though the check passes.<br />
cdc_ncm_rx_fixup() then reads out-of-bounds memory when iterating<br />
the DPE array.<br />
<br />
Add ndpoffset to the nframes bounds check and use struct_size_t() to<br />
express the NDP-plus-DPE-array size more clearly.
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/2aa8a4fa8d5b7d0e1ebcec100e1a4d80a1f4b21a
- https://git.kernel.org/stable/c/403f94ddcb36c552fbef51dea735b131e3dcde8b
- https://git.kernel.org/stable/c/789204f980730258c983102c027c375238009c80
- https://git.kernel.org/stable/c/dce9dda0e3707e887977db44407989e9ead26611
- https://git.kernel.org/stable/c/f1c7701d3ac91b62d672c13690cf295821f0d5c3



