CVE-2026-43341Linux内核的net/ipv6模块中的ioam6驱动程序存在一个严重的缓冲区溢出漏洞。该漏洞是由于`ioam6_fill_trace_data`函数在处理schema长度时使用了`u8`类型变量导致的。当特定条件满足时,schema长度计算会发生整数回绕,从而绕过缓冲区剩余空间的检查。这导致后续的数据复制操作超出了预分配的trace buffer边界,覆盖了相邻内存区域。攻击者无需用户交互即可通过网络利用此漏洞,可能导致系统崩溃、拒绝服务或潜在的代码执行。
该漏洞的核心触发点位于Linux内核的IPv6 IOAM(In-band OAM)实现中。在`ioam6_fill_trace_data`函数内部,schema贡献的长度(`sclen`)被存储在一个8位无符号整数(`u8`)中。当攻击者构造特定的IOAM数据包,启用特定标志位(如bit 22)并设置较大的schema payload(例如1020字节)时,计算出的长度值(如256)会超过`u8`的最大值255,导致发生整数回绕变为0。这个错误的长度值导致系统误判缓冲区仍有剩余空间,从而绕过了安全检查。随后,在`__ioam6_fill_trace_data`函数中,虽然写入游标基于错误的长度(0)进行了定位,但实际执行的数据复制操作却复制了完整的4字节schema头和全部payload数据,导致向缓冲区尾部越界写入,引发严重的缓冲区溢出。