CVE-2026-31624Linux Kernel HID核心组件存在安全漏洞。s32ton()函数在处理HID设备提供的report_size时,未对移位数值进行有效限制。当设备发送恶意构造的报告描述符时,会导致32位整数移位越界,引发未定义行为。该漏洞利用需要本地低权限用户接入恶意HID设备,成功利用可导致系统崩溃或拒绝服务。
该漏洞源于Linux Kernel HID子系统的s32ton()函数,该函数用于将32位有符号整数转换为HID报告字段,执行val << (n - 1)操作。虽然HID解析器限制report_size小于等于256,但未针对32位类型限制移位上限。攻击者可通过物理接入或模拟恶意HID设备,提供特制的报告描述符,使report_size达到256,导致移位操作超出32位寄存器范围(最大有效移位为31),触发内核未定义行为或Panic。此前snto32()已修复此问题,但s32ton()被遗漏。利用条件为本地低权限且无需用户交互。