CVE-2021-47065·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: rtw88: Fix array overrun in rtw_get_tx_power_params() Using a kernel with the Undefined Behaviour Sanity Checker (UBSAN) enabled, the following array overrun is logged: ================================================================================ UBSAN: array-index-out-of-bounds in /home/finger/wireless-drivers-next/drivers/net/wireless/realtek/rtw88/phy.c:1789:34 index 5 is out of range for type 'u8 [5]' CPU: 2 PID: 84 Comm: kworker/u16:3 Tainted: G O 5.12.0-rc5-00086-gd88bba47038e-dirty #651 Hardware name: TOSHIBA TECRA A50-A/TECRA A50-A, BIOS Version 4.50 09/29/2014 Workqueue: phy0 ieee80211_scan_work [mac80211] Call Trace: dump_stack+0x64/0x7c ubsan_epilogue+0x5/0x40 __ubsan_handle_out_of_bounds.cold+0x43/0x48 rtw_get_tx_power_params+0x83a/drivers/net/wireless/realtek/rtw88/0xad0 [rtw_core] ? rtw_pci_read16+0x20/0x20 [rtw_pci] ? check_hw_ready+0x50/0x90 [rtw_core] rtw_phy_get_tx_power_index+0x4d/0xd0 [rtw_core] rtw_phy_set_tx_power_level+0xee/0x1b0 [rtw_core] rtw_set_channel+0xab/0x110 [rtw_core] rtw_ops_config+0x87/0xc0 [rtw_core] ieee80211_hw_config+0x9d/0x130 [mac80211] ieee80211_scan_state_set_channel+0x81/0x170 [mac80211] ieee80211_scan_work+0x19f/0x2a0 [mac80211] process_one_work+0x1dd/0x3a0 worker_thread+0x49/0x330 ? rescuer_thread+0x3a0/0x3a0 kthread+0x134/0x150 ? kthread_create_worker_on_cpu+0x70/0x70 ret_from_fork+0x22/0x30 ================================================================================ The statement where an array is being overrun is shown in the following snippet: if (rate <= DESC_RATE11M) tx_power = pwr_idx_2g->cck_base[group]; else ====> tx_power = pwr_idx_2g->bw40_base[group]; The associated arrays are defined in main.h as follows: struct rtw_2g_txpwr_idx { u8 cck_base[6]; u8 bw40_base[5]; struct rtw_2g_1s_pwr_idx_diff ht_1s_diff; struct rtw_2g_ns_pwr_idx_diff ht_2s_diff; struct rtw_2g_ns_pwr_idx_diff ht_3s_diff; struct rtw_2g_ns_pwr_idx_diff ht_4s_diff; }; The problem arises because the value of group is 5 for channel 14. The trivial increase in the dimension of bw40_base fails as this struct must match the layout of efuse. The fix is to add the rate as an argument to rtw_get_channel_group() and set the group for channel 14 to 4 if rate <= DESC_RATE11M. This patch fixes commit fa6dfe6bff24 ("rtw88: resolve order of tx power setting routines")
- Severity
- high
- Software
- Kernel
- Fixed in
- 5.12.4
- Published
- 2024-02-29
Affected versions
From: 5.12
Until: 5.12.4
Fixed in: 5.12.4
How to fix this CVE
Update your Linux kernel to version 5.12.4 or later to resolve an array bounds checking vulnerability in the rtw88 wireless driver's transmit power configuration function. This vulnerability could allow a local privileged user to trigger memory corruption. Apply the kernel update immediately and reboot your system to complete the remediation.
sudo dnf update kernel kernel-develDefensia detects this vulnerability
How to check if you are affected
- Step 1: Check your current kernel version with `uname -r` and verify if it falls within 5.12.0 to 5.12.3
- Step 2: Confirm the rtw88 wireless driver is loaded by running `lsmod | grep rtw88`
- Step 3: Search kernel logs for array boundary warnings with `dmesg | grep -i 'ubsan\|array-index'` or `journalctl -b | grep -i 'ubsan\|array-index'`
- Step 4: After patching, verify the new kernel version with `uname -r` to ensure it is 5.12.4 or later
FAQ
What is CVE-2021-47065?
This is an array bounds overflow vulnerability in the Linux kernel's rtw88 Realtek wireless driver. When processing transmit power parameters for channel 14, the driver incorrectly accesses an array element beyond its defined bounds, potentially causing memory corruption or system instability.
Is CVE-2021-47065 being actively exploited?
No, this vulnerability is not listed as actively exploited. However, it requires local access with elevated privileges to trigger, making real-world exploitation less likely but not impossible.
What versions of Kernel are affected by CVE-2021-47065?
Linux kernel versions 5.12.0 through 5.12.3 are affected. The vulnerability was introduced in commit fa6dfe6bff24 and resolved in version 5.12.4.
How do I check if my server is vulnerable to CVE-2021-47065?
Run `uname -r` to check your kernel version. If it shows a version between 5.12.0 and 5.12.3 inclusive, and `lsmod | grep rtw88` returns output, your system is vulnerable.
Does Defensia detect CVE-2021-47065?
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-47065 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/2ff25985ea9ccc6c9af2c77b0b49045adcc62e0e
- https://git.kernel.org/stable/c/5f3dbced8eaa5c9ed7d6943f3fea99f235a6516a
- https://git.kernel.org/stable/c/6b5aa0cf321c25f41e09a61c83ee4dc7ab9549cb
- https://git.kernel.org/stable/c/95fb153c6027924cda3422120169d1890737f3a0
- https://git.kernel.org/stable/c/9cd09722e18a08b6a3d68b8bccfac39ddc22434c
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2021-47065. Free for 1 server.
Get started free