Skip to main content

CVE-2024-53044: Vulnerability in Linux Linux

High
VulnerabilityCVE-2024-53044cvecve-2024-53044
Published: Tue Nov 19 2024 (11/19/2024, 17:19:32 UTC)
Source: CVE
Vendor/Project: Linux
Product: Linux

Description

In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_api: fix xa_insert() error path in tcf_block_get_ext() This command: $ tc qdisc replace dev eth0 ingress_block 1 egress_block 1 clsact Error: block dev insert failed: -EBUSY. fails because user space requests the same block index to be set for both ingress and egress. [ side note, I don't think it even failed prior to commit 913b47d3424e ("net/sched: Introduce tc block netdev tracking infra"), because this is a command from an old set of notes of mine which used to work, but alas, I did not scientifically bisect this ] The problem is not that it fails, but rather, that the second time around, it fails differently (and irrecoverably): $ tc qdisc replace dev eth0 ingress_block 1 egress_block 1 clsact Error: dsa_core: Flow block cb is busy. [ another note: the extack is added by me for illustration purposes. the context of the problem is that clsact_init() obtains the same &q->ingress_block pointer as &q->egress_block, and since we call tcf_block_get_ext() on both of them, "dev" will be added to the block->ports xarray twice, thus failing the operation: once through the ingress block pointer, and once again through the egress block pointer. the problem itself is that when xa_insert() fails, we have emitted a FLOW_BLOCK_BIND command through ndo_setup_tc(), but the offload never sees a corresponding FLOW_BLOCK_UNBIND. ] Even correcting the bad user input, we still cannot recover: $ tc qdisc replace dev swp3 ingress_block 1 egress_block 2 clsact Error: dsa_core: Flow block cb is busy. Basically the only way to recover is to reboot the system, or unbind and rebind the net device driver. To fix the bug, we need to fill the correct error teardown path which was missed during code movement, and call tcf_block_offload_unbind() when xa_insert() fails. [ last note, fundamentally I blame the label naming convention in tcf_block_get_ext() for the bug. The labels should be named after what they do, not after the error path that jumps to them. This way, it is obviously wrong that two labels pointing to the same code mean something is wrong, and checking the code correctness at the goto site is also easier ]

AI-Powered Analysis

AILast updated: 06/28/2025, 14:11:46 UTC

Technical Analysis

CVE-2024-53044 is a vulnerability in the Linux kernel's network scheduling subsystem, specifically within the traffic control (tc) block API. The issue arises in the function tcf_block_get_ext(), which manages flow blocks for ingress and egress traffic control on network devices. When a user attempts to assign the same block index to both ingress and egress blocks on a device (e.g., using the command `tc qdisc replace dev eth0 ingress_block 1 egress_block 1 clsact`), the operation fails with an error indicating the flow block control block (cb) is busy. This failure is due to the underlying implementation inserting the device twice into a shared xarray structure, which is not allowed. More critically, when the insertion fails, the code emits a FLOW_BLOCK_BIND command to the offload driver but does not issue a corresponding FLOW_BLOCK_UNBIND command, leaving the offload driver in an inconsistent state. This results in the flow block remaining bound and busy, preventing further configuration changes or removal of the block without rebooting the system or unbinding and rebinding the network device driver. The root cause is a missing error teardown path in the kernel code, which was introduced during code refactoring. The fix involves ensuring that when xa_insert() fails, the kernel properly calls tcf_block_offload_unbind() to clean up the offload state. This vulnerability affects Linux kernel versions containing the commit identified by hash 94e2557d086ad831027c54bc9c2130d337c72814 and likely later versions until patched. The issue does not appear to have known exploits in the wild as of now and does not have an assigned CVSS score. The vulnerability primarily impacts network administrators and systems relying on advanced traffic control configurations, especially those using clsact qdiscs with ingress and egress blocks on network interfaces.

Potential Impact

For European organizations, this vulnerability can cause significant operational disruptions in network infrastructure. Systems running affected Linux kernels that utilize traffic control features for network performance, security filtering, or traffic shaping may experience irrecoverable failures in network device configuration after triggering this bug. The inability to recover without a system reboot or driver rebind can lead to downtime, impacting critical services such as data centers, cloud providers, telecom infrastructure, and enterprise networks. This is particularly relevant for organizations that rely on Linux-based routers, firewalls, or network appliances. While the vulnerability does not directly enable remote code execution or privilege escalation, the denial of service effect on network devices can degrade availability and potentially interrupt business-critical communications. Additionally, recovery procedures requiring reboots or manual driver operations may increase operational costs and risk during incident response. Since the vulnerability is triggered by specific user-space commands, it may also be exploited by malicious insiders or attackers with local access to network management interfaces, emphasizing the need for strict access controls.

Mitigation Recommendations

1. Apply the official Linux kernel patches that address CVE-2024-53044 as soon as they become available. Monitor kernel mailing lists and vendor advisories for updates. 2. Until patched, avoid configuring ingress and egress blocks with the same block index on the same network interface using the tc tool. 3. Implement strict access controls and auditing on systems that allow traffic control configuration to prevent unauthorized or accidental triggering of the vulnerability. 4. For critical systems, consider deploying network device driver reload scripts or automation to quickly unbind and rebind network drivers as a temporary recovery measure without full system reboots. 5. Maintain robust backup and recovery procedures to minimize downtime in case of system reboots. 6. Monitor system logs for error messages related to 'Flow block cb is busy' to detect attempts to trigger this issue. 7. Engage with Linux distribution vendors to obtain backported patches if using long-term support kernels. 8. Test traffic control configurations in staging environments before deployment to detect potential issues related to this vulnerability.

Need more detailed analysis?Get Pro

Technical Details

Data Version
5.1
Assigner Short Name
Linux
Date Reserved
2024-11-19T17:17:24.972Z
Cisa Enriched
false
Cvss Version
null
State
PUBLISHED

Threat ID: 682d9824c4522896dcbdf7e8

Added to database: 5/21/2025, 9:08:52 AM

Last enriched: 6/28/2025, 2:11:46 PM

Last updated: 8/6/2025, 8:40:34 AM

Views: 16

Actions

PRO

Updates to AI analysis are available only with a Pro account. Contact root@offseq.com for access.

Please log in to the Console to use AI analysis features.

Need enhanced features?

Contact root@offseq.com for Pro access with improved analysis and higher rate limits.

Latest Threats