CVE-2026-31745Linux内核中的reset/gpio组件存在双重释放漏洞。在reset_add_gpio_aux_device函数的错误处理路径中,当__auxiliary_device_add失败并调用auxiliary_device_uninit后,设备内存已被释放,但代码随后再次调用kfree导致内存被重复释放。本地攻击者可利用此漏洞造成系统崩溃或潜在权限提升。
该漏洞源于Linux内核drivers/reset/core.c中的reset_add_gpio_aux_device函数错误处理逻辑缺陷。正常流程下,auxiliary_device_init分配内存,__auxiliary_device_add注册设备。若注册失败,代码调用auxiliary_device_uninit,该函数最终触发reset_gpio_aux_device_release回调,执行kfree(adev)释放内存。然而,原代码在调用auxiliary_device_uninit后,未判断内存状态便再次执行kfree(adev)。这种Use-After-Free式的逻辑错误导致同一块内核内存被释放两次,破坏了内核堆结构,攻击者可利用此进行本地拒绝服务攻击或在特定条件下提权。