CVE-2026-23256CVE-2026-23256是Linux kernel中net: liquidio驱动的setup_nic_devices()函数存在的一个内存泄漏漏洞。该漏洞源于cleanup循环中的一个off-by-one错误:当初始化循环失败时,代码跳转到setup_nic_dev_free标签执行清理操作,但cleanup循环使用while(i--)结构会跳过当前失败的索引i,导致部分已分配的内存在错误处理路径中未被正确释放。攻击者可通过触发初始化失败条件来利用此漏洞,造成内核内存资源持续泄漏,长期利用可能影响系统稳定性和性能。此漏洞需要本地低权限认证即可触发,无需用户交互,CVSS评分5.5,属于中等严重程度。
在liquidio驱动的setup_nic_devices()函数中,设备初始化逻辑采用循环结构逐个分配nic设备资源。当循环中某个设备初始化失败时,代码通过goto语句跳转到setup_nic_dev_free标签执行清理操作。问题在于cleanup循环的实现为while(i--),这意味着循环在i值递减后才进行判断,导致失败的索引i对应的设备内存被跳过,未能释放。具体来说:假设初始化在i=3时失败,while(i--)会依次处理i=3,2,1,0,但由于后置递减特性,实际处理的是i=3时的值3,然后递减到2处理2...这样i=3对应的设备在循环开始前就被跳过了。修复方案是将cleanup循环改为从当前索引i递减到0,确保包括失败设备在内的所有已分配资源都被正确释放。此漏洞仅需本地低权限即可触发,可通过反复触发初始化失败条件来耗尽系统内存。