CVE-2024-26748·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: usb: cdns3: fix memory double free when handle zero packet 829 if (request->complete) { 830 spin_unlock(&priv_dev->lock); 831 usb_gadget_giveback_request(&priv_ep->endpoint, 832 request); 833 spin_lock(&priv_dev->lock); 834 } 835 836 if (request->buf == priv_dev->zlp_buf) 837 cdns3_gadget_ep_free_request(&priv_ep->endpoint, request); Driver append an additional zero packet request when queue a packet, which length mod max packet size is 0. When transfer complete, run to line 831, usb_gadget_giveback_request() will free this requestion. 836 condition is true, so cdns3_gadget_ep_free_request() free this request again. Log: [ 1920.140696][ T150] BUG: KFENCE: use-after-free read in cdns3_gadget_giveback+0x134/0x2c0 [cdns3] [ 1920.140696][ T150] [ 1920.151837][ T150] Use-after-free read at 0x000000003d1cd10b (in kfence-#36): [ 1920.159082][ T150] cdns3_gadget_giveback+0x134/0x2c0 [cdns3] [ 1920.164988][ T150] cdns3_transfer_completed+0x438/0x5f8 [cdns3] Add check at line 829, skip call usb_gadget_giveback_request() if it is additional zero length packet request. Needn't call usb_gadget_giveback_request() because it is allocated in this driver.
- Severity
- high
- Software
- Kernel
- Fixed in
- 6.7.7
- Published
- 2024-04-03
Affected versions
From: 6.7
Until: 6.7.7
Fixed in: 6.7.7
How to fix this CVE
Update your Linux kernel to version 6.7.7 or later to resolve a double-free memory corruption vulnerability in the USB Cadence 3 controller driver. This flaw occurs when the driver incorrectly frees zero-length packet requests twice during USB transfer completion, potentially leading to kernel crashes or memory corruption. Apply the patch immediately if you are running kernel versions 6.7 through 6.7.6.
sudo dnf update kernel kernel-develDefensia detects this vulnerability
How to check if you are affected
- Step 1: Check your current kernel version with: uname -r
- Step 2: Verify if you are running kernel 6.7.0 through 6.7.6 by comparing the output against affected versions
- Step 3: Search kernel logs for use-after-free errors related to cdns3_gadget_giveback: dmesg | grep -i 'cdns3\|use-after-free'
- Step 4: After patching, reboot and confirm the new kernel version: uname -r (should show 6.7.7 or later)
FAQ
What is CVE-2024-26748?
CVE-2024-26748 is a double-free memory corruption vulnerability in the Linux kernel's USB Cadence 3 (cdns3) gadget driver that occurs when handling zero-length packet requests, potentially causing kernel panics or memory heap corruption.
Is CVE-2024-26748 being actively exploited?
No, there is no evidence of active exploitation in the wild. This vulnerability has not been added to the CISA Known Exploited Vulnerabilities (KEV) catalog, and no public exploits are available.
What versions of Kernel are affected by CVE-2024-26748?
Kernel versions 6.7 through 6.7.6 are affected. The vulnerability was patched in version 6.7.7 and later.
How do I check if my server is vulnerable to CVE-2024-26748?
Run 'uname -r' to check your kernel version. If the output shows a version between 6.7.0 and 6.7.6, your system is vulnerable and requires immediate patching.
Does Defensia detect CVE-2024-26748?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If the Linux kernel is installed on a monitored server, CVE-2024-26748 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/1e204a8e9eb514e22a6567fb340ebb47df3f3a48
- https://git.kernel.org/stable/c/3a2a909942b5335b7ea66366d84261b3ed5f89c8
- https://git.kernel.org/stable/c/5fd9e45f1ebcd57181358af28506e8a661a260b3
- https://git.kernel.org/stable/c/70e8038813f9d3e72df966748ebbc40efe466019
- https://git.kernel.org/stable/c/92d20406a3d4ff3e8be667c79209dc9ed31df5b3
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2024-26748. Free for 1 server.
Get started free