CVE-2023-53612CVE-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热插拔事件),即可触发空指针解引用导致系统崩溃或不可用。