In the Linux kernel, the following vulnerability has been resolved:
usb: dwc2: fix possible NULL pointer dereference caused by driver concurrency
In _dwc2_hcd_urb_enqueue(), "urb->hcpriv = NULL" is executed without holding the lock "hsotg->lock". In _dwc2_hcd_urb_dequeue():
spin_lock_irqsave(&hsotg->lock, flags); ... if (!urb->hcpriv) { dev_dbg(hsotg->dev, "## urb->hcpriv is NULL ##\n"); goto out; } rc = dwc2_hcd_urb_dequeue(hsotg, urb->hcpriv); // Use urb->hcpriv ... out: spin_unlock_irqrestore(&hsotg->lock, flags);
When _dwc2_hcd_urb_enqueue() and _dwc2_hcd_urb_dequeue() are concurrently executed, the NULL check of "urb->hcpriv" can be executed before "urb->hcpriv = NULL". After urb->hcpriv is NULL, it can be used in the function call to dwc2_hcd_urb_dequeue(), which can cause a NULL pointer dereference.
This possible bug is found by an experimental static analysis tool developed by myself. This tool analyzes the locking APIs to extract function pairs that can be concurrently executed, and then analyzes the instructions in the paired functions to identify possible concurrency bugs including data races and atomicity violations. The above possible bug is reported, when my tool analyzes the source code of Linux 6.5.
To fix this possible bug, "urb->hcpriv = NULL" should be executed with holding the lock "hsotg->lock". After using this patch, my tool never reports the possible bug, with the kernelconfiguration allyesconfig for x86_64. Because I have no associated hardware, I cannot test the patch in runtime testing, and just verify it according to the code logic.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 30, 2024 | May 21, 2024 |
| Suse | — | Upgrade kernel-develUpgrade gfs2-kmp-64kbUpgrade kernel-obs-qaUpgrade kernel-azure-livepatch-develUpgrade dtb-xilinxUpgrade kernel-symsUpgrade dtb-amazonUpgrade dtb-exynosUpgrade kernel-debugUpgrade dtb-appleUpgrade kernel-debug-develUpgrade kernel-rt_debug-vdsoUpgrade kernel-default-extraUpgrade kernel-syms-azureUpgrade kernel-64kb-livepatch-develUpgrade dtb-lgUpgrade cluster-md-kmp-azureUpgrade kernel-azure-extraUpgrade kernel-default-manUpgrade dtb-freescaleUpgrade kernel-macrosUpgrade dtb-amlogicUpgrade ocfs2-kmp-rtUpgrade kernel-64kbUpgrade dtb-armUpgrade kernel-64kb-develUpgrade reiserfs-kmp-defaultUpgrade kernel-debug-livepatch-develUpgrade kernel-default-optionalUpgrade kernel-rt-livepatchUpgrade dtb-amdUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-rt-livepatch-develUpgrade kselftests-kmp-defaultUpgrade kernel-devel-azureUpgrade dtb-hisiliconUpgrade kernel-sourceUpgrade gfs2-kmp-rtUpgrade kernel-source-azureUpgrade kernel-azure-vdsoUpgrade kselftests-kmp-64kbUpgrade dlm-kmp-azureUpgrade cluster-md-kmp-defaultUpgrade kernel-default-develUpgrade kernel-zfcpdumpUpgrade dtb-apmUpgrade dlm-kmp-64kbUpgrade kernel-kvmsmall-develUpgrade kernel-rt-develUpgrade kernel-kvmsmallUpgrade dtb-mediatekUpgrade kernel-syms-rtUpgrade kernel-devel-rtUpgrade kernel-64kb-optionalUpgrade kernel-64kb-extraUpgrade reiserfs-kmp-rtUpgrade ocfs2-kmp-defaultUpgrade kernel-source-vanillaUpgrade kernel-rt-optionalUpgrade cluster-md-kmp-64kbUpgrade dtb-marvellUpgrade kernel-azure-optionalUpgrade dtb-broadcomUpgrade kernel-rt_debug-develUpgrade dtb-alteraUpgrade gfs2-kmp-defaultUpgrade dtb-allwinnerUpgrade kselftests-kmp-azureUpgrade kernel-docsUpgrade kernel-default-vdsoUpgrade gfs2-kmp-azureUpgrade kernel-docs-htmlUpgrade kernel-azure-baseUpgrade kernel-debug-vdsoUpgrade kernel-default-livepatchUpgrade kernel-rt-extraUpgrade kselftests-kmp-rtUpgrade dtb-renesasUpgrade dlm-kmp-rtUpgrade ocfs2-kmp-64kbUpgrade kernel-obs-buildUpgrade dtb-rockchipUpgrade dtb-nvidiaUpgrade kernel-azureUpgrade dtb-caviumUpgrade kernel-rtUpgrade kernel-default-baseUpgrade kernel-default-livepatch-develUpgrade kernel-default-base-rebuildUpgrade kernel-defaultUpgrade dtb-qcomUpgrade cluster-md-kmp-rtUpgrade kernel-rt_debug-livepatch-develUpgrade reiserfs-kmp-azureUpgrade ocfs2-kmp-azureUpgrade kernel-rt_debugUpgrade kernel-azure-develUpgrade dtb-socionextUpgrade kernel-kvmsmall-vdsoUpgrade dtb-sprdUpgrade kernel-rt-vdsoUpgrade reiserfs-kmp-64kbUpgrade dlm-kmp-defaultUpgrade kernel-source-rt | Jun 13, 2024 | May 21, 2024 |
| Ubuntu | — | Upgrade linux-kvmUpgrade linux-realtimeUpgrade linux-nvidia-tegra-igxUpgrade linux-gcp-5.15Upgrade linux-raspi-5.4Upgrade linux-oracleUpgrade linux-intel-iot-realtimeUpgrade linux-oracle-5.4Upgrade linux-ibm-5.15Upgrade linux-fipsUpgrade linux-nvidia-6.5Upgrade linux-xilinx-zynqmpUpgrade linux-gcp-fipsUpgrade linux-intel-iotg-5.15Upgrade linux-azure-fdeUpgrade linux-intel-iotgUpgrade linux-bluefieldUpgrade linux-lowlatency-hwe-5.15Upgrade linux-nvidiaUpgrade linux-nvidia-tegraUpgrade linux-riscv-5.15Upgrade linux-ibmUpgrade linux-gcpUpgrade linux-gkeop-5.15Upgrade linux-aws-fipsUpgrade linux-lowlatencyUpgrade linux-azureUpgrade linux-awsUpgrade linux-ibm-5.4Upgrade linux-gkeUpgrade linux-aws-5.15Upgrade linux-hwe-5.15Upgrade linuxUpgrade linux-raspiUpgrade linux-gcp-5.4Upgrade linux-azure-5.4Upgrade linux-azure-fipsUpgrade linux-azure-5.15Upgrade linux-oracle-5.15Upgrade linux-hwe-5.4Upgrade linux-aws-5.4Upgrade linux-nvidia-tegra-5.15Upgrade linux-iotUpgrade linux-gkeop | Nov 19, 2024 | May 21, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | May 21, 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