CVE-2026-31770Linux内核中的hwmon (occ)驱动程序存在一个严重的除零错误漏洞。在`occ_show_power_1()`函数中,代码直接使用累加器除以`update_tag`且未进行非零检查。若在系统早期启动时传感器块尚未更新,`update_tag`将为零,导致内核崩溃。尽管2019年修复了类似路径,但此特定代码路径被遗漏,本地攻击者可利用此漏洞造成系统拒绝服务。
该漏洞根因位于Linux内核的`hwmon/occ`驱动程序源码中,具体函数为`occ_show_power_1()`。在该函数的switch语句case 1分支内,程序执行了累加器数值除以`update_tag`的操作以计算功率平均值。然而,开发人员遗漏了对除数`update_tag`是否为零的必要检查。在特定的硬件初始化阶段或系统早期引导过程中,如果传感器数据块虽然已初始化但尚未完成首次数据更新,`update_tag`的值将保持为0。此时,若用户空间进程尝试读取对应的sysfs节点,内核将执行除零指令,触发异常处理机制导致系统崩溃(Kernel Panic)。此漏洞属于逻辑缺陷,攻击者无需特殊权限即可在本地触发,严重影响系统可用性。修复方案通过复用已有的`occ_get_powr_avg()`辅助函数来解决该问题,该函数内部已包含零样本检测及高精度计算逻辑。