CVE-2023-53602CVE-2023-53602是Linux内核中ath11k无线驱动的一个内存泄漏漏洞,存在于WMI(Wireless Module Interface)固件统计信息处理模块中。该漏洞由Qualcomm的ath11k驱动在处理固件统计数据时未能正确释放动态分配的内存所致。具体而言,当驱动从WMI事件中接收到固件统计数据时,会为pdev(物理设备)、vdev(虚拟设备)和beacon(信标)统计信息分配内存空间,但在模块卸载(rmmod)过程中,这些已分配的内存未被正确释放,导致内存泄漏问题长期累积。该漏洞已在Linux内核主线修复,修复方案是在硬件注销(hardware unregister)之前调用ath11k_fw_stats_free()函数来释放固件统计相关的内存资源,同时避免在WMI事件处理过程中错误调用释放函数(因为本地列表在拼接和重新初始化后已不包含任何元素)。该漏洞已在QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1版本上进行了测试验证。CVSS评分为5.5分,属于中危级别,主要影响系统的可用性,可能导致系统长时间运行后因内存耗尽而出现性能下降或系统不稳定等问题。
该漏洞的根本原因在于ath11k驱动的固件统计资源管理逻辑存在缺陷。在Linux内核的ath11k WiFi驱动中,当系统通过WMI接口接收来自固件的统计数据时,驱动会动态分配内存来存储pdev(物理设备统计)、vdev(虚拟设备统计)和beacon(信标统计)等信息。这些统计数据以链表形式组织管理。漏洞的核心问题在于:1)在模块卸载路径(rmmod)中,驱动执行了硬件注销操作,但未调用相应的内存释放函数ath11k_fw_stats_free(),导致之前为固件统计分配的内存无法被回收;2)在WMI事件处理回调中,驱动曾尝试调用ath11k_fw_stats_free(),但由于本地列表在list_splice_init操作后已被重新初始化为空列表,此时调用释放函数实际上不会释放任何内存,属于冗余且误导性的调用。修复方案通过在正确的时机——硬件注销之前——调用ath11k_fw_stats_free()来确保所有固件统计数据占用的内存被正确释放,同时移除了WMI事件处理中的无效释放调用。攻击者利用此漏洞需要本地低权限访问权限(PR:L),无需用户交互(UI:N),通过反复加载和卸载ath11k驱动模块可以触发内存泄漏的累积,最终可能导致内核内存耗尽,影响系统可用性(AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)。