CVE-2021-47582·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: USB: core: Make do_proc_control() and do_proc_bulk() killable The USBDEVFS_CONTROL and USBDEVFS_BULK ioctls invoke usb_start_wait_urb(), which contains an uninterruptible wait with a user-specified timeout value. If timeout value is very large and the device being accessed does not respond in a reasonable amount of time, the kernel will complain about "Task X blocked for more than N seconds", as found in testing by syzbot: INFO: task syz-executor.0:8700 blocked for more than 143 seconds. Not tainted 5.14.0-rc7-syzkaller #0 "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. task:syz-executor.0 state:D stack:23192 pid: 8700 ppid: 8455 flags:0x00004004 Call Trace: context_switch kernel/sched/core.c:4681 [inline] __schedule+0xc07/0x11f0 kernel/sched/core.c:5938 schedule+0x14b/0x210 kernel/sched/core.c:6017 schedule_timeout+0x98/0x2f0 kernel/time/timer.c:1857 do_wait_for_common+0x2da/0x480 kernel/sched/completion.c:85 __wait_for_common kernel/sched/completion.c:106 [inline] wait_for_common kernel/sched/completion.c:117 [inline] wait_for_completion_timeout+0x46/0x60 kernel/sched/completion.c:157 usb_start_wait_urb+0x167/0x550 drivers/usb/core/message.c:63 do_proc_bulk+0x978/0x1080 drivers/usb/core/devio.c:1236 proc_bulk drivers/usb/core/devio.c:1273 [inline] usbdev_do_ioctl drivers/usb/core/devio.c:2547 [inline] usbdev_ioctl+0x3441/0x6b10 drivers/usb/core/devio.c:2713 ... To fix this problem, this patch replaces usbfs's calls to usb_control_msg() and usb_bulk_msg() with special-purpose code that does essentially the same thing (as recommended in the comment for usb_start_wait_urb()), except that it always uses a killable wait and it uses GFP_KERNEL rather than GFP_NOIO.
- Severity
- medium
- Software
- Kernel
- Fixed in
- 5.15.11
- Published
- 2024-06-19
Affected versions
Until: 5.15.11
Fixed in: 5.15.11
How to fix this CVE
Update your Linux kernel to version 5.15.11 or later to fix a denial-of-service vulnerability in USB device file operations. This patch makes USB control and bulk I/O operations killable, preventing the kernel from hanging indefinitely when devices fail to respond within user-specified timeouts. Apply the update using your distribution's package manager to ensure all running instances benefit from the fix.
sudo dnf update kernelDefensia detects this vulnerability
How to check if you are affected
- Check the running kernel version with: uname -r
- Verify if USB device access is enabled by checking for /dev/bus/usb entries: ls -la /dev/bus/usb/
- Search kernel logs for hung task messages related to usb_start_wait_urb: sudo grep -i 'blocked for more than.*usb' /var/log/kern.log or dmesg
- After patching, confirm the new kernel version is loaded with: uname -r and verify it is 5.15.11 or later
FAQ
What is CVE-2021-47582?
This vulnerability affects USB device I/O operations in the Linux kernel, where uninterruptible waits could cause the kernel to hang for extended periods if a USB device fails to respond, triggering hung task warnings and potential system instability.
Is CVE-2021-47582 being actively exploited?
No, this vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog and no public exploits are currently available. However, it can be triggered through local USB device operations.
What versions of Kernel are affected by CVE-2021-47582?
Kernel versions prior to 5.15.11 are vulnerable. The fix was introduced in kernel 5.15.11 and later stable releases.
How do I check if my server is vulnerable to CVE-2021-47582?
Run 'uname -r' to check your kernel version. If it is earlier than 5.15.11, your system is vulnerable to this DoS condition when accessing USB devices.
Does Defensia detect CVE-2021-47582?
Yes — Defensia's CVE advisory scanner compares installed kernel versions against the NVD database. If your system is running a vulnerable kernel version, CVE-2021-47582 will appear in your security dashboard with specific remediation steps.
Related Kernel CVEs
References
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2021-47582. Free for 1 server.
Get started free