CVE-2021-47589·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: igbvf: fix double free in `igbvf_probe` In `igbvf_probe`, if register_netdev() fails, the program will go to label err_hw_init, and then to label err_ioremap. In free_netdev() which is just below label err_ioremap, there is `list_for_each_entry_safe` and `netif_napi_del` which aims to delete all entries in `dev->napi_list`. The program has added an entry `adapter->rx_ring->napi` which is added by `netif_napi_add` in igbvf_alloc_queues(). However, adapter->rx_ring has been freed below label err_hw_init. So this a UAF. In terms of how to patch the problem, we can refer to igbvf_remove() and delete the entry before `adapter->rx_ring`. The KASAN logs are as follows: [ 35.126075] BUG: KASAN: use-after-free in free_netdev+0x1fd/0x450 [ 35.127170] Read of size 8 at addr ffff88810126d990 by task modprobe/366 [ 35.128360] [ 35.128643] CPU: 1 PID: 366 Comm: modprobe Not tainted 5.15.0-rc2+ #14 [ 35.129789] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014 [ 35.131749] Call Trace: [ 35.132199] dump_stack_lvl+0x59/0x7b [ 35.132865] print_address_description+0x7c/0x3b0 [ 35.133707] ? free_netdev+0x1fd/0x450 [ 35.134378] __kasan_report+0x160/0x1c0 [ 35.135063] ? free_netdev+0x1fd/0x450 [ 35.135738] kasan_report+0x4b/0x70 [ 35.136367] free_netdev+0x1fd/0x450 [ 35.137006] igbvf_probe+0x121d/0x1a10 [igbvf] [ 35.137808] ? igbvf_vlan_rx_add_vid+0x100/0x100 [igbvf] [ 35.138751] local_pci_probe+0x13c/0x1f0 [ 35.139461] pci_device_probe+0x37e/0x6c0 [ 35.165526] [ 35.165806] Allocated by task 366: [ 35.166414] ____kasan_kmalloc+0xc4/0xf0 [ 35.167117] foo_kmem_cache_alloc_trace+0x3c/0x50 [igbvf] [ 35.168078] igbvf_probe+0x9c5/0x1a10 [igbvf] [ 35.168866] local_pci_probe+0x13c/0x1f0 [ 35.169565] pci_device_probe+0x37e/0x6c0 [ 35.179713] [ 35.179993] Freed by task 366: [ 35.180539] kasan_set_track+0x4c/0x80 [ 35.181211] kasan_set_free_info+0x1f/0x40 [ 35.181942] ____kasan_slab_free+0x103/0x140 [ 35.182703] kfree+0xe3/0x250 [ 35.183239] igbvf_probe+0x1173/0x1a10 [igbvf] [ 35.184040] local_pci_probe+0x13c/0x1f0
- Severity
- high
- Software
- Kernel
- Fixed in
- 5.15.11
- Published
How likely is exploitation
FIRST's Exploit Prediction Scoring System puts the probability of this CVE being exploited in the next 30 days at 0.26% — higher than 17% of all published CVEs. EPSS is an independent forecast of exploitation, not a severity rating: it says nothing about how much damage a successful attack does, which is what a CVSS score measures.
Read the two together. CVE-2021-47589 scores 7.8 on CVSS, so a successful attack would be serious — but at 0.26%, almost nobody is currently attempting it. That is a different situation from a flaw under mass exploitation, and it is usually the difference between patching on your next maintenance window and patching tonight.
Affected versions
From: 5.11
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 patch a use-after-free vulnerability in the igbvf network driver that can be triggered during driver initialization failure scenarios. This vulnerability allows a local privileged attacker to cause a denial of service or potentially execute arbitrary code with kernel privileges. Apply the kernel update immediately using your distribution's package manager.
sudo dnf check-update kernel && sudo dnf update kernelDefensia detects this vulnerability
How to check if you are affected
- Check your current kernel version: uname -r — compare against 5.15.11; if lower, the system is vulnerable
- Verify igbvf driver is loaded: lsmod | grep igbvf — if present, the vulnerable code path is available
- Monitor system logs for igbvf probe failures: sudo journalctl -u kernel | grep -i 'igbvf\|register_netdev' — look for device registration errors during driver initialization
- After patching, reboot and confirm new kernel version: uname -r — should show 5.15.11 or higher
FAQ
What is CVE-2021-47589?
This vulnerability is a use-after-free condition in the Intel igbvf Ethernet driver's probe function that occurs when network device registration fails, causing the driver to access freed memory during cleanup and potentially enabling code execution or denial of service.
Is CVE-2021-47589 being actively exploited?
No, there is no evidence of active exploitation or public exploits available. However, the high CVSS score (7.8) and local privilege requirement make this a significant risk for systems running affected kernel versions.
What versions of Kernel are affected by CVE-2021-47589?
Linux kernel versions from 5.11 through 5.15.10 are affected. The vulnerability is resolved in kernel 5.15.11 and later.
How do I check if my server is vulnerable to CVE-2021-47589?
Run `uname -r` and compare your kernel version against 5.15.11. If your version is between 5.11 and 5.15.10, and the igbvf driver is in use (`lsmod | grep igbvf`), your system is vulnerable.
Does Defensia detect CVE-2021-47589?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If the Linux kernel is installed on a monitored server, CVE-2021-47589 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/74a16e062b23332d8db017ff4a41e16279c44411
- https://git.kernel.org/stable/c/79d9b092035dcdbe636b70433149df9cc6db1e49
- https://git.kernel.org/stable/c/8addba6cab94ce01686ea2e80ed1530f9dc33a9a
- https://git.kernel.org/stable/c/8d0c927a9fb2b4065230936b77b54f857a3754fc
- https://git.kernel.org/stable/c/944b8be08131f5faf2cd2440aa1c24a39a163a54
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2021-47589. Free for 1 server.
Get started free