CVE-2026-43129Linux内核在处理IMA测量列表恢复时存在漏洞。当通过kexec启动第二阶段内核并使用限制内存的命令行参数(如“mem=<size>”)时,前一个内核传递的IMA测量缓冲区可能位于新内核的可寻址RAM之外。由于缺乏对物理地址范围的验证,内核在尝试访问该缓冲区时会触发页错误,导致系统崩溃。该补丁引入了ima_validate_range()辅助函数来确保IMA缓冲区位于可寻址内存范围内,从而防止非法内存访问引发的拒绝服务。
该漏洞源于Linux内核在kexec启动过程中未能验证前一个内核传递的IMA缓冲区物理地址的有效性。在kexec机制中,系统需要将前一个内核的IMA测量日志传递给新内核以维护度量链。然而,如果新内核使用了`mem=`参数限制可用内存范围,而旧内核传递的IMA缓冲区地址落在这个范围之外,新内核在调用`ima_restore_measurement_list()`时会尝试访问无效的物理页面。漏洞代码直接使用了传递过来的缓冲区指针,而没有调用pfn_range_is_mapped()或page_is_ram()来确认地址范围的有效性。本地低权限攻击者可通过构造启动参数,诱使内核访问非法地址,触发页错误异常,导致内核Panic和系统拒绝服务。