{"id":"CVE-2026-23447","state":"PUBLISHED","title":"net: usb: cdc_ncm: add ndpoffset to NDP32 nframes bounds check","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: usb: cdc_ncm: add ndpoffset to NDP32 nframes bounds check\n\nThe same bounds-check bug fixed for NDP16 in the previous patch also\nexists in cdc_ncm_rx_verify_ndp32(). The DPE array size is validated\nagainst the total skb length without accounting for ndpoffset, allowing\nout-of-bounds reads when the NDP32 is placed near the end of the NTB.\n\nAdd ndpoffset to the nframes bounds check and use struct_size_t() to\nexpress the NDP-plus-DPE-array size more clearly.\n\nCompile-tested only.","publishedAt":"2026-04-03T15:15:30.495Z","updatedAt":"2026-09-14T11:58:13.940Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"baf246d6680befde2086b1df9eb3aaba3fb6853f","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"125f932a76a97904ef8a555f1dd53e5d0e288c54","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"af0d1613d6751489dbf9f69aac1123f0b1e566e5","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"a5bd5a2710310c965ea4153cba4210988a3454e2","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"de70da1fb1d152e981ecb3157f7ec2b633005c16","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"77914255155e68a20aa41175edeecf8121dac391","versionType":"git"},{"version":"8cf7db86a8984ffa3a3388a8df12bc0aa4c79bd7","status":"affected","versionType":"git"},{"version":"4ca8b8855264cf1439cdab3da7049bd1e3c2a9e6","status":"affected","versionType":"git"},{"version":"a270ca35a9499b58366d696d3290eaa4697a42db","status":"affected","versionType":"git"},{"version":"4.14.317","status":"affected","lessThan":"4.15","versionType":"semver"},{"version":"4.19.285","status":"affected","lessThan":"4.20","versionType":"semver"},{"version":"5.4.245","status":"affected","lessThan":"5.5","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/usb/cdc_ncm.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.7","versionType":"semver"},{"version":"6.1.188","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.130","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.78","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.20","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.10","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/usb/cdc_ncm.c"]}],"references":["https://git.kernel.org/stable/c/baf246d6680befde2086b1df9eb3aaba3fb6853f","https://git.kernel.org/stable/c/125f932a76a97904ef8a555f1dd53e5d0e288c54","https://git.kernel.org/stable/c/af0d1613d6751489dbf9f69aac1123f0b1e566e5","https://git.kernel.org/stable/c/a5bd5a2710310c965ea4153cba4210988a3454e2","https://git.kernel.org/stable/c/de70da1fb1d152e981ecb3157f7ec2b633005c16","https://git.kernel.org/stable/c/77914255155e68a20aa41175edeecf8121dac391"],"weaknesses":[],"ingestedAt":"2026-10-29T20:11:21.040Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/23xxx/CVE-2026-23447.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-23447","state":"PUBLISHED","datePublished":"2026-04-03T15:15:30.495Z","dateUpdated":"2026-09-14T11:58:13.940Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-01-13T15:37:46.019Z"},"containers":{"cna":{"title":"net: usb: cdc_ncm: add ndpoffset to NDP32 nframes bounds check","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: usb: cdc_ncm: add ndpoffset to NDP32 nframes bounds check\n\nThe same bounds-check bug fixed for NDP16 in the previous patch also\nexists in cdc_ncm_rx_verify_ndp32(). The DPE array size is validated\nagainst the total skb length without accounting for ndpoffset, allowing\nout-of-bounds reads when the NDP32 is placed near the end of the NTB.\n\nAdd ndpoffset to the nframes bounds check and use struct_size_t() to\nexpress the NDP-plus-DPE-array size more clearly.\n\nCompile-tested only."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"baf246d6680befde2086b1df9eb3aaba3fb6853f","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"125f932a76a97904ef8a555f1dd53e5d0e288c54","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"af0d1613d6751489dbf9f69aac1123f0b1e566e5","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"a5bd5a2710310c965ea4153cba4210988a3454e2","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"de70da1fb1d152e981ecb3157f7ec2b633005c16","versionType":"git"},{"version":"0fa81b304a7973a499f844176ca031109487dd31","status":"affected","lessThan":"77914255155e68a20aa41175edeecf8121dac391","versionType":"git"},{"version":"8cf7db86a8984ffa3a3388a8df12bc0aa4c79bd7","status":"affected","versionType":"git"},{"version":"4ca8b8855264cf1439cdab3da7049bd1e3c2a9e6","status":"affected","versionType":"git"},{"version":"a270ca35a9499b58366d696d3290eaa4697a42db","status":"affected","versionType":"git"},{"version":"4.14.317","status":"affected","lessThan":"4.15","versionType":"semver"},{"version":"4.19.285","status":"affected","lessThan":"4.20","versionType":"semver"},{"version":"5.4.245","status":"affected","lessThan":"5.5","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/usb/cdc_ncm.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.7","versionType":"semver"},{"version":"6.1.188","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.130","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.78","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.20","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.10","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/usb/cdc_ncm.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/baf246d6680befde2086b1df9eb3aaba3fb6853f"},{"url":"https://git.kernel.org/stable/c/125f932a76a97904ef8a555f1dd53e5d0e288c54"},{"url":"https://git.kernel.org/stable/c/af0d1613d6751489dbf9f69aac1123f0b1e566e5"},{"url":"https://git.kernel.org/stable/c/a5bd5a2710310c965ea4153cba4210988a3454e2"},{"url":"https://git.kernel.org/stable/c/de70da1fb1d152e981ecb3157f7ec2b633005c16"},{"url":"https://git.kernel.org/stable/c/77914255155e68a20aa41175edeecf8121dac391"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-09-14T11:58:13.940Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"6.1.188"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"6.6.130"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"6.12.78"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"6.18.20"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"6.19.10"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"7.0"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.14.317"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19.285"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.4.245"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}