CVE-2025-71086CVE-2025-71086是Linux kernel中ROSE协议实现的一个高危安全漏洞。该漏洞存在于rose_kill_by_device()函数中,由于循环迭代时错误地使用array[cnt]作为索引而非正确的array[i],导致在遍历socket数组时访问了未初始化或越界的数组元素。当设备被关闭时,该函数需要遍历并断开绑定到该设备的所有socket,但由于索引错误,会读取错误的socket指针,可能引发无效指针解引用和内存泄漏。此漏洞CVSS评分7.8,属于本地可利用的高危漏洞,攻击者可通过低权限账户在本地触发该漏洞,成功利用可导致系统崩溃(拒绝服务)或在特定条件下实现代码执行。
漏洞位于net/rose/af_rose.c文件的rose_kill_by_device()函数中。该函数的设计逻辑是:首先将需要处理的socket收集到一个本地数组array[]中,然后遍历这个数组来断开与正在关闭设备的连接。问题出在循环代码中使用了错误的索引变量:代码应该使用循环变量i来访问array[i],但实际使用了递增计数器cnt来访问array[cnt]。当cnt < ARRAY_SIZE(array)时,会读取未初始化的数组元素;当cnt == ARRAY_SIZE(array)时,会发生数组越界读取。这两种情况都会导致:1) 获取到无效的socket指针并进行解引用操作;2) 通过sock_hold()获取的引用计数无法正确释放,造成内存泄漏。攻击者需要具有本地访问权限,通过控制网络设备操作或触发ROSE协议栈的设备关闭流程来触发该漏洞。修复方案是将array[cnt]改为array[i],确保正确访问已收集的socket数组元素。