CVE-2026-43139Linux内核网络子系统中的xfrm6模块存在高危漏洞。在`xfrm6_get_saddr()`函数处理IPv6源地址获取时,未校验`ipv6_dev_get_saddr()`的返回值。当地址查找失败时,函数仍返回成功,导致调用方使用了未初始化的内存地址。这引发了KMSAN警告,并可能导致系统不稳定、崩溃或潜在的敏感信息泄露风险。
该漏洞位于Linux内核的IPv6协议栈实现中,具体涉及`net/ipv6/xfrm.c`文件的`xfrm6_get_saddr()`函数。该函数负责为IPsec转换选择合适的源IPv6地址。正常流程下,应调用`ipv6_dev_get_saddr()`获取地址,并检查其返回值(成功为0,失败为负数)。然而,在受影响版本中,代码直接使用了`saddr`指针指向的结果而未进行检查。当`ipv6_dev_get_saddr()`因配置错误或路由问题无法找到合适地址并返回`-EADDRNOTAVAIL`时,`saddr->in6`并未被赋值,处于未初始化状态。随后的调用链(如`xfrm_tmpl_resolve_one` -> `xfrm_state_find`)会读取该未初始化的内存区域。虽然这主要触发KMSAN(内核内存消毒剂)告警,但在实际运行中,使用垃圾数据作为网络地址可能导致路由逻辑混乱、内核崩溃(DoS),或在极少数情况下泄露内核堆栈信息。