CVE-2023-53232
HIGHCVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
Lifecycle Timeline
3Description
In the Linux kernel, the following vulnerability has been resolved: mt76: mt7921: fix kernel panic by accessing unallocated eeprom.data The MT7921 driver no longer uses eeprom.data, but the relevant code has not been removed completely since commit 16d98b548365 ("mt76: mt7921: rely on mcu_get_nic_capability"). This could result in potential invalid memory access. To fix the kernel panic issue in mt7921, it is necessary to avoid accessing unallocated eeprom.data which can lead to invalid memory access. Furthermore, it is possible to entirely eliminate the mt7921_mcu_parse_eeprom function and solely depend on mt7921_mcu_parse_response to divide the RxD header. [2.702735] BUG: kernel NULL pointer dereference, address: 0000000000000550 [2.702740] #PF: supervisor write access in kernel mode [2.702741] #PF: error_code(0x0002) - not-present page [2.702743] PGD 0 P4D 0 [2.702747] Oops: 0002 [#1] PREEMPT SMP NOPTI [2.702755] RIP: 0010:mt7921_mcu_parse_response+0x147/0x170 [mt7921_common] [2.702758] RSP: 0018:ffffae7c00fef828 EFLAGS: 00010286 [2.702760] RAX: ffffa367f57be024 RBX: ffffa367cc7bf500 RCX: 0000000000000000 [2.702762] RDX: 0000000000000550 RSI: 0000000000000000 RDI: ffffa367cc7bf500 [2.702763] RBP: ffffae7c00fef840 R08: ffffa367cb167000 R09: 0000000000000005 [2.702764] R10: 0000000000000000 R11: ffffffffc04702e4 R12: ffffa367e8329f40 [2.702766] R13: 0000000000000000 R14: 0000000000000001 R15: ffffa367e8329f40 [2.702768] FS: 000079ee6cf20c40(0000) GS:ffffa36b2f940000(0000) knlGS:0000000000000000 [2.702769] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [2.702775] CR2: 0000000000000550 CR3: 00000001233c6004 CR4: 0000000000770ee0 [2.702776] PKRU: 55555554 [2.702777] Call Trace: [2.702782] mt76_mcu_skb_send_and_get_msg+0xc3/0x11e [mt76 <HASH:1bc4 5>] [2.702785] mt7921_run_firmware+0x241/0x853 [mt7921_common <HASH:6a2f 6>] [2.702789] mt7921e_mcu_init+0x2b/0x56 [mt7921e <HASH:d290 7>] [2.702792] mt7921_register_device+0x2eb/0x5a5 [mt7921_common <HASH:6a2f 6>] [2.702795] ? mt7921_irq_tasklet+0x1d4/0x1d4 [mt7921e <HASH:d290 7>] [2.702797] mt7921_pci_probe+0x2d6/0x319 [mt7921e <HASH:d290 7>] [2.702799] pci_device_probe+0x9f/0x12a
Analysis
A null pointer dereference vulnerability exists in the Linux kernel's MT7921 wireless driver where the driver attempts to access unallocated eeprom.data memory during firmware initialization, resulting in a kernel panic and system crash. This affects Linux kernel versions running the mt7921 wireless driver for MediaTek MT7921 WiFi chipsets. An attacker with local access and low privileges can trigger a denial of service condition causing system instability, though the EPSS score of 0.01% (1st percentile) indicates this vulnerability is not actively exploited in the wild and no public proof-of-concept is widely circulated.
Technical Context
This vulnerability affects the Linux kernel's mt76 wireless driver framework, specifically the MT7921 driver for MediaTek WiFi chipsets (cpe:2.3:o:linux:linux_kernel). The root cause is improper memory management where the driver references eeprom.data that was deallocated after commit 16d98b548365 refactored the code to use mcu_get_nic_capability instead. The mt7921_mcu_parse_response function at offset 0x147 attempts to write to address 0x0000000000000550 (a null pointer offset), triggering a kernel NULL pointer dereference during firmware initialization via the mt7921_run_firmware function call chain. This represents a classic use-after-free or dangling pointer issue where code paths were not fully updated after architectural changes to remove eeprom.data usage.
Affected Products
The Linux kernel is affected across multiple version ranges where the MT7921 wireless driver is present (cpe:2.3:o:linux:linux_kernel). Specifically, versions between the introduction of commit 16d98b548365 and the patched releases are vulnerable. Based on the patch commit references, the vulnerability affects kernel versions in the 6.1, 6.5, and 6.6 stable branches. Patches have been backported to stable kernel versions 6.1.x, 6.5.x, and 6.6.x series as evidenced by commits at https://git.kernel.org/stable/c/11181b6c8641cd417935b76ea997d0169f2db262, https://git.kernel.org/stable/c/12db28c3ef31f719bd18fa186a40bb152e6a527c, https://git.kernel.org/stable/c/c8ba6780c65f681d217de79e17d63d5d538a239f, and https://git.kernel.org/stable/c/ec4d97e8eddcfa9f63f2f62adec5fb4f941ba2ef. Systems with MediaTek MT7921 WiFi chipsets are specifically impacted.
Remediation
Upgrade the Linux kernel to a patched version containing the fix commits: kernel version 6.1.69 or later (commit 11181b6c8641), 6.5.13 or later (commit 12db28c3ef31), 6.6.3 or later (commit c8ba6780c65f), or mainline 6.7-rc1 or later (commit ec4d97e8eddc). Patches are available at https://git.kernel.org/stable/c/11181b6c8641cd417935b76ea997d0169f2db262, https://git.kernel.org/stable/c/12db28c3ef31f719bd18fa186a40bb152e6a527c, https://git.kernel.org/stable/c/c8ba6780c65f681d217de79e17d63d5d538a239f, and https://git.kernel.org/stable/c/ec4d97e8eddcfa9f63f2f62adec5fb4f941ba2ef. The fix removes the obsolete mt7921_mcu_parse_eeprom function and relies solely on mt7921_mcu_parse_response for parsing RxD headers without accessing the deallocated eeprom.data structure. If immediate patching is not feasible, consider temporarily disabling the mt7921e kernel module or avoiding systems with MT7921 chipsets in critical environments until patches can be applied.
Priority Score
Vendor Status
Share
External POC / Exploit Code
Leaving vuln.today