CVE-2026-31682Linux内核bridge模块中的br_nd_send函数存在安全漏洞。该函数在解析邻居发现(ND)选项时,错误地假设选项数据位于skb的线性区域。实际上,调用者仅保证ICMPv6头部和目标地址是线性的,选项区域可能仍是非线性的。解析非线性选项会导致访问线性缓冲区边界之外的数据,造成内存越界访问风险。
漏洞根源在于Linux内核网络协议栈中br_nd_send()函数的实现逻辑。该函数负责从ns->opt[]数组中读取并解析邻居发现(ND)选项。在Linux内核网络子系统中,SKB(Socket Buffer)数据结构为了处理大数据包,允许数据分散存储在多个内存页中,即非线性区域。br_nd_send()函数的调用者仅确保了ICMPv6协议头部和目标地址字段位于SKB的线性数据区,并未对后续的ND选项进行线性化处理。因此,当ND选项数据位于非线性区域时,函数直接通过指针偏移访问ns->opt[]会导致越界读取线性缓冲区。攻击者可利用此缺陷读取内核敏感内存信息,或导致内核访问非法内存区域从而引发系统崩溃(拒绝服务)。