CVE-2023-53611CVE-2023-53611是Linux内核ipmi_si(Intelligent Platform Management Interface System Interface)驱动模块中的一个内存泄漏漏洞。该漏洞位于`try_smi_init()`函数中,当在分配`new_smi->si_sm`之后但在注册`shutdown_smi()`处理器之前发生错误时,已分配的内存将不会被正确释放。Kmemleak工具检测到了这一泄漏问题,显示在modprobe加载ipmi_si模块时存在1024字节的未引用内存对象。该漏洞影响系统的可用性,虽然不会直接导致数据泄露或权限提升,但长期运行可能导致系统内存耗尽,影响系统稳定性。此漏洞已在Linux内核的多个稳定版本中得到修复,通过在错误处理路径中添加`kfree()`调用来解决内存泄漏问题。
该漏洞的技术原理如下:在`try_smi_init()`函数中,系统首先通过`kmalloc()`分配`new_smi->si_sm`结构(大小为1024字节)。然而,在分配完成之后到`shutdown_smi()`注册之前的这段代码路径中,如果发生任何错误(例如硬件检测失败、配置错误等),原有的错误处理代码会跳过对新分配内存的释放,因为此时`shutdown_smi()`回调函数尚未注册到系统中,而该回调函数是正常清理路径中负责释放`si_sm`资源的唯一途径。
利用方式方面,攻击者需要具备本地低权限访问能力(PR:L),可以通过以下方式触发该漏洞:
1. 加载ipmi_si内核模块(通过modprobe ipmi_si命令)
2. 制造特定条件使得模块初始化过程中在关键路径上失败
3. 反复触发该错误路径,导致每次泄漏1024字节的内存
4. 持续累积内存泄漏,最终可能导致系统内存耗尽(OOM)或系统不稳定
该漏洞的CVSS向量为CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H,表明这是一个本地攻击、低复杂度、低权限要求、无需用户交互的漏洞,主要影响系统的可用性。