CVE-2024-56687
📋 TL;DR
A race condition in the Linux kernel's MUSB gadget driver can cause hardware lockup when the first USB endpoint request is received. This affects systems using USB gadget functionality, particularly USB Ethernet gadgets, potentially preventing network communication. The vulnerability requires specific timing conditions and USB gadget usage to be exploitable.
💻 Affected Systems
- Linux kernel with MUSB gadget driver
📦 What is this software?
Linux Kernel by Linux
The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...
Learn more about Linux Kernel →Linux Kernel by Linux
The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...
Learn more about Linux Kernel →Linux Kernel by Linux
The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...
Learn more about Linux Kernel →Linux Kernel by Linux
The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...
Learn more about Linux Kernel →⚠️ Risk & Real-World Impact
Worst Case
Permanent hardware lockup of USB gadget functionality requiring system reboot, denial of service for USB network interfaces
Likely Case
Intermittent USB gadget failures or network connectivity issues when using USB Ethernet gadgets
If Mitigated
No impact if USB gadget functionality is not used or if systems are not configured as USB devices
🎯 Exploit Status
Exploitation requires specific timing conditions, USB gadget configuration, and race condition triggering
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Kernel versions with commits 0c89445e6d475b78d37b64ae520831cd43af7db4 and related fixes
Vendor Advisory: https://git.kernel.org/stable/c/0c89445e6d475b78d37b64ae520831cd43af7db4
Restart Required: Yes
Instructions:
1. Update Linux kernel to patched version from official kernel.org or distribution repositories. 2. Reboot system to load new kernel. 3. Verify kernel version matches patched release.
🔧 Temporary Workarounds
Disable USB gadget functionality
linuxPrevent exploitation by disabling MUSB gadget driver or USB gadget features
modprobe -r musb_gadget
echo 'blacklist musb_gadget' > /etc/modprobe.d/disable-musb.conf
Disable USB Ethernet gadget
linuxDisable specific vulnerable gadget driver if not needed
modprobe -r g_ether
echo 'blacklist g_ether' > /etc/modprobe.d/disable-g_ether.conf
🧯 If You Can't Patch
- Disable USB gadget functionality entirely if not required
- Implement monitoring for USB gadget failures and system lockups
🔍 How to Verify
Check if Vulnerable:
Check if MUSB gadget driver is loaded: lsmod | grep musb_gadget. Check kernel version against known vulnerable versions.
Check Version:
uname -r
Verify Fix Applied:
Verify kernel version includes fix commits: grep -q '0c89445e6d475b78d37b64ae520831cd43af7db4' /proc/version_signature || echo 'Check kernel source'
📡 Detection & Monitoring
Log Indicators:
- Kernel logs showing USB gadget errors
- System lockups or hangs related to USB operations
- Network interface failures on USB Ethernet gadgets
Network Indicators:
- Sudden loss of USB network connectivity
- USB gadget interface failures
SIEM Query:
source="kernel" AND ("musb" OR "USB gadget" OR "g_ether") AND ("error" OR "lockup" OR "failed")
🔗 References
- https://git.kernel.org/stable/c/0c89445e6d475b78d37b64ae520831cd43af7db4
- https://git.kernel.org/stable/c/3fc137386c4620305bbc2a216868c53f9245670a
- https://git.kernel.org/stable/c/5906ee3693674d734177df13a519a21bb03f730d
- https://git.kernel.org/stable/c/c749500b28cae67410792096133ee7f282439c51
- https://git.kernel.org/stable/c/f05ad9755bb294328c3d0f429164ac6d4d08c548
- https://lists.debian.org/debian-lts-announce/2025/03/msg00001.html