CVE-2026-31524该漏洞存在于Linux内核的ASUS HID驱动中。`asus_report_fixup()`函数在处理特定报告描述符时,使用`kmemdup()`分配内存却未释放,导致持续内存泄漏。此外,补丁还修复了相关的越界读取风险。本地低权限用户可通过反复触发该机制导致系统内存耗尽,引发拒绝服务。
漏洞位于`drivers/hid/hid-asus.c`的`asus_report_fixup`函数中。该函数旨在修复或调整HID报告描述符,因此通过`kmemdup`分配了新的缓冲区并返回。然而,调用者并未接管该指针的所有权,且原代码缺乏释放逻辑,导致每次设备交互或报告处理都会泄漏内核内存。修复方案改用`devm_kzalloc`,将内存生命周期绑定到设备,确保设备移除时自动释放。同时,修正了`memcpy`操作的大小参数,防止读取超过原始描述符长度的数据(越界读)。攻击者利用此漏洞需具备本地低权限,通过反复触发设备报告处理,可耗尽系统内存,导致系统不稳定或崩溃。