CVE-2023-53574CVE-2023-53574是Linux内核中rtw88无线网卡驱动的一个安全漏洞。该漏洞位于驱动卸载流程中,具体涉及rtw_core_deinit()函数。在驱动卸载时,如果没有正确删除TX purge定时器(TX purge timer)并释放C2H命令队列(C2H queue),可能导致系统崩溃(kernel panic)和内存泄漏问题。该漏洞的CVSS评分为5.5,属于中危级别,攻击向量为本地(AV:L),需要低权限(PR:L),无需用户交互(UI:N)。漏洞的可用性影响为高(A:H),但对机密性(C:N)和完整性(I:N)无影响。此漏洞主要影响使用Realtek WiFi芯片(rtw88系列驱动支持)的Linux系统,在驱动模块卸载或系统关机时可能触发。修复方案是在rtw_core_deinit()函数中增加对TX purge定时器的删除操作以及对C2H队列的释放操作,同时将COEX队列的释放移出TX report锁的作用域以缩小临界区范围。该漏洞已在Linux内核主线中通过commit 4128b00a6006870e117ab1841e58f369e9284ecb和634fcbcaa4062db39aeb5ac6ed1bc1feb8dd5216进行修复。
该漏洞的技术根源在于rtw88驱动的资源管理不当。rtw88是Linux内核中用于支持Realtek系列WiFi芯片的驱动程序。在驱动的初始化和反初始化流程中,需要正确管理各种内核资源,包括定时器、skb队列等。
具体而言,在rtw_core_deinit()函数(原反初始化路径)中存在以下问题:
1. TX purge定时器未被删除:驱动运行时使用一个定时器来定期清理TX队列中的过期数据包(TX purge)。在驱动卸载时,如果该定时器未被删除(del_timer_sync),定时器可能在驱动内存释放后仍然触发,访问已释放的内存导致内核崩溃。
2. C2H队列未释放:C2H(Command to Host)是WiFi芯片向主机发送命令的通道,驱动使用skb队列缓存这些命令。卸载驱动时未释放该队列中的skb会导致内存泄漏。
3. 临界区过大:COEX(共存)队列的释放操作原本在TX report锁的作用域内执行,这会不必要地延长锁的持有时间,可能导致性能问题或死锁。
利用方式:本地攻击者(如拥有低权限用户账户)可以通过加载和卸载rtw88驱动模块(例如通过modprobe/rmmod命令或系统重启时驱动清理流程)来触发该漏洞,导致系统崩溃(kernel panic)或内存资源耗尽。由于该漏洞需要本地权限且影响仅限于可用性,实际利用价值有限,但在大规模自动化部署或容器环境中可能导致拒绝服务。