In the Linux kernel, the following vulnerability has been resolved:
usb: gadget: ncm: Avoid dropping datagrams of properly parsed NTBs
It is observed sometimes when tethering is used over NCM with Windows 11 as host, at some instances, the gadget_giveback has one byte appended at the end of a proper NTB. When the NTB is parsed, unwrap call looks for any leftover bytes in SKB provided by u_ether and if there are any pending bytes, it treats them as a separate NTB and parses it. But in case the second NTB (as per unwrap call) is faulty/corrupt, all the datagrams that were parsed properly in the first NTB and saved in rx_list are dropped.
Adding a few custom traces showed the following: [002] d..1 7828.532866: dwc3_gadget_giveback: ep1out: req 000000003868811a length 1025/16384 zsI ==> 0 [002] d..1 7828.532867: ncm_unwrap_ntb: K: ncm_unwrap_ntb toprocess: 1025 [002] d..1 7828.532867: ncm_unwrap_ntb: K: ncm_unwrap_ntb nth: 1751999342 [002] d..1 7828.532868: ncm_unwrap_ntb: K: ncm_unwrap_ntb seq: 0xce67 [002] d..1 7828.532868: ncm_unwrap_ntb: K: ncm_unwrap_ntb blk_len: 0x400 [002] d..1 7828.532868: ncm_unwrap_ntb: K: ncm_unwrap_ntb ndp_len: 0x10 [002] d..1 7828.532869: ncm_unwrap_ntb: K: Parsed NTB with 1 frames
In this case, the giveback is of 1025 bytes and block length is 1024. The rest 1 byte (which is 0x00) won't be parsed resulting in drop of all datagrams in rx_list.
Same is case with packets of size 2048: [002] d..1 7828.557948: dwc3_gadget_giveback: ep1out: req 0000000011dfd96e length 2049/16384 zsI ==> 0 [002] d..1 7828.557949: ncm_unwrap_ntb: K: ncm_unwrap_ntb nth: 1751999342 [002] d..1 7828.557950: ncm_unwrap_ntb: K: ncm_unwrap_ntb blk_len: 0x800
Lecroy shows one byte coming in extra confirming that the byte is coming in from PC:
Transfer 2959 - Bytes Transferred(1025) Timestamp((18.524 843 590) - Transaction 8391 - Data(1025 bytes) Timestamp(18.524 843 590) --- Packet 4063861 Data(1024 bytes) Duration(2.117us) Idle(14.700ns) Timestamp(18.524 843 590) --- Packet 4063863 Data(1 byte) Duration(66.160ns) Time(282.000ns) Timestamp(18.524 845 722)
According to Windows driver, no ZLP is needed if wBlockLength is non-zero, because the non-zero wBlockLength has already told the function side the size of transfer to be expected. However, there are in-market NCM devices that rely on ZLP as long as the wBlockLength is multiple of wMaxPacketSize. To deal with such devices, it pads an extra 0 at end so the transfer is no longer multiple of wMaxPacketSize.
CVSS Details
- CVSS 3.1 Base Score: 7.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jun 27, 2024 | May 17, 2024 |
| Suse | — | Upgrade kernel-docsUpgrade kernel-symsUpgrade kernel-64kb-optionalUpgrade kernel-kvmsmall-develUpgrade kernel-64kbUpgrade dtb-renesasUpgrade cluster-md-kmp-defaultUpgrade dlm-kmp-azureUpgrade kernel-rt-livepatchUpgrade dtb-armUpgrade cluster-md-kmp-rtUpgrade kernel-default-vdsoUpgrade ocfs2-kmp-rtUpgrade kselftests-kmp-rtUpgrade dtb-amlogicUpgrade kernel-debug-livepatch-develUpgrade kernel-rt_debug-vdsoUpgrade reiserfs-kmp-defaultUpgrade dtb-amdUpgrade kernel-default-extraUpgrade kernel-default-livepatch-develUpgrade dtb-hisiliconUpgrade kernel-develUpgrade kernel-kvmsmallUpgrade kernel-obs-qaUpgrade kernel-rt-develUpgrade kernel-devel-rtUpgrade kernel-macrosUpgrade cluster-md-kmp-azureUpgrade kernel-debug-develUpgrade dtb-mediatekUpgrade reiserfs-kmp-azureUpgrade kselftests-kmp-defaultUpgrade gfs2-kmp-rtUpgrade kernel-default-optionalUpgrade dtb-xilinxUpgrade kernel-debugUpgrade kernel-syms-azureUpgrade kernel-zfcpdumpUpgrade ocfs2-kmp-azureUpgrade kernel-64kb-develUpgrade dtb-apmUpgrade kernel-devel-azureUpgrade gfs2-kmp-64kbUpgrade dlm-kmp-defaultUpgrade kernel-64kb-livepatch-develUpgrade kernel-debug-vdsoUpgrade dtb-alteraUpgrade kernel-obs-buildUpgrade kernel-default-livepatchUpgrade kernel-defaultUpgrade kernel-azure-vdsoUpgrade dtb-allwinnerUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-azure-optionalUpgrade kernel-azureUpgrade reiserfs-kmp-rtUpgrade ocfs2-kmp-64kbUpgrade kernel-rt_debug-develUpgrade kernel-azure-develUpgrade dlm-kmp-64kbUpgrade reiserfs-kmp-64kbUpgrade kernel-syms-rtUpgrade kernel-rt_debugUpgrade dtb-sprdUpgrade dtb-marvellUpgrade dtb-freescaleUpgrade kernel-default-develUpgrade dtb-broadcomUpgrade kselftests-kmp-azureUpgrade kselftests-kmp-64kbUpgrade kernel-source-vanillaUpgrade gfs2-kmp-defaultUpgrade dtb-exynosUpgrade kernel-rtUpgrade dtb-lgUpgrade kernel-sourceUpgrade dtb-caviumUpgrade dlm-kmp-rtUpgrade kernel-source-rtUpgrade kernel-rt-livepatch-develUpgrade kernel-kvmsmall-livepatch-develUpgrade dtb-socionextUpgrade dtb-rockchipUpgrade dtb-nvidiaUpgrade dtb-appleUpgrade gfs2-kmp-azureUpgrade ocfs2-kmp-defaultUpgrade kernel-default-baseUpgrade kernel-rt-extraUpgrade dtb-amazonUpgrade kernel-azure-extraUpgrade dtb-qcomUpgrade kernel-docs-htmlUpgrade kernel-default-base-rebuildUpgrade kernel-azure-livepatch-develUpgrade kernel-kvmsmall-vdsoUpgrade kernel-64kb-extraUpgrade cluster-md-kmp-64kbUpgrade kernel-source-azureUpgrade kernel-rt-vdsoUpgrade kernel-rt-optional | Jun 13, 2024 | May 17, 2024 |
| Ubuntu | — | Upgrade linux-image-5.4.0-1045-xilinx-zynqmpUpgrade linux-image-5.15.0-113-genericUpgrade linux-image-5.15.0-1066-azureUpgrade linux-image-5.4.0-186-lowlatencyUpgrade linux-image-ibm-lts-20.04Upgrade linux-image-gcpUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-genericUpgrade linux-image-5.15.0-1060-gkeUpgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-gkeop-5.4Upgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-5.4.0-186-genericUpgrade linux-image-5.15.0-113-generic-lpaeUpgrade linux-image-5.15.0-1063-awsUpgrade linux-image-5.15.0-1030-xilinx-zynqmpUpgrade linux-image-oem-20.04Upgrade linux-image-oem-20.04bUpgrade linux-image-5.4.0-186-generic-lpaeUpgrade linux-image-azureUpgrade linux-image-azure-lts-22.04Upgrade linux-image-oem-osp1Upgrade linux-image-5.4.0-1038-iotUpgrade linux-image-oem-20.04cUpgrade linux-image-gcp-lts-20.04Upgrade linux-image-lowlatencyUpgrade linux-image-5.15.0-113-generic-64kUpgrade linux-image-intelUpgrade linux-image-virtualUpgrade linux-image-intel-iotgUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-5.15.0-112-generic-lpaeUpgrade linux-image-5.15.0-1058-intel-iotgUpgrade linux-image-5.4.0-1073-ibmUpgrade linux-image-gkeopUpgrade linux-image-ibmUpgrade linux-image-azure-lts-20.04Upgrade linux-image-oracle-lts-20.04Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-gkeUpgrade linux-image-generic-64kUpgrade linux-image-5.15.0-1060-kvmUpgrade linux-image-5.15.0-1057-ibmUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-gke-5.15Upgrade linux-image-5.4.0-1086-bluefieldUpgrade linux-image-nvidiaUpgrade linux-image-5.4.0-1126-awsUpgrade linux-image-oemUpgrade linux-image-5.15.0-1046-gkeopUpgrade linux-image-generic-lpaeUpgrade linux-image-5.15.0-1058-raspiUpgrade linux-image-5.4.0-1093-gkeopUpgrade linux-image-5.15.0-1062-gcpUpgrade linux-image-bluefieldUpgrade linux-image-5.15.0-1058-nvidia-lowlatencyUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-aws-lts-22.04Upgrade linux-image-5.15.0-1061-oracleUpgrade linux-image-raspi-hwe-18.04Upgrade linux-image-5.15.0-112-generic-64kUpgrade linux-image-generic-hwe-18.04Upgrade linux-image-5.4.0-1130-gcpUpgrade linux-image-raspiUpgrade linux-image-5.15.0-112-genericUpgrade linux-image-oem-20.04dUpgrade linux-image-awsUpgrade linux-image-5.4.0-1110-raspiUpgrade linux-image-virtual-hwe-18.04Upgrade linux-image-5.15.0-110-lowlatencyUpgrade linux-image-5.15.0-1056-ibmUpgrade linux-image-kvmUpgrade linux-image-gkeop-5.15Upgrade linux-image-5.15.0-110-lowlatency-64kUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-5.4.0-1125-oracleUpgrade linux-image-5.4.0-1114-kvmUpgrade linux-image-5.4.0-1131-azureUpgrade linux-image-5.15.0-1065-azure-fdeUpgrade linux-image-oracleUpgrade linux-image-raspi-nolpaeUpgrade linux-image-raspi2Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-aws-lts-20.04Upgrade linux-image-5.15.0-1058-nvidiaUpgrade linux-image-lowlatency-hwe-20.04 | Jul 1, 2024 | May 17, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | May 17, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub