CVE-2023-53561CVE-2023-53561是Linux内核中net/wwan/iosm(Intel WWAN网络驱动)模块存在的一个空指针解引用漏洞。该漏洞发生在驱动初始化失败后的设备移除流程中。在驱动初始化阶段,如果ipc_imem_wwan_channel_init()函数无法获取有效的设备能力(device capabilities),将返回错误且不会分配wwan结构体资源。然而,当驱动移除流程被触发时,ipc_wwan_deinit()函数会对未分配的wwan结构体进行解引用操作,从而导致空指针异常。此外,在挂起(suspend)和恢复(resume)循环中,设备的移除和重新扫描也可能触发该空指针解引用问题。该漏洞的CVSS评分为5.5,属于中危级别,需要本地低权限访问即可触发,虽然不影响机密性和完整性,但可能导致系统可用性受到严重影响(内核崩溃或系统宕机)。该漏洞影响多个Linux内核稳定版本,修复补丁已合并到主线内核中。
该漏洞的技术原理如下:在iosm驱动初始化过程中,ipc_imem_wwan_channel_init()函数负责初始化WWAN通道并获取设备能力。如果该函数执行失败(例如设备能力验证不通过),它将返回错误码,驱动加载流程中止,且wwan结构体资源未被分配。然而,驱动注册的移除(remove)回调函数ipc_wwan_deinit()并未检查wwan结构体是否成功分配,直接对其进行解引用和释放操作,导致空指针解引用。
漏洞触发场景包括:1)驱动初始化失败后立即执行设备移除操作;2)系统在挂起恢复过程中,设备的移除和重新扫描流程被触发;3)ipc_imem_run_state_worker()工作线程未正确处理被调用函数的返回值,导致资源释放逻辑缺失。
利用方式:攻击者需要本地低权限访问权限,通过触发特定的设备热插拔事件或挂起恢复循环,使驱动进入初始化失败状态后执行移除流程,即可触发空指针解引用,导致内核崩溃(kernel panic)。虽然该漏洞本身不直接导致权限提升,但可被用于本地拒绝服务攻击(DoS),影响系统可用性。
修复方案:在ipc_imem_run_state_worker()中正确处理被调用函数的返回值,在失败情况下释放已分配的资源,并在失败时上报link down事件,使用户空间应用程序能够通过该事件执行设备重置以恢复通信。