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

CVE-2026-43313 Linux内核ACPI空指针解引用漏洞

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

漏洞信息

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

相关标签

Linux KernelNull Pointer DereferenceDoSACPI本地漏洞

漏洞概述

Linux内核的ACPI处理器驱动模块中存在一个空指针解引用漏洞。该漏洞源于函数`acpi_processor_errata_piix4`在处理设备指针时的逻辑错误。当特定硬件配置下(存在IDE设备但ISA设备查找失败)时,程序可能覆盖有效指针为NULL,并在随后的日志输出中引用该空指针,导致系统崩溃。

技术细节

该漏洞发生在Linux内核的ACPI处理器驱动代码中。在函数`acpi_processor_errata_piix4`里,指针`dev`首先被赋值为通过`pci_get_subsys`查找到的IDE设备。随后,代码尝试查找另一个ISA设备,并将结果直接覆盖赋值给同一个指针`dev`。如果第一次查找成功但第二次查找失败,`dev`将被置为NULL。此时,如果条件判断`errata.piix4.bmisx`为真,代码将执行`dev_dbg(&dev->dev, ...)`。由于`dev`为NULL,对`dev->dev`的访问将触发空指针解引用异常,导致内核恐慌(Kernel Panic)或系统崩溃,造成拒绝服务。攻击者需要具备本地低权限即可触发该漏洞。

攻击链分析

STEP 1
步骤1:获取访问权限
攻击者获取目标Linux系统的本地低权限用户访问权限。
STEP 2
步骤2:触发代码路径
在系统启动或ACPI处理过程中,内核执行`acpi_processor_errata_piix4`函数。这通常发生在检测到特定Intel PIIX4芯片组时。
STEP 3
步骤3:利用逻辑缺陷
由于目标系统的硬件配置(存在IDE设备但ISA设备不存在),第二次`pci_get_subsys`调用返回NULL,覆盖了原本有效的指针。
STEP 4
步骤4:引发拒绝服务
程序执行到`dev_dbg`时对NULL指针进行解引用,触发内核异常,导致系统崩溃或重启。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * Conceptual Proof of Concept (PoC) for CVE-2026-43313 * This code demonstrates the logic flaw leading to NULL pointer dereference. * Compile as a kernel module to test on vulnerable hardware/kernel. */ #include <linux/module.h> #include <linux/kernel.h> #include <linux/pci.h> void simulate_vulnerable_path(void) { struct pci_dev *dev; bool bmisx = true; // Simulating the errata condition // Step 1: First assignment (IDE device) - Assume Success dev = pci_get_subsys(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB, PCI_ANY_ID, PCI_ANY_ID, NULL); if (dev) { printk(KERN_INFO "[PoC] Step 1: IDE device found at %p\n", dev); } // Step 2: Second assignment (ISA device) - Simulate Failure (returns NULL) // Vulnerability: The code overwrites 'dev' without checking if the new value is NULL dev = pci_get_subsys(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_0, PCI_ANY_ID, PCI_ANY_ID, NULL); printk(KERN_INFO "[PoC] Step 2: ISA device lookup returned %p\n", dev); // Step 3: Trigger the dereference if (bmisx) { // This line causes the crash if dev is NULL printk(KERN_INFO "[PoC] Attempting to access dev->dev...\n"); // dev_dbg(&dev->dev, "Triggering vulnerability"); // Original vulnerable call if (dev == NULL) { printk(KERN_ALERT "[PoC] NULL Pointer Dereference Imminent!\n"); // To actually crash, we would dereference dev here, e.g., dev->dev; } else { printk(KERN_INFO "[PoC] Safe, dev is not NULL.\n"); } } } int init_module(void) { printk(KERN_INFO "CVE-2026-43313 PoC Module Loaded\n"); // In a real scenario, this logic is called during ACPI init // simulate_vulnerable_path(); return 0; } void cleanup_module(void) { printk(KERN_INFO "CVE-2026-43313 PoC Module Unloaded\n"); } MODULE_LICENSE("GPL");

影响范围

Linux Kernel (修复前的特定版本)

防御指南

临时缓解措施
由于该漏洞利用需要特定的硬件环境且攻击向量为本地,普通用户受影响风险相对较低。建议管理员尽快应用官方发布的内核补丁以修复该空指针解引用问题。

参考链接

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