CVE-2024-36977·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: usb: dwc3: Wait unconditionally after issuing EndXfer command Currently all controller IP/revisions except DWC3_usb3 >= 310a wait 1ms unconditionally for ENDXFER completion when IOC is not set. This is because DWC_usb3 controller revisions >= 3.10a supports GUCTL2[14: Rst_actbitlater] bit which allows polling CMDACT bit to know whether ENDXFER command is completed. Consider a case where an IN request was queued, and parallelly soft_disconnect was called (due to ffs_epfile_release). This eventually calls stop_active_transfer with IOC cleared, hence send_gadget_ep_cmd() skips waiting for CMDACT cleared during EndXfer. For DWC3 controllers with revisions >= 310a, we don't forcefully wait for 1ms either, and we proceed by unmapping the requests. If ENDXFER didn't complete by this time, it leads to SMMU faults since the controller would still be accessing those requests. Fix this by ensuring ENDXFER completion by adding 1ms delay in __dwc3_stop_active_transfer() unconditionally.
- Severity
- medium
- Software
- Kernel
- Fixed in
- 6.9.2
- Published
How likely is exploitation
FIRST's Exploit Prediction Scoring System puts the probability of this CVE being exploited in the next 30 days at <0.1% — higher than 10% of all published CVEs. EPSS is an independent forecast of exploitation, not a severity rating: it says nothing about how much damage a successful attack does, which is what a CVSS score measures.
Affected versions
From: 6.9
Until: 6.9.2
Fixed in: 6.9.2
How to fix this CVE
Update your Linux kernel to version 6.9.2 or later to resolve a USB DWC3 controller timing issue that can cause SMMU faults during device disconnection. This vulnerability affects systems with DWC3 USB 3.0 controllers running kernel versions 6.9 through 6.9.2. Apply the patch immediately to prevent potential system instability when USB devices are disconnected during active transfers.
sudo dnf update kernel kernel-develDefensia detects this vulnerability
How to check if you are affected
- Check your kernel version: uname -r
- Verify if you are running 6.9.0, 6.9.1, or 6.9.2: grep -i 'Linux version' /proc/version
- Check for USB DWC3 controller: lspci | grep -i dwc3 or dmesg | grep -i dwc3
- Verify fix by updating kernel and confirming new version: uname -r (should show 6.9.2 or later)
- Check system logs for SMMU faults or USB errors: dmesg | grep -i 'smmu\|usb.*error\|dwc3' | tail -20
FAQ
What is CVE-2024-36977?
This vulnerability affects the USB DWC3 controller driver in the Linux kernel. When a USB device is disconnected during an active data transfer, the ENDXFER command may not complete properly on certain controller revisions, causing the controller to continue accessing freed memory buffers and triggering SMMU faults.
Is CVE-2024-36977 being actively exploited?
No, this CVE is not being actively exploited in the wild and there are no public exploits available. It requires specific hardware (DWC3 USB 3.0 controllers) and a particular timing condition (soft disconnect during active transfer).
What versions of Kernel are affected by CVE-2024-36977?
Linux kernel versions 6.9, 6.9.1, and 6.9.2 are affected. The vulnerability is resolved in kernel 6.9.2 and later versions.
How do I check if my server is vulnerable to CVE-2024-36977?
Run 'uname -r' and check if your kernel version is 6.9.0, 6.9.1, or 6.9.2. If yes, verify the presence of DWC3 USB controller with 'lspci | grep -i dwc3' or 'dmesg | grep dwc3'. If both conditions are met, your system is vulnerable.
Does Defensia detect CVE-2024-36977?
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-36977 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/1ba145f05b5c8f0b1a947a0633b5edff5dd1f1c5
- https://git.kernel.org/stable/c/1d26ba0944d398f88aaf997bda3544646cf21945
- https://git.kernel.org/stable/c/341eb08dbca9eae05308c442fbfab1813a44c97a
- https://git.kernel.org/stable/c/4a387e032909c6dc2b479452c5bbe9a252057925
- https://git.kernel.org/stable/c/ec96bcf5f96a7a5c556b0e881ac3e5c3924d542c
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2024-36977. Free for 1 server.
Get started free