CVE-2026-31671Linux内核的xfrm_user组件中存在一个信息泄露漏洞。问题出在build_report()函数,该函数在处理struct xfrm_user_report结构体时,未对结构体中包含的3字节填充区域进行清零操作,便直接将其复制到用户空间。这可能导致内核栈内存中的敏感信息泄露。本地低权限攻击者无需用户交互即可利用此漏洞读取部分内核内存数据。
该漏洞源于Linux内核网络子系统中的xfrm_user模块。在构建用户报告时,使用了`struct xfrm_userreport`结构体。该结构体包含一个`__u8 proto`字段和一个`struct xfrm_selector`字段。由于内存对齐原因,这两个字段之间存在3字节的填充空间。在原始代码中,开发者仅设置了`proto`和`selector`的成员变量,但未对整个结构体进行初始化(如使用memset清零)。当调用`copy_to_user`或类似函数将此结构体传回用户空间时,这3个字节包含的是之前栈上的残留数据。攻击者可以通过调用特定的netlink消息触发该路径,并读取返回的数据,从而泄露内核内存中的指针、标志或其他敏感信息。这种泄露虽然通常不直接导致代码执行,但可以作为绕过KASLR等内核防御机制的辅助手段。