CVE-2022-50533CVE-2022-50533是Linux内核mac80211无线子系统中mlme(媒体访问控制子层管理实体)模块的一个空指针解引用漏洞。该漏洞位于WiFi关联(association)处理流程中,当客户端尝试关联到一个没有link 0的多链路设备(MLD)接入点(AP)且关联失败时,内核会发生空指针解引用导致系统崩溃。
具体而言,在关联失败的处理路径中,内核会清除`sdata->vif.valid_links`标志位,但同时假设`ap_mld_addr`或link 0的BSS结构体仍然有效。由于在清除`valid_links`之后并未将`ap_mld_addr`正确赋值到相关结构体中,导致后续的tracing追踪代码访问无效的内存地址,触发空指针解引用错误。
该漏洞的CVSS 3.1评分为5.5分,属于中危级别。虽然需要本地权限(PR:L)才能触发,但由于可用性影响为高(A:H),攻击者可以利用该漏洞造成系统拒绝服务(内核崩溃/panic)。该漏洞影响使用mac80211框架的Linux内核版本,特别是在支持WiFi 6E/7多链路操作(MLO)的环境中更为突出。
该漏洞的根本原因在于mac80211 MLME模块在处理关联失败时的状态清理逻辑存在缺陷。
**漏洞原理:**
在Linux内核的mac80211驱动框架中,当无线客户端尝试与一个多链路设备(MLD)接入点建立关联时,系统需要管理多个链路(link)的状态。当关联到没有link 0的AP且关联失败时,原有代码会执行以下操作:
1. 清除`sdata->vif.valid_links`标志位
2. 清除`sdata->vif.cfg.ap_addr`
3. 但后续的tracing代码仍假设`ap_mld_addr`或link 0的BSS结构体有效
由于在清除`valid_links`之前未保留`ap_mld_addr`的本地副本,导致tracing代码访问已释放或未初始化的内存区域,触发空指针解引用。
**利用方式:**
攻击者需要本地权限(普通用户即可),通过以下步骤触发:
1. 配置支持mac80211的无线网卡
2. 扫描并尝试连接到一个配置为多链路设备(MLD)但缺少link 0的恶意或特殊配置AP
3. 强制使关联过程失败(例如通过信号干扰或AP端拒绝关联)
4. 内核在处理关联失败的tracing路径时触发空指针解引用
5. 导致内核panic,系统拒绝服务
**修复方案:**
修复补丁保留了`ap_addr`的本地副本,并在清除`valid_links`之前将其赋值给相关结构体,确保tracing代码可以安全访问。