CVE-2026-31521Linux内核的模块加载器在处理ELF符号时存在漏洞。函数 `simplify_symbols` 未检查符号节区索引 `st_shndx` 的边界。当加载包含特殊索引(如SHN_XINDEX)或损坏ELF的模块时,可能触发越界访问,导致内核崩溃,从而引发拒绝服务攻击。该漏洞利用需要本地低权限用户加载恶意模块。
该漏洞位于Linux内核模块加载机制中,具体涉及 `simplify_symbols()` 函数。该函数在解析模块ELF符号表时,使用 `sym[i].st_shndx` 作为索引直接访问 `info->sechdrs` 数组以获取基地址。然而,代码未验证 `st_shndx` 是否在数组有效范围内。根据ELF规范,`st_shndx` 可能为 `SHN_XINDEX` (0xffff) 等特殊值,或者因工具链错误(如提及的 llvm-objcopy bug)而产生越界值。攻击者(本地用户)可以构造一个特制的内核模块(或利用工具链生成的损坏模块),其 `st_shndx` 字段设置为大整数(如0xffff)。当尝试加载该模块时,内核会访问无效内存地址 `info->sechdrs[0xffff]`,触发页错误,进而导致 `Kernel panic`,系统宕机。