CVE-2026-43101Linux内核中的IPv6 IOAM(带内OAM)模块存在一个空指针解引用漏洞。该漏洞位于`__ioam6_fill_trace_data`函数中,由于未对`__in6_dev_get()`的返回值进行NULL检查,以及使用了不当的设备获取函数,可能导致系统崩溃。攻击者无需认证即可通过网络利用此漏洞,造成拒绝服务攻击。该问题已在内核补丁中被修复,主要涉及增加必要的空值检查和使用RCU安全的设备访问函数。此漏洞影响Linux内核的IPv6数据包处理稳定性。
该漏洞源于Linux内核网络栈的IPv6 IOAM实现代码。在`net/ipv6/ioam6.c`文件的`__ioam6_fill_trace_data`函数中,逻辑假设`__in6_dev_get()`总是返回有效的指针。然而,在某些竞态条件或特定网络拓扑下,该函数可能返回NULL。当后续代码尝试解引用此指针时,会触发内核态的空指针解引用异常,导致内核崩溃(Kernel Panic)。此外,原始代码使用了`skb_dst_dev()`,该函数在RCU(Read-Copy-Update)上下文中可能不是安全的。修复补丁将其替换为`skb_dst_dev_rcu()`以确保在并发环境下的安全性。同时,补丁增加了`READ_ONCE()`宏来防止编译器优化导致的读取不一致问题。由于该漏洞位于IPv6协议处理路径中,且无需用户交互和认证,远程攻击者可以通过发送特制的IPv6数据包触发该漏洞,从而造成目标主机系统不可用。