CVE-2023-53554CVE-2023-53554是Linux内核staging目录中ks7010无线网卡驱动存在的一个缓冲区溢出漏洞。该漏洞位于ks_wlan_set_encode_ext()函数中,由于该函数未对用户传入的密钥长度参数(exc->key_len)进行充分验证,可能导致内存损坏问题。ks7010是Linux内核staging阶段的一个驱动程序,用于支持基于Kawasaki Microelectronics KS7010芯片的无线网卡设备。该漏洞允许具有本地低权限的用户通过精心构造的ioctl调用,向内核驱动传入超过IW_ENCODING_TOKEN_MAX(64字节)限制的密钥长度值。由于该值是u16类型(最大65535),攻击者可以利用此缺陷触发缓冲区溢出,进而可能导致内核崩溃、权限提升或任意代码执行。根据CVSS 3.1评分标准,该漏洞评分为7.8分,属于高危级别,攻击向量为本地(AV:L),攻击复杂度低(AC:L),所需权限为低权限(PR:L),无需用户交互(UI:N),对机密性、完整性和可用性均产生高影响(C:H/I:H/A:H)。该漏洞已于2025年10月4日公开披露,并已通过多个内核补丁进行修复,涉及多个稳定版本内核。
该漏洞的技术根源在于ks7010驱动的ks_wlan_set_encode_ext()函数中缺少对密钥长度的边界检查。具体而言,函数接收来自用户空间的无线扩展(Wireless Extensions)参数,其中exc->key_len字段为u16类型,取值范围为0-65535。然而,IW_ENCODING_TOKEN_MAX宏定义的密钥最大长度为64字节。当用户通过ioctl系统调用(如SIOCSIWENCODEEXT)设置WEP/WPA加密密钥时,如果传入的key_len值超过64但小于65535,内核驱动会将该超长数据写入预先分配的固定大小缓冲区中,从而引发基于栈或堆的缓冲区溢出。
利用方式方面,攻击者首先需要具备本地系统的低权限访问权限(PR:L),然后通过编写利用程序调用相关ioctl,传入特制的密钥长度和数据。由于漏洞位于内核空间,成功利用后可以导致多种后果:1)内核panic导致系统拒绝服务;2)通过覆盖内核数据结构实现权限提升至root;3)在某些情况下执行任意内核代码。攻击无需用户交互(UI:N),攻击复杂度低(AC:L),因为不需要复杂的绕过机制。修复方案是在函数入口处添加对key_len的边界检查,确保其不超过IW_ENCODING_TOKEN_MAX的值。