CVE-2024-56593 wifi: brcmfmac: Fix oops due to NULL pointer dereference in brcmf_sdiod_sglist_rw()
A NULL pointer dereference in the brcmfmac WiFi driver can cause a kernel oops and denial of service when specific alignment settings and high packet queues occur.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2024-56593?
CVE-2024-56593 is a medium-severity vulnerability in Linux kernel, published on 27 Dec 2024. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
In the Linux kernel, the following vulnerability has been resolved:
wifi: brcmfmac: Fix oops due to NULL pointer dereference in brcmf_sdiod_sglist_rw()
This patch fixes a NULL pointer dereference bug in brcmfmac that occurs when a high 'sd_sgentry_align' value applies (e.g. 512) and a lot of queued SKBs are sent from the pkt queue.
The problem is the number of entries in the pre-allocated sgtable, it is nents = max(rxglom_size, txglom_size) + max(rxglom_size, txglom_size) >> 4 + 1. Given the default [rt]xglom_size=32 it's actually 35 which is too small. Worst case, the pkt queue can end up with 64 SKBs. This occurs when a new SKB is added for each original SKB if tailroom isn't enough to hold tail_pad. At least one sg entry is needed for each SKB. So, eventually the "skb_queue_walk loop" in brcmf_sdiod_sglist_rw may run out of sg entries. This makes sg_next return NULL and this causes the oops.
The patch sets nents to max(rxglom_size, txglom_size) * 2 to be able handle the worst-case. Btw. this requires only 64-35=29 * 16 (or 20 if CONFIG_NEED_SG_DMA_LENGTH) = 464 additional bytes of memory.
Weakness: CWE-476
Which versions are affected by CVE-2024-56593?
It affects 1 product.
Products include Linux kernel.
How do I fix CVE-2024-56593?
Apply the vendor's patch.
Is CVE-2024-56593 being exploited?
There is no known exploitation of CVE-2024-56593 in the wild and no public exploit code.
Other vulnerabilities in Linux kernel
Sources
Also known as AZL-55139, AZL-55238, BELL-CVE-2024-56593, DEBIAN-CVE-2024-56593, GHSA-9pg7-c56m-xqjx, UBUNTU-CVE-2024-56593.