CVE-2023-53589CVE-2023-53589是Linux内核中iwlwifi(Intel无线网卡)mvm模块存在的一个安全漏洞。该漏洞源于驱动在处理固件发送的MCC(多国频道控制)响应时,未对固件提供的n_channels字段进行严格的长度校验。当固件发送一个被损坏的MCC响应,其中n_channels值远大于命令响应所能容纳的大小时,内核驱动可能会复制远超实际缓冲区大小的未初始化内存,甚至可能导致系统崩溃(当n_channels值足够大时,可能耗尽固件响应所分配的单页内存)。
该漏洞的攻击向量为本地攻击(AV:L),攻击者需要具备低权限(PR:L),无需用户交互(UI:N)。虽然机密性影响为低(C:L),完整性无影响(I:N),但可用性影响为高(A:H),表明该漏洞主要威胁系统的稳定性和可用性。CVSS 3.1评分为5.5,属于中危级别。
该漏洞由Linux内核社区发现并修复,修复方案通过严格检查n_channels的长度来防止越界内存访问。多个稳定内核分支已发布相应补丁,包括05ad5a4d421c、557ba100d8cf、682b6dc29d98、c176f0335095和d0d39bed9e95等提交。该漏洞影响所有使用受影响版本Linux内核且配备Intel无线网卡的系统。
该漏洞的技术原理在于iwlwifi驱动中处理固件MCC响应的代码路径。当无线网卡固件向主机发送MCC(Multi-Country Code)响应时,会包含一个n_channels字段,表示频道数量。驱动程序在处理该响应时,会根据n_channels的值来分配和复制内存数据。
问题出在驱动直接信任了固件提供的n_channels值,没有进行充分的长度验证。如果固件(无论是由于固件bug还是恶意篡改)发送了一个n_channels值远大于实际命令响应缓冲区大小的响应,驱动会尝试复制远超实际分配内存的数据,导致两种后果:
1. **越界内存读取**:复制大量未初始化的内存,可能泄露内核堆中的敏感数据。
2. **系统崩溃(DoS)**:当n_channels值足够大时,复制操作可能耗尽固件响应所分配的单页内存边界,导致内核崩溃。
修复方案采用了严格的相等比较(而非仅做小于比较)来验证n_channels值,确保固件提供的频道数量与命令响应结构中实际定义的频道数量完全匹配。这种严格检查确保了即使固件出现异常行为,内核也不会处理不合法的大尺寸数据。