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

CVE-2026-23433: Linux内核arm_mpam空指针解引用漏洞

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

漏洞信息

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

相关标签

Linux KernelNull Pointer DereferenceDoSARMMPAMLocal

漏洞概述

Linux内核中的arm_mpam驱动组件存在一个空指针解引用漏洞。当支持内存带宽监控的MSC(内存系统控制器)设备被下线然后重新上线时,系统调用mpam_restore_mbwu_state函数以恢复带宽计数器的配置。由于该函数在调用__ris_msmon_read时未正确初始化mbwu_arg.val指针,导致其值为NULL。随后__ris_msmon_read尝试对该指针进行加法操作,从而触发空指针解引用,引发内核崩溃。该漏洞CVSS评分为5.5,属于中危漏洞,主要影响系统可用性。

技术细节

该漏洞位于Linux内核的ARM MPAM(Memory Partitioning and Monitoring)子系统。技术原理在于驱动程序在处理MSC设备状态变更(offline -> online)时的逻辑缺陷。具体而言,mpam_restore_mbwu_state函数通过IPI(处理器间中断)调用__ris_msmon_read来读取并恢复监控状态。问题出在调用方传递的参数结构体中,val成员未被赋值。当__ris_msmon_read执行类似*val += read_value的操作时,由于val为NULL,导致内核试图向地址0写入数据,触发页错误异常。调用栈显示崩溃发生在工作队列(worker_thread)上下文中。攻击者需具备本地低权限(PR:L),可通过特定的设备操作触发该条件,导致系统拒绝服务。

攻击链分析

STEP 1
1
攻击者获取本地系统的低权限访问权限(PR:L)。
STEP 2
2
攻击者触发支持MPAM的MSC设备状态变更,例如将设备下线后再上线。
STEP 3
3
内核执行mpam_restore_mbwu_state函数以恢复设备配置。
STEP 4
4
由于代码逻辑缺陷,函数调用__ris_msmon_read时传入未初始化的空指针。
STEP 5
5
内核尝试写入空指针地址,触发Oops异常,导致系统崩溃或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Simulation for CVE-2026-23433 * This C code simulates the Null Pointer Dereference logic found in * the Linux kernel mpam_restore_mbwu_state function. * * Vulnerability Logic: * The function fails to initialize a pointer before passing it to a helper * function that attempts to write to it. */ #include <stdio.h> #include <stdlib.h> // Simulating the argument structure struct mbwu_arg { long *val; // Pointer that should be initialized but isn't }; // Simulating the __ris_msmon_read function behavior void simulated_read_func(struct mbwu_arg *arg) { printf("[Kernel] Attempting to read and update value...\n"); // The vulnerable line: dereferencing arg->val which is NULL *(arg->val) += 0x10; printf("[Kernel] Value updated.\n"); } // Simulating mpam_restore_mbwu_state void vulnerable_restore_state() { struct mbwu_arg args; // Vulnerability: args.val is not initialized (remains NULL) args.val = NULL; printf("[Vuln] Restoring MBWU state with uninitialized pointer...\n"); simulated_read_func(&args); } int main() { printf("PoC for CVE-2026-23433: Triggering Null Pointer Dereference\n"); vulnerable_restore_state(); return 0; }

影响范围

Linux Kernel (修复前版本,具体参考Git提交 4ad79c874e53 和 ac3e12bc1957)

防御指南

临时缓解措施
在无法立即升级内核的情况下,建议限制非授权用户对系统硬件管理接口的访问权限,或者在系统配置中禁用MPAM(内存分区和监控)功能以规避触发该漏洞的代码路径。

参考链接

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