CVE-2024-40995: net/sched: act_api: fix possible infinite loop in tcf_idr_check_alloc()
In the Linux kernel, the following vulnerability has been resolved:
net/sched: actapi: fix possible infinite loop in tcfidrcheckalloc()
syzbot found hanging tasks waiting on rtnllock [1]
A reproducer is available in the syzbot bug.
When a request to add multiple actions with the same index is sent, the second request will block forever on the first request. This holds rtnllock, and causes tasks to hang.
Return -EAGAIN to prevent infinite looping, while keeping documented behavior.
[1]
INFO: task kworker/1:0:5088 blocked for more than 143 seconds. Not tainted 6.9.0-rc4-syzkaller-00173-g3cdb45594619 #0 "echo 0 > /proc/sys/kernel/hungtasktimeoutsecs" disables this message. task:kworker/1:0 state:D stack:23744 pid:5088 tgid:5088 ppid:2 flags:0x00004000 Workqueue: eventspowerefficient regcheckchanswork Call Trace: <TASK> contextswitch kernel/sched/core.c:5409 [inline] schedule+0xf15/0x5d00 kernel/sched/core.c:6746 scheduleloop kernel/sched/core.c:6823 [inline] schedule+0xe7/0x350 kernel/sched/core.c:6838 schedulepreemptdisabled+0x13/0x30 kernel/sched/core.c:6895 mutexlockcommon kernel/locking/mutex.c:684 [inline] mutexlock+0x5b8/0x9c0 kernel/locking/mutex.c:752 wiphylock include/net/cfg80211.h:5953 [inline] regleaveinvalidchans net/wireless/reg.c:2466 [inline] regcheckchanswork+0x10a/0x10e0 net/wireless/reg.c:2481
Other sources
Linux Kernel is vulnerable to a denial of service, caused by an infinite loop in Tcfidrcheckalloc(). By sending a specially crafted request, a local authenticated attacker could exploit this vulnerability to cause a denial of service.
— IBM
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 5.4.279 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 5.10.221 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 5.15.162 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 6.1.96 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 6.6.36 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 6.9.7 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 6.10 - Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 5.10.223-1Fixed in 5.10.234-1Fixed in 6.1.129-1Fixed in 6.1.135-1Fixed in 6.12.22-1Fixed in 6.12.25-1 - Upgrade
Upgrade
debian/linux-6.1to a version that resolves this vulnerability.Fixed in 6.1.129-1~deb11u1 - Configuration
Set /proc/sys/kernel/hung_task_timeout_secs to 0 to disable the hung-task warning message.
Linux kernel kernel.hung_task_timeout_secs = 0
Event History
Frequently Asked Questions
What is the severity of CVE-2024-40995?
CVE-2024-40995 is a critical vulnerability that may lead to an infinite loop in the Linux kernel.
How do I fix CVE-2024-40995?
To fix CVE-2024-40995, update your Linux kernel to one of the fixed versions noted in the remediation details.
Which versions of the Linux kernel are affected by CVE-2024-40995?
CVE-2024-40995 affects several versions of the Linux kernel including versions prior to 5.4.279, 5.10.221, 5.15.162, and others listed in the remediation section.
What products are impacted by CVE-2024-40995?
Products affected by CVE-2024-40995 include various Red Hat and Debian Linux kernel versions.
Is there a known exploit for CVE-2024-40995?
Yes, CVE-2024-40995 has been found to cause hanging tasks and can be reproduced as indicated in the syzbot bug report.