CVE-2025-71129CVE-2025-71129是Linux Kernel中一个影响LoongArch架构的中危漏洞。该漏洞存在于BPF(Berkeley Packet Filter)子系统的kfunc(内核函数调用)功能中。由于kfunc调用未正确遵循LoongArch调用约定,对传入的参数缺少必要的符号扩展处理,可能导致内核在处理这些参数时产生未定义行为。攻击者通过本地低权限账户构造恶意的BPF程序,触发kfunc调用时传入未正确符号扩展的参数,可引发内核崩溃(kernel panic),造成拒绝服务。此漏洞需要攻击者具有本地访问权限和低权限用户身份,无需用户交互即可实施攻击。
在Linux Kernel的LoongArch架构实现中,BPF子系统的kfunc调用机制存在缺陷。kfunc(kernel function)是BPF程序调用内核函数的接口,在LoongArch架构上,这些调用需要遵循特定的调用约定,包括对函数参数进行正确的符号扩展。
漏洞的核心问题在于:kfunc调用的参数在传递给内核函数前未经过符号扩展处理。当BPF程序调用kfunc时,如果参数值需要符号扩展(例如负数或高位需要扩展的值),LoongArch架构要求在寄存器或栈上对这些值进行正确的符号扩展。缺失符号扩展会导致:
1. 寄存器值包含错误的符号位
2. 内核函数接收到错误解析的参数值
3. 可能导致内存越界访问或指令流异常
4. 最终触发内核panic或系统崩溃
修复方案引入了emit_abi_ext()辅助函数,该函数专门用于在目标寄存器中直接执行符号扩展操作。这与现有的sign_extend()辅助函数不同,因为emit_abi_ext()是在值已经存储在目标寄存器后进行原地扩展,而非在值传递过程中进行扩展。