IPBUF安全漏洞报告
English
CVE-2026-31646 CVSS 5.5 中危

Linux Kernel lan966x驱动拒绝服务漏洞

披露日期: 2026-04-24
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-31646
漏洞类型
拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel拒绝服务空指针解引用lan966x本地漏洞

漏洞概述

Linux内核的lan966x网络驱动中存在空指针解引用漏洞。在lan966x_fdma_rx_alloc_page_pool函数中,未对page_pool_create的返回值进行错误检查。当该函数失败返回错误指针时,后续代码直接使用该指针并将其传递给xdp_rxq_info_reg_mem_model,导致内核解引用无效指针并崩溃。本地低权限攻击者可利用此漏洞造成系统拒绝服务。

技术细节

该漏洞位于Linux内核的net: lan966x驱动模块中。在函数lan966x_fdma_rx_alloc_page_pool()里,page_pool_create()用于创建页面池。如果分配失败(例如内存不足),该函数返回ERR_PTR错误指针。然而,原始代码未执行IS_ERR检查,直接将该指针用于后续循环和函数调用中。具体来说,该指针被传递给xdp_rxq_info_reg_mem_model(),进而调用page_pool_use_xdp_mem()。由于这些函数会对指针进行解引用操作,处理错误指针会导致内核空指针异常,引发系统崩溃。

攻击链分析

STEP 1
1
攻击者获得本地访问权限(低权限账号)。
STEP 2
2
攻击者触发系统资源压力或特定硬件操作,导致page_pool_create分配失败。
STEP 3
3
lan966x驱动程序接收到错误指针,但未进行校验。
STEP 4
4
驱动程序调用后续函数解引用该无效指针。
STEP 5
5
触发内核空指针解引用异常,导致系统崩溃(拒绝服务)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept: Demonstrating the missing error check leading to Kernel Oops. * This is a simplified representation of the vulnerable logic. */ struct page_pool *page_pool_create(...); void xdp_rxq_info_reg_mem_model(...); void vulnerable_function() { // Step 1: Call page_pool_create which might fail and return an error pointer struct page_pool *pool = page_pool_create(...); // VULNERABILITY: Missing IS_ERR(pool) check here. // If page_pool_create failed, 'pool' is an error pointer (e.g., -12). // Step 2: Unconditionally pass the pointer to XDP memory model registration // This function dereferences 'pool', causing a crash if it is invalid. xdp_rxq_info_reg_mem_model(..., pool); }

影响范围

Linux Kernel (带有lan966x驱动,修复补丁前)

防御指南

临时缓解措施
限制本地用户权限,监控系统内存使用情况。如果不需要使用lan966x网卡驱动,可在内核编译时禁用该模块以降低风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表