CVE-2025-39957CVE-2025-39957是Linux内核mac80211无线子系统中的一个高危安全漏洞,主要影响WiFi扫描功能的缓冲区长度验证机制。该漏洞源于S1G(Sub-1 GHz)能力元素(capability element)在计算scan_ies_len(扫描信息元素长度)时未被正确纳入考量,导致缓冲区长度计算不准确。当系统尝试进行硬件扫描(hw_scan)时,会触发ieee80211_prep_hw_scan()函数中的缓冲区长度验证失败,并进一步在__ieee80211_start_scan()函数中触发WARN警告。S1G是IEEE 802.11ah标准中定义的用于Sub-1 GHz频段通信的技术,主要面向物联网和远距离WiFi应用场景。该漏洞的CVSS评分为7.8,属于高危级别,攻击者只需具备本地低权限即可利用,无需用户交互,且对系统的机密性、完整性和可用性均能造成高影响。成功利用此漏洞可能导致硬件扫描功能完全失效,进而影响无线网络连接能力,造成拒绝服务攻击效果。该漏洞已在2025年10月9日被披露,并提供了多个稳定版本的内核补丁进行修复。
从技术层面分析,该漏洞的核心问题在于mac80211驱动的扫描信息元素(Scan IEs)长度计算逻辑存在缺陷。在Linux内核的mac80211模块中,当系统执行WiFi扫描操作时,需要预先计算扫描请求中携带的额外信息元素(Information Elements)的总长度,即scan_ies_len。该长度值用于在ieee80211_prep_hw_scan()函数中进行缓冲区分配和长度验证。具体而言,S1G能力元素是IEEE 802.11ah标准定义的一个特定信息元素,用于标识设备对Sub-1 GHz频段通信能力的支持。当前的内核代码在计算scan_ies_len时,没有将S1G能力元素的长度纳入计算,导致分配或验证的缓冲区长度小于实际所需。当ieee80211_prep_hw_scan()执行长度验证时,会检测到缓冲区不足,进而触发验证失败并返回错误。随后在__ieee80211_start_scan()函数中,由于扫描启动失败,内核会发出WARN警告,表明扫描过程出现了异常。这一缺陷使得硬件扫描功能完全无法正常工作。攻击者作为本地低权限用户,可以通过触发S1G相关的扫描操作来利用此漏洞,导致系统无线功能异常。由于该漏洞涉及内核态代码,成功利用可能导致内核状态异常、系统不稳定甚至拒绝服务,对系统的机密性、完整性和可用性均构成威胁。